我的网络抓取程序中包含以下代码:
postbody = {'Submit': {}, 'czas_kon2': '', 'czas_pocz2': '', 'num_pacz': '', 'typ': 'wsz'}
post = requests.post(spolka, data=postbody)
data = post.text
我正在循环执行400多个网页,以使用多处理(8个进程)抓取数据。
data
应该包含整个html页面,以进行进一步的xml处理。
但是在400页中,我得到2页,但没有返回有意义的内容。我怀疑这是因为我造成了沉重的负担。我尝试过time.sleep(1), time.sleep(10)
,但这里没有运气。
如何确保data
或post
变量始终包含整个页面,例如398个工作页面?
我尝试了一个简单的while循环重试...但是在一次额外的尝试之后,它还远非完美(我能够从剩余的2页中获得1个)。
while len(data) < 1024:
postbody = {'Submit': {}, 'czas_kon2': '', 'czas_pocz2': '', 'num_pacz': '', 'typ': 'wsz'}
post = requests.post(spolka, data=postbody)
data = post.text
答案 0 :(得分:0)
我认为您应该添加一个请求标头。
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'}
postbody = {'Submit': {}, 'czas_kon2': '', 'czas_pocz2': '', 'num_pacz': '', 'typ': 'wsz'}
post = requests.post(spolka, data=postbody, headers=headers)
更多标题示例:
headers = {
'Accept': 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Host': 'www.google.com',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'X-Requested-With': 'XMLHttpRequest',
'Cookies': '',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0'
}