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

ops/2025/1/17 18:30:29/

网址: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.ppmy.cn/ops/150885.html

相关文章

Vulnhub DC-8靶机攻击实战(一)

导语   Vulnhub DC-8靶机教程来了,好久没有更新打靶的教程了,这次我们在来更新一期关于Vulnhub DC-8的打靶训练,如下所示。 安装并且启动靶机 安装并且启动靶机,如下所示。 开始信息采集 进入到Kali中,通过如下的命令来查找到靶机的IP地址。 arp-scan -l根据上面的结…

【Web】Web API 简介

API API (application programming interface) 是一种软件接口&#xff0c;为调用方提供服务和功能&#xff0c;而调用方无需知道实现细节。 这是一个抽象概念&#xff0c;如果举例说明&#xff0c;那就是在餐厅拿菜单点餐&#xff0c;菜单就是餐厅给客户的 API&#xff0c;我…

C#局部函数 VS Lambda表达式

一、引言 在 C# 的编程世界里&#xff0c;我们常常会遇到各种实现功能的方式&#xff0c;其中 Lambda 表达式和局部函数都是非常强大的特性。Lambda 表达式自诞生以来&#xff0c;凭借其简洁的语法和强大的功能&#xff0c;深受广大开发者的喜爱&#xff0c;尤其是在处理集合操…

基于unity的多人家装应用的设计与实现

摘要 本课题根据主流家装应用存在的问题和结合了Unity3D引擎所具有的优势,在主流家装应用的基础上弥补了常见的缺憾,实现了一种新型的交互更强的家装展示系统。 本系统主要通过将家具模型资源和材质等资源导入Unity3D平台中,通过C#代码开发,搭建UGUI框架,实现室内漫游、家…

用 Python 从零开始创建神经网络(二十二):预测(Prediction)/推理(Inference)(完结)

预测&#xff08;Prediction&#xff09;/推理&#xff08;Inference&#xff09;&#xff08;完结&#xff09; 引言完整代码&#xff1a; 引言 虽然我们经常将大部分时间花在训练和测试模型上&#xff0c;但我们这样做的核心原因是希望有一个能够接受新输入并生成期望输出的…

中间件以及主流中间件产品:IBM MQSeries和BEA Tuxedo介绍

中间件简介 中间件(Middleware)是一类位于操作系统和应用程序之间的软件层,负责提供通用服务,简化分布式系统开发和集成。中间件的目标是屏蔽底层操作系统和网络的复杂性,为应用程序提供统一的接口和支持。 中间件的功能 消息传递:提供可靠的消息队列服务,支持异步通信…

如何选择合适的服务器?服务器租赁市场趋势分析

服务器租赁市场概览 服务器租赁 market可以分为两种类型&#xff1a;按小时、按月和按年&#xff0c;每种模式都有其特点和适用场景&#xff0c;按小时租赁是最经济实惠的选择&#xff0c;适用于短期需求&#xff1b;按月租赁则适合中长期使用&#xff1b;而按年租赁则是最灵活…

Python机器学习和深度学习在气象领域的应用;台风/风速预报订正、风功率预测、浅水方程预测、预测ENSO等

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…