京东商品列表反爬解析+下拉url接口构造(反爬虫)

本文介绍了如何通过分析京东网站的Ajax加载机制来高效地爬取商品列表信息,避免使用Selenium,采用requests或Scrapy即可实现快速爬取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于京东运用ajax加载页面,正常的爬取页面不能获得全部页面内容,之前做过用Scrapy + Selenium实现京东商品列表摘要信息的爬取,今天又研究了一下其下拉后接口url的构造,终于发现了其中的奥秘!

先用谷歌浏览器请求网页:https://search.jd.com/Search?keyword=手机&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=手机&psort=4&page=7&s=181&click=0
在这里插入图片描述
正常的爬取网页解析后只会显示30条商品:
在这里插入图片描述
而将滚动条滚动到最下面时,又会以ajax的形式加载出另外30条,通过Fildder抓包可以看到当额外的30条加载出来时,截获了一个包:
在这里插入图片描述
可以看到这个包的全部url为:
https://search.jd.com/s_new.php?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%89%8B%E6%9C%BA&psort=4&page=8&s=211&scrolling=y&log_id=1537268972.31844&tpl=3_M&show_items=4289116,7534113,5283377,5107323,1111667716,10355532039,10404009356,28287095109,5005703,17701606448,10119532340,11605719685,3984684,4560455,3499302,3829099,11960714890,1022456996,11789883614,6513853,7419252,2962435,6610392,20278459455,13518912064,10889864874,6994622,3604173,6009096,6577511

经过分析可以发现:第二次截获的ur有三处需要构造
在这里插入图片描述

经分析发现:

  1. 第一处不同为log_id其值应该是时间戳去掉最后两位即time.time()[:-2]
  2. 第二处为page是第一个页面请求的page+1
  3. 第三处为最后的一串数字的组成,查看前面第一张图中的data-pid标签发现,正是这前30个data-pid构成。

这样就大工告成了,就不需要用Selenium爬取了,可以用requests或者scrapy快速请求啦。

之前用Scray写过爬取的代码,这里就不放了,有需要的可以去github翻,希望能帮到大家!

GitHub地址:https://github.com/wangyeqiang/Crawl

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值