Advertisement

Python爬取京东商品信息

阅读量:

该文本详细介绍了使用Python通过Selenium框架从京东网站爬取华为手机前十页商品信息的方法和步骤:
前期准备

  • 下载并安装谷歌浏览器的驱动程序(如Google ChromeDriver)。
  • 使用pip安装必要的第三方库:selenium、time 和 xlwt。
    开始编程
  • 打开京东网页并搜索“华为手机”。
  • 使用Selenium定位输入框输入关键词并执行搜索。
  • 通过xpath定位元素获取商品链接、名称、价格等信息。
    数据爬取与存储
  • 通过循环获取每个商品的具体信息并存储到列表中。
  • 使用Excel将爬取的数据写入表格并保存为文件。
    完成代码
  • 提供完整的代码示例供参考使用。
    摘要涵盖了整个爬虫过程的关键步骤和核心功能实现方法。

通过Python技术从京东平台获取华为品牌手机前十页的商品详细信息,包括每款商品的URL地址,商品名称,售价以及评分数量和评论数量,并记录下各商家的名称

1.前期准备
(1)下载驱动
我使用的是谷歌浏览器,所以要下载谷歌驱动,用来告诉电脑在哪打开浏览器。
驱动文件下载地址:http://chromedriver.storage.googleapis.com/index.html
(需要下载与自己的浏览器版本相一致或者相近版本的驱动,要记住驱动下载之后存放的位置)
(2)安装第三方库
selenium,time,xlwt都是爬虫需要用到的库

在这里插入图片描述

安装方法1:
在pycharm最下面有一行选项,如下图,选择Terminal

在这里插入图片描述

在完成选择后,在出现的页面中输入[pip]()并拼接"install +你要安装的库名称"进行操作后,请等待pip会自动处理并完成安装过程。例如要安装time库时

在这里插入图片描述

安装方法2:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在搜索栏中搜索你要安装的库,找到之后点击左下角的Install Package

在这里插入图片描述

之后等待安装,若成功会显示

在这里插入图片描述

2.开始编程
(1)在谷歌中打开京东

在这里插入图片描述

executable_path就是你下载的驱动的存放位置

(2)在京东中搜索“华为手机”

为了实现模拟用户在搜索栏中键入"华为手机"的功能,在网页开发中常用的方法是定位到输入框并获取其对应的XPath值。

访问京东网页时,请使用键盘组合Ctrl+Shift+l切换至源代码模式。该处显示一个指向当前滑动位置的箭头图标;你可以看到页面上的某个位置,在此位置上会出现高亮标记并显示对应的源代码内容;这表明此处对应的是源代码中的相应部分。

在这里插入图片描述

找到源代码后右击,再点Copy\Copy XPath就得到了输入框的xpath

在这里插入图片描述

编写代码之前,请先获取xpath地址。采用find_element_by_xpath方法来定位输入框位置,在输入框内输入“华为手机”,随后定位搜索按钮位置,并单击执行搜索操作。为了确保操作顺利进行,请注意以下事项:由于网络连接可能存在延迟导致网页加载时间较长,在等待页面完全加载完成后才继续下一步操作会更加稳妥。

在这里插入图片描述

(3)获取单个商品信息
进入到商品页面之后,我们先爬取第一个商品信息

同样可以应用 xpath 定位元素位置。但是这个时候最好避免采用上述方法获取 xpath。这样获取的 xpath 在定位过程中会逐层查找 html 结构。建议我们自行编写 xpath 以缩短定位所需的时间。

我们可以观察到,在下图所示的红色方框内存储着商品对应的价格信息。因此可以直接定位到相应的div单元格以提取价格信息

在这里插入图片描述

//表示跨级搜索,/表示逐级搜索

在这里插入图片描述

在确定价格信息位置后, 需要使用get_attribute(‘textContent’)方法来提取该位置中的文本内容

在这里插入图片描述

从单一商品的价格数据中提取后,
后续的信息同样可以通过类似的方式进行提取。
具体而言,
通过在每个页面中对所有商品逐一进行抓取,
并利用循环机制实现自动化处理;
对于多个页面的数据获取,
则需在此基础上进一步引入多层循环机制以确保全面覆盖;
通过列表存储的方式进行整合处理,
便于后续将其整理成表格形式以便分析使用。

在这里插入图片描述

(4)数据写入表格

在这里插入图片描述

3.完整代码

复制代码
    from selenium import webdriver
    from time import sleep
    import xlwt  # 进行excel操作
    #谷歌驱动 告诉电脑在哪打开浏览器
    driver=webdriver.Chrome(executable_path="D:/chromedriver.exe")
    #打开网页
    driver.get("https://www.jd.com")
    #通过xpath找到输入框输入要搜索的
    driver.find_element_by_xpath("//*[@id='key']").send_keys("华为手机")
    #通过xpath找到搜索按钮点击
    driver.find_element_by_xpath("//*[@id='search']/div/div[2]/button").click()
    driver.implicitly_wait(5)#隐式休息5s
    hrefs=[]
    names=[]
    prices=[]
    commits=[]
    shops=[]
    for j in range(1,11):
    for i in range(1, 31):
        href = driver.find_element_by_xpath(
            "//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-img']/a").get_attribute("href")#get_attribute获得对应属性的属性值
        information = driver.find_element_by_xpath(
            "//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-name p-name-type-2']")
        price = driver.find_element_by_xpath(
            "//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-price']")
        commit = driver.find_element_by_xpath(
            "//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-commit']/strong")
        shop = driver.find_element_by_xpath(
            "//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-shop']")
        hrefs.append(href)
        names.append(information.get_attribute("textContent").replace('\n', '').replace('\t', ''))
        prices.append(price.get_attribute("textContent").replace('\n', '').replace('\t', '').replace('¥',''))
        commits.append(commit.get_attribute("textContent").replace('\n', '').replace('\t', ''))
        shops.append(shop.get_attribute("textContent").replace('\n', '').replace('\t', ''))
    driver.find_element_by_xpath("//*[@id='J_bottomPage']/span[1]/a[9]").click()
    sleep(2)
    print("第"+str(j)+"页")
    print("爬取完毕!")
    #存数据
    book = xlwt.Workbook(encoding="utf-8", style_compression=0)  # 创建workbook对象
    sheet = book.add_sheet('京东', cell_overwrite_ok=True)  # 创建工作表
    col = ("链接","名称","价格","评价","商店")
    for i in range(0, 5):
    sheet.write(0, i, col[i])  # 列名
    for i in range(0,300):
    sheet.write(i+1,0,hrefs[i])
    for i in range(0,300):
    sheet.write(i+1,1,names[i])
    for i in range(0,300):
    sheet.write(i+1,2,prices[i])
    for i in range(0,300):
    sheet.write(i+1,3,commits[i])
    for i in range(0,300):
    sheet.write(i+1,4,shops[i])
    book.save("京东.xls")  # 保存
    print("关闭浏览器,保存数据")

4.输出结果

在这里插入图片描述
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~