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)

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

    运行结果如下:

    图片

    作者:电商数据girl

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python爬虫实战案例:解析京东商品数据,深入爬取SKU价格详情

    发表回复