python-3.x - 请求后重试机制问题
问题描述
我的网络爬虫中有以下代码:
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
orpost
变量始终包含整个页面,例如 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
解决方案
我认为您应该添加一个请求标头。
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'
}
推荐阅读
- html - 网格内另一个 div 内的 div 的响应性
- rust - 如何将特征绑定到使用 document.create_element 构建的元素
- powerbi - Smartsheet 中的实时更新能否反映在 Power BI 服务报告中?
- docker - 如何为“RUN”命令填充交互式命令的用户输入?
- python - Django 管理员的`add_form` 没有在管理员中显示`CustomUserCreationForm`
- python-3.x - 从用户获取值后如何销毁条目小部件
- wordpress - 联系表 7:范围内没有 p 元素,但看到了 ap 结束标签
- python-3.6 - 反转除标点符号之外的每个单词而不改变它们的位置 - Python3
- user-interface - 如何在 ListView 中调用网络图像类型?
- c# - 定义一个自定义 Attribute 类以使属性在某些条件下可浏览