【Python爬虫】基于selenium库爬取京东商品数据——以“七夕”为例

这篇具有很好参考价值的文章主要介绍了【Python爬虫】基于selenium库爬取京东商品数据——以“七夕”为例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小白学爬虫,费了一番功夫终于成功了哈哈!本文将结合本人踩雷经历,分享给各位学友~

一、导包

import time
import csv
from selenium import webdriver

二、创建csv文件

用写入方式打开名为data的csv文件,并确定将要提取的五项数据。

f = open('data.csv',mode = 'w',encoding ='utf-8',newline = '')
#将表头信息写入文件
csv_writer = csv.DictWriter(f,fieldnames = ['标题','价格','评论','店名','详情页'])
csv_writer.writeheader()

三、搜索商品页并加载数据

#实例化浏览器对象
driver = webdriver.Edge('C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\msedgedriver.exe')
#访问京东网址
driver.get('https://www.jd.com/')
#定位搜索框,并输入查找内容‘七夕’
driver.find_element_by_id('key').send_keys('七夕')
#点击搜索按钮
driver.find_element_by_class_name('button').click()
#等待界面数据加载
driver.implicitly_wait(10)

#有些网页是鼠标一边下移一边加载,该函数使页面数据全部加载
def drop_down():
    for x in range(1,12,2):
        time.sleep(1)
        j = x / 9
        # document.documetnElement,scrollTop 指定滚动条的位置
        # document.documentElement.scrollHeight 获取浏览器页面的最大高度
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)

上面第一行代码值得一提,driver =  webdriver.Edge()括号内为Edge浏览器驱动程序地址,需要在Edge浏览器设置中查找Edge浏览器版本,并下载对应版本的驱动程序,具体操作如下:

1.在设置中找到Edge浏览器对应版本

python 京东爬取,python,selenium,开发语言,爬虫

2.下载驱动程序

驱动路径来源(读者需自行替换):

Step1:根据官网提供网址 Microsoft Edge WebDriver - Microsoft Edge Developer

找到和自己Edge浏览器版本一致的驱动程序。这里等待时间稍微有点长,请耐心等待。

Step2:将安装包解压到不包含中文的路径下,获得msedgedriver.exe文件

Step3:将完整路径填入到driver = webdriver.Edge()括号内,注意路径需包含\msedgedriver.exe

第三行代码定位搜索框的流程也介绍一下:

首先,打开京东,在空白处右击,单击“检查”,弹出框图如下

python 京东爬取,python,selenium,开发语言,爬虫

 单击弹出框框左上角的标识,并将鼠标放在搜索框中,再单击一下固定位置,找到对应代码。

python 京东爬取,python,selenium,开发语言,爬虫

 找到其中的id为‘key’,可根据该项特征定位搜索框。第四行代码定位搜索按钮采取相同方式定位,不同的是搜索按钮根据类名定位,找到class = “……”中的内容即可。

 

四、获取多页数据并逐行写入csv文件

#提取第1~7页的内容
for page in range(1,7):
    #调用函数
    drop_down()
    #获取所有商品对应标签(列表),注意此处是elements而不是element
    lis = driver.find_elements_by_css_selector('.gl-item')
    #print(lis)
    #将列表元素一个个拿出来
    for li in lis:
        title = li.find_element_by_css_selector('.p-name em').text.replace('\n','')
        price = li.find_element_by_css_selector('.p-price strong i').text
        comment = li.find_element_by_css_selector('.p-commit strong').text
        shop = li.find_element_by_css_selector('.p-shop span a').text
        link = li.find_element_by_css_selector('.p-img a').get_attribute('href')
            
        dit = {
               '标题':title,
               '价格':price,
               '评论':comment,
               '店名':shop,
               '详情页':link
              }
        #写入csv
        csv_writer.writerow(dit)
        #及时刷新缓冲区
        f.flush()
        print(dit)
    #点击下一页按钮    
    driver.find_element_by_class_name('pn-next').click()

发现出现了find_element_by_css_selector('……'),那省略号的内容又该在哪儿找呢?我们以代码lis = driver.find_elements_by_css_selector('.gl-item')为例说明一下。

在首页搜索“七夕”,得到商品页。

python 京东爬取,python,selenium,开发语言,爬虫

同样右击,单击“检查”,单击弹出框左上角标识,把鼠标移动到商品上(要全部框选),单击一下固定代码位置 ,再查看右侧框中选项。

python 京东爬取,python,selenium,开发语言,爬虫

 虽然含有 .goods-list-v2 和 .gl-item 两项,然而,.gl-item足以标记所有商品,故省略号仅填.gl-item即可。

五、代码汇总

import time
import csv
from selenium import webdriver


f = open('data.csv',mode = 'w',encoding ='utf-8',newline = '')
#将表头信息写入文件
csv_writer = csv.DictWriter(f,fieldnames = ['标题','价格','评论','店名','详情页'])
csv_writer.writeheader()

#实例化浏览器对象(第一句需要修改,具体方法见上文)
driver = webdriver.Edge('C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\msedgedriver.exe')
#访问京东网址
driver.get('https://www.jd.com/')
#定位搜索框,并输入查找内容‘七夕’
driver.find_element_by_id('key').send_keys('七夕')
#点击搜索按钮
driver.find_element_by_class_name('button').click()
#等待界面数据加载
driver.implicitly_wait(10)

#有些网页是鼠标一边下移一边加载,该函数使页面数据全部加载
def drop_down():
    for x in range(1,12,2):
        time.sleep(1)
        j = x / 9
        # document.documetnElement,scrollTop 指定滚动条的位置
        # document.documentElement.scrollHeight 获取浏览器页面的最大高度
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)

