selenium爬取京东商品信息

2023-11-06

开始编写代码之前你应了解ajax 和python基础语法和库,知道异步加载!熟悉html,js。本人ide用的是vscode,浏览器是chrome,python3.7,主要用到了selenium自动化测试工具。

 

一:先看效果:(这里以“手机”为例,为了简单起见,也为了提高运行速度就不加载照片了,只爬取商品描述信息,而且不加载照片)

 

……海量的数据,未完……

二:引用的库

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from pyquery import PyQuery as pq

完整代码如下:
 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from pyquery import PyQuery as pq
from bs4 import BeautifulSoup
import time
url = "https://www.jd.com"
# 生成对象
driver = webdriver.Chrome()
options =  webdriver.ChromeOptions()
options.add_experimental_option('prefs', {'profile.managed_default_content_settings.images': 2})
def splider():
    """入口"""
    # 请求主页
    driver.get(url)
    keys = '手机'
    driver.find_element_by_id("key").send_keys(keys)
    driver.find_element_by_id("key").send_keys(Keys.ENTER)
    WebDriverWait(driver, 1000).until(
        EC.presence_of_all_elements_located(
            (By.CLASS_NAME, 'gl-item')
        )
    )
    # 先获取一个有多少页
    all_page = eval(driver.find_element_by_css_selector('span.p-skip em b').text)
    # 设置一个计数器(记录当前页数))
    count = 0
    # 无限循环
    while True:
        try:
            count+=1
            # 等待
            WebDriverWait(driver, 1000).until(
                EC.presence_of_all_elements_located(
                    (By.CLASS_NAME, 'gl-item')
                )
            )
            #   等待
            time.sleep(2)
            #   模拟滚动条下滑
            start = 10
            js = "window.scrollTo(0,{num})"
            while start < 20000:
                try:
                    # print(start)
                    driver.execute_script(js.format(num = str(start)))
                    start += 100
                except Exception as e:
                    break
                #
            html = driver.page_source
            # print(html)
            doc = pq(html)
            #print(type(doc))
            #获取dom
            items_ = doc('.gl-item a em').items()
            for i in items_:
                # regx = '<em>(.*?)<font class="skcolor_ljg">(.*?)<font class="skcolor_ljg">(.*?)</font>(.*?)</em>'
                print(i.text())
        except Exception as e:
            continue
           # 如果count==all_page就退出循环
        if count == all_page:
            break
        # 找到下一页的元素pn-next
        fp_next = driver.find_element_by_css_selector('a.pn-next')
        # 点击下一页
        fp_next.click()
def main():
    splider()
            

if __name__ == '__main__':
    try:
        main()
    except Exception as e:
        print("入口异常{error}".format(error = str(e)))

 

 三:总结

后续会有分析数据处理数据的(统计图,词云 ),敬请期待哦!!

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

selenium爬取京东商品信息 的相关文章

