当前位置: 首页 > article >正文

爬虫案例:python爬取京东商品数据||京东商品详情SKU价格

网址:https://www.jd.com/

基于当下的淘宝网站反扒机制太严格,即使通过模拟浏览来获取,依旧比较难,因此选择京东这个平台来练习一下通过模拟浏览器来进行数据获取。

1、爬取思路

(1)本次爬取的内容为京东商城(https://www.jd.com/)上手机商品信息,如下图:

图片

(2)本次是模拟浏览器的搜索操作,获取相应的网页,并不是请求网页,因此需要找到搜索位置,填写搜索商品名称进行搜索,“检查”搜索框元素,如下图:

图片

发现这个搜索框的id=key,因此,先清理元素默认的搜索产品,然后填写搜索商品手机,模拟相关动作的代码如下:

from selenium import webdriverdriver.find_element_by_id('key').clear()driver.find_element_by_id('key').send_keys('手机')

然后,还需要点击搜索,具体的位置如下:

图片

找到按钮的属性后,可以使用如下代码模拟按钮动作,才能打开手机的搜索页面,代码如下:

driver.find_element_by_class_name('button').click()

(3)过去都是通过观察不同页面的URL规律,来构造URL。但是模拟浏览器就不一样的, 可以看到页面底部有翻页按钮,需要做的是找到按钮路径处,然后模拟翻页动作,找到新页面的URL。

图片

选中开发者模式里面的红框,右键选择copy->copy Xpath,可以找到翻页的路径,可以通过如下代码模拟点击:

driver.find_element_by_xpath('//*[@id="J_bottomPage"]').click()

(4)本次简单爬取一下手机的价格和店铺名称来模拟浏览器数据获取,商品的其它信息有兴趣的同学可以根据自己需要自行补充。

图片

备注:针对要爬取商品名称的,建议获取有效的商品链接,进入详情页面,可以根据需要获取更多的商品基础信息。

2、爬取代码

from selenium import webdriverfrom lxml import etreeimport timedriver=webdriver.Chrome()driver.maximize_window()def get_info(url,page):   page = page + 1   driver.get(url)   driver.implicitly_wait(10)   selector=etree.HTML(driver.page_source)   infos = selector.xpath('//*[@id="J_goodsList"]/ul')   for info in infos:       price = info.xpath('li/div/div[3]/strong/i/text()')       print(price)       shop = info.xpath('li/div/div[7]/span/a/text()')       print(shop)   if page <= 5:       NextPage(url, page)   else:       pass   def NextPage(url, page):   driver.get(url)   driver.implicitly_wait(10)   driver.find_element_by_xpath('//*[@id="J_bottomPage"]').click()   time.sleep(10)   driver.get(driver.current_url)   driver.implicitly_wait(10)   get_info(driver.current_url, page)
if __name__=='__main__':   page=1   url='https://www.jd.com/'   driver.get(url)   driver.implicitly_wait(10)   driver.find_element_by_id('key').clear()   driver.find_element_by_id('key').send_keys('手机')   driver.find_element_by_class_name('button').click()   time.sleep(3)   get_info(driver.current_url, page)

备注:很多时候经常会遇到报错是浏览器的驱动和现有的浏览器不对应,因此需要去下载相对应的驱动后才能正常模拟浏览器进行数据获取。

运行结果如下:

图片


http://www.kler.cn/a/504935.html

相关文章:

  • 音频语言模型与多模态体系结构
  • uni-app的学习
  • Flutter:封装ActionSheet 操作菜单
  • MYSQL学习笔记(二):SELECT基本查询
  • Unity3D实现WEBGL打开Window文件对话框打开/上传文件
  • Vue2+OpenLayers给标点Feature添加信息窗体(提供Gitee源码)
  • OpenSeaOtter使用手册-项目简介
  • # MyBatis 基础了解
  • camera 配置预览和拍照streams上报的可用尺寸列表
  • DevOps实用场景:在哪些业务中应用DevOps最有效
  • selenium操作指南,2万字总结
  • 【力扣Hot100】双指针
  • Linux磁盘存储与内存管理命令
  • 【C++学习篇】红黑树 从入门到进阶
  • Vue 开发者的 React 实战指南:表单处理篇
  • 微信小程序:跨页面数据修改全攻略
  • Web前端------HTML块级和行内标签之行内标签
  • Inxpect毫米波安全雷达:精准检测与动态保护,工业自动化可靠选择
  • 求 n 个数的最小公倍数(详解版)
  • Go语言编译的exe文件占用内存过大解决办法
  • HTTP中form-data、x-www-form-urlencoded、raw、binary的区别
  • L4-Prompt-Delta
  • 【零基础入门unity游戏开发——unity3D篇】URP 3D光源组件(Light)介绍、烘培灯光、实现太阳耀斑镜头光晕效果(基于unity6开发介绍)
  • 高等数学学习笔记 ☞ 不定积分与积分公式
  • JavaScript this、回调函数、事件流
  • 电脑电源灯一闪一闪开不了机 原因分析