#提取第1~7页的内容
for page in range(1,7):
    #调用函数
    drop_down()
    #获取所有商品对应标签(列表),注意此处是elements而不是element
    lis = driver.find_elements_by_css_selector('.gl-item')
    #print(lis)
    #将列表元素一个个拿出来
    for li in lis:
        title = li.find_element_by_css_selector('.p-name em').text.replace('\n','')
        price = li.find_element_by_css_selector('.p-price strong i').text
        comment = li.find_element_by_css_selector('.p-commit strong').text
        shop = li.find_element_by_css_selector('.p-shop span a').text
        link = li.find_element_by_css_selector('.p-img a').get_attribute('href')
            
        dit = {
               '标题':title,
               '价格':price,
               '评论':comment,
               '店名':shop,
               '详情页':link
              }
        #写入csv
        csv_writer.writerow(dit)
        #及时刷新缓冲区
        f.flush()
        print(dit)
    #点击下一页按钮    
    driver.find_element_by_class_name('pn-next').click()

 感谢读者大大读到此处~学习辛苦啦!文章来源地址https://www.toymoban.com/news/detail-736529.html

到了这里,关于【Python爬虫】基于selenium库爬取京东商品数据——以“七夕”为例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫实战:selenium爬取电商平台商品数据(1)

    def index_page(page): “”\\\" 抓取索引页 :param page: 页码 “”\\\" print(‘正在爬取第’, str(page), ‘页数据’) try: url = ‘https://search.jd.com/Search?keyword=iPhoneev=exbrand_Apple’ driver.get(url) if page 1: input = driver.find_element_by_xpath(‘//*[@id=“J_bottomPage”]/span[2]/input’) button = driver.find_element_by_xpath(‘

    2024年04月28日
    浏览(23)
  • Selenium介绍--实例爬取京东商品信息与图片

    目录 一、Selenium简介 二、Selenium组成 三、Selenium特点 四、Selenium的基本使用 1.下载所用浏览器需要的驱动 2.创建项目并导入依赖 3.入门 3.代码演示 五、实例爬取京东商品信息与图片 _ 5.1 执行效果 操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chr

    2023年04月08日
    浏览(21)
  • Python爬取商品评价-京东

    1.数据采集逻辑 在进行数据采集之前,明确哪些数据为所需,制定数据Schema为爬取工作做出要求,并根据数据Schema制定出有针对性的爬取方案和采集逻辑。 2.数据Schema 3.数据爬取 抓取平台任一商品的评论信息,此案例抓取的商品是某一店铺的车厘子评价信息。 评论信息是由

    2024年02月11日
    浏览(19)
  • 当我用Python爬取了京东商品所有评论后发现....

    不知道各位网购的时候,是否会去留意商品评价,有些小伙伴是很在意评价的,看到差评就不想买了,而有些小伙伴则是会对差评进行理性分析,而还有一类人不在乎这个。 当然这都是题外话,咱们今天主要的目的是使用Python来爬取某东商品的评价,并保存到CSV表格。 在进

    2024年02月11日
    浏览(21)
  • Python爬虫|使用Selenium轻松爬取网页数据

    1. 什么是selenium? Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作浏览器一样。支持的浏览器包括IE,Firefox,Safari,Chrome等。 Selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用

    2024年02月04日
    浏览(29)
  • Python爬虫实战——Lazada商品数据(selenium自动化爬虫,xpath定位)

            在此说明,这个项目是我第一次真正去爬的一个网站,里面写的代码我自己都看不下去,但是已经不想花时间去重构了,所以看个乐呵就好,要喷也可以(下手轻一点)。这篇文算是记录我的学习中出现的一些问题,不建议拿来学习和真拿我的代码去爬Lazada的数据,

    2024年02月02日
    浏览(32)
  • 【python爬虫】闲鱼爬虫,可以爬取商品

    目录 前言 一、介绍 二、爬虫流程 1. 确定并构造URL 2. 发送网络请求 3. 解析HTML并提取数据 4. 保存数据 三、使用代理IP 四、完整代码 五、总结 前言 闲鱼是一个很受欢迎的二手交易平台,但是由于没有开放API,我们需要使用爬虫来获取数据。本文将介绍如何使用Python爬

    2024年02月08日
    浏览(27)
  • Python爬虫入门:使用selenium库,webdriver库模拟浏览器爬虫,模拟用户爬虫,爬取网站内文章数据,循环爬取网站全部数据。

    *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径。 目录 准备工具: 思路: 具体操作: 调用需要的库: 启动浏览器驱动: 代码主体:  完整代码(解析注释): Python环境; 安装selenium库; Python编辑器; 待爬取的网站; 安装好的浏览器; 与浏览器版本相对应的

    2023年04月24日
    浏览(22)
  • Java网络爬虫——jsoup快速上手,爬取京东数据。同时解决‘京东安全’防爬问题

    网络爬虫,就是在 浏览器上,代替人类爬取数据 ,Java网络爬虫就是通过Java编写爬虫代码,代替人类从网络上爬取信息数据。程序员通过设定既定的规则,让程序代替我们从网络上获取海量我们需要的数据,比如图片,企业信息等。 爬虫的关键是对于网页信息的解析。 什么

    2024年02月10日
    浏览(22)
  • 爬虫案例—京东数据爬取、数据处理及数据可视化(效果+代码)

            使用PyCharm(引用requests库、lxml库、json库、time库、openpyxl库和pymysql库)爬取京东网页相关数据(品牌、标题、价格、店铺等) 数据展示(片段):         京东网页有反爬措施,需要自己在网页登录后,获取cookie,加到请求的header中(必要时引入time库,设置爬取

    2024年02月09日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包