具体来说,我试图抓取整个页面,但只得到其中的一部分。如果我使用:
r = requests.get('http://store.nike.com/us/en_us/pw/mens-shoes/7puZoi3?ipp=120')
它只获取页面的“可见”部分,因为当您向下滚动时会加载更多项目。
我知道 PyQT 有一些解决方案,例如this,但是有没有办法让 python 请求不断滚动到网页底部,直到所有项目加载?
您可以使用浏览器开发控制台(F12 - Chrome 中的网络)监视页面网络活动,以查看向下滚动时页面执行什么请求,使用该数据并使用以下命令重现请求requests
。作为替代方案,您可以使用selenium
以编程方式控制浏览器向下滚动直到页面结束,然后保存其 HTML。
我想我找到了正确的请求
Request URL:http://store.nike.com/html-services/gridwallData?country=US&lang_locale=en_US&gridwallPath=mens-shoes/7puZoi3&pn=3
Request Method:GET
Status Code:200 OK
Remote Address:87.245.221.98:80
请求标头
Provisional headers are shown
Accept:application/json, text/javascript, */*; q=0.01
Referer:http://store.nike.com/us/en_us/pw/mens-shoes/7puZoi3?ipp=120
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
X-NewRelic-ID:VQYGVF5SCBAJVlFaAQIH
X-Requested-With:XMLHttpRequest
似乎查询参数pn
表示当前的“子页面”。但您仍然需要正确理解响应。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)