爬取一个网站,所需数据的页面是Post请求,且每次访问的携带参数都不一样,返回的数据是相同的。该如何处理?就比如携程上的酒店信息,每一个数据都是post,且每次访问参数不一样
这种情况下,多半是你触发了平台的反爬机制,解决办法只有换个IP试试,或者等待一段时间再尝试看看,注意请求频率不宜过快。
print(f'请求url:{response.request.url}')
print(f'请求方法:{response.request.method}')
print(f'请求Header:{response.request.headers}')
print(f'请求路径:{response.request.path_url}')
执行结果:
请求url:http://shop-xo.hctestedu.com/index.php?s=api/user/login&application=app&application_client_type=weixin
请求方法:POST
请求Header:{'User-Agent': 'python-requests/2.28.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Length': '69', 'Content-Type': 'application/json'}
请求路径:/index.php?s=api/user/login&application=app&application_client_type=weixin
你说的参数变化的多半是cookie的变化,可以先发起一次请求,把cookie获取到,然后用这个cookie再发起一次。
你要模拟登陆,然后才能post,你都没登陆,凭啥把数据给你看