随机推荐

  • 集成学习思想

    一 集成学习 Ensemble Learning 集成学习的思想是将若干个学习器 分类器 回归器 组合之后产生一个新的学习器 集成学习的主要思想 1 Bagging 代表算法是随机森林 Random Forest 2 Boosting 代表
  • springboot 2.x 集成 drools 7.x

    简介 springboot 2 0 4 RELEASE 集成 drools 7 11 0 Final 1 项目结构 2 pom xml文件
  • 51单片机指令系统详解

    指令系统 微型机的功能是由指令系统体现的 所以 寻址方式和指令系统是衡量微型机的重要指标 MSC 51的指令系统一共有111条指令 包括单字节49条 双字节46条和三字节16条 按周期分 有单周期 双周期和三周期指令 在晶振频率为12MHZ
  • 【问题记录系列】java.lang.IndexOutBoundsException:Index: 1,Size:1

    java lang IndexOutBoundsException 1 问题背景 2 问题展示 图片 拍摄图 3 问题解决 图片 debug图一 debug图二 4 解决后的效果 1 问题背景 昨天写好的重置密码的接口 与前端联调的过程中
  • Python opencv 机器学习 7. KMeans k值聚类 两个特征

    import cv2 import numpy as np from matplotlib import pyplot as plt 只有一个特征 只由人们的身高决定T恤大小 x np random randint 25 50 25 2 生
  • No module named ‘chinesecalendar‘

    在学习python的时候又遇见了这个问题 我cmd里面执行 pip install chinesecalendar 命令 执行结果出现successfully说明安装成功了 然后我又在 jupyter里进行 pip install chin
  • 实践:SSDEEP相似度比较

    2020 06 03 其实一开始的时候 我是想看看 他们都是使用什么特征来进行比较 今天下午就想找一些相关的相似度比较的文章 看看有没有相关的实践 然后发现谷歌出来的大量结果都是论文 我是想找一些实际的代码 不过 通过调整关键词到mediu
  • ARM编译器常用的预定义宏

    ARM编译器预定义了许多宏 这些宏提供有关工具链版本号和编译器选项的信息 编译器版本 宏为 ARMCC VERSION 数字形式呈现 使用方法如下 rt kprintf Compiler Version u r n ARMCC VERSIO
  • kudu集群Tablet Server异常:Check failed: _s.ok() Bad status: Service unavailable: Cannot initialize clock

    背景 CDH 6 3 1集群上kudu实例Tablet Server异常无法启动 根据报错信息提示时钟同步问题无法启动Check failed s ok Bad status Service unavailable Cannot initi
  • 串口模拟器VSPD(附VSPD安装包)

    串口通讯想必做硬件开发和软件的人来说都相当了解 以前的电脑 基本标配都包含一个串口 但现在的电脑 基本都没有配置串口了 如果要使用串口的功能 基本就要用一个USB转串口的硬件模块 虚拟串口 虚拟 COM 端口 应该很多人都知道 也就是一种模
  • 设计模式_19 状态模式(含 UML图 和 C++代码)

    设计模式 19 状态模式 19 状态模式 19 1 概念 19 2 结构 19 3 实现 19 3 1 UML图 19 3 2 代码 19 3 3 测试结果 19 4 优缺点 19 4 1 优点 19 4 2 缺点 19 5 使用场景 re
  • Mapper文件注入问题

    Mapper文件注入问题 UserMapper that could not be found 原因分析 解决方案 程序正常运行 但是注入类爆红问题 原因分析 解决方法 UserMapper that could not be found
  • Redirecting functions in shared ELF libraries

    Redirecting functions in shared ELF libraries By Apriorit Inc Anthony Shoumikhin 2 Apr 2010 4 83 13 votes Download elf h
  • 电感的两种模式——DCM和CCM的区别

    DCM断续模式 电流从零开始上升的三角波 CCM连续模式 电流从某一非零值上升的侧梯形波 波形不同 在变压器的初级电流 CCM模式波形为梯形波 而DCM模式为三角波 在变压器的次级整流管波形上 CCM同样为梯形 而DCM模式还是三角波 本质
  • JDK安装以及环境变量配置(操作步骤)

    JDK安装以及环境变量配置 操作步骤 安装包 一 环境准备 Windows10 jdk1 8 0 131 二 下载并安装JDK 安装包下载 三 环境变量配置 1 右键桌面上 我的电脑 gt gt 属性 在弹出的页面上点击 高级系统设置 2
  • C++无穷的表示

    在C 中 有时候会遇到无穷的情形 如何表示无穷 首先 C 每种数据类型都有固定的位数 从而可以用数值位全1来表示最大数据 C 本身也定义了一些这样的常量来供使用 如最大无符号整型数据是UCHAR MAX 十进制数为255 1十六进制数为0x
  • (PPO)近端策略优化学习记录

    PPO 近端策略优化学习记录 proximal policy optimization PPO 是策略梯度方法家族的一员 在PPO被提出来之前 它的哥哥 trust region policy optimization TRPO先被提出 在
  • python学习笔记(二)

    字符串格式化方式 二 Python除了 占位符的方法外 还有另一种高效的格式化语法 具体例子如下 有种JS模板字符串的感觉 通过语法 f 内容 变量 的格式来快速格式化 f的含义是format格式化 ee my name 66kk 3 14
  • Spring框架自学之路——简易入门

    目录 目录 介绍 Spring中的IoC操作 IoC入门案例 Spring的bean管理 配置文件 Bean实例化的方式 Bean标签的常用属性 属性注入 使用有参构造函数注入属性 使用set方法注入属性 注入对象类型属性 p名称空间注入属
  • selenium爬取京东商品信息

    开始编写代码之前你应了解ajax 和python基础语法和库 知道异步加载 熟悉html js 本人ide用的是vscode 浏览器是chrome python3 7 主要用到了selenium自动化测试工具 一 先看效果 这里以 手机 为