爬虫案例:python爬取京东商品数据||京东商品详情SKU价格
发布时间
阅读量:
阅读量

考虑到当前的淘宝网站防采集设置过于严格,在实际操作中依然存在诸多困难;因此,在京东平台上进行模拟浏览器的数据抓取练习是一个不错的选择。
1、爬取思路
(1)本次爬取的内容为京东商城(https://www.jd.com/)上手机商品信息,如下图:

检查

注意到该搜索框的ID字段为key。
进而首先需要清除元素默认设置下的搜索产品。
随后需将搜索功能应用于手机端模拟相应的操作步骤。
代码如下:
from selenium import webdriverdriver.find_element_by_id('key').clear()driver.find_element_by_id('key').send_keys('手机')
然后,还需要点击搜索,具体的位置如下:

识别按钮属性后,请编写以下代码 snippet 以便模拟按钮点击行为
driver.find_element_by_class_name('button').click()
(3)过去都是基于对不同页面URL规律的分析与研究来构造URL。然而,在模拟浏览器的行为中存在显著差异。通常位于网页内容区底部中部位置是翻页按钮。因此,在实际操作中应当找出其路径位置后,并以此为基础进行相应的翻页操作。

在开发者模式中的红色方框处进行选中操作,在右键点击后选择复制Xpath路径选项,在此操作下系统会自动定位到翻页操作的路径位置,并且可以通过以下代码片段实现对该功能的具体模拟操作:
driver.find_element_by_xpath('//*[@id="J_bottomPage"]').click()
本次将对手机价格及店铺名称进行初步提取,并用于模拟浏览器的数据获取过程;在此份中还包含的商品相关信息有这方面兴趣的用户可以根据自己的需求进行补充。

为了获取商品名称,请获取有效的商品链接,并访问其详情页面;以便进一步了解相关商品的信息。
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)
备注:通常情况下,在使用网络爬虫时会经常遇到类似的问题,并且必须先下载与当前系统兼容的浏览器驱动程序才能实现这一目标。
运行结果如下:

全部评论 (0)
还没有任何评论哟~
