首页 > 编程语言 > 详细

python 爬虫由于网络或代理不能用导致的问题处理方法

时间:2020-05-18 20:30:45      阅读:77      评论:0      收藏:0      [点我收藏+]

平时在爬取某些网页的时候,可能是由于网络不好或者代理池中的代理不能用导致请求失败。此时有们需要重复多次去请求,python中有现成的,相应的包供我们使用:

  1. 我们可以利用retry模块进行多次请求,如果全部都失败才报错。当然使用retry库之前也需要先安装,eg:
import requests

from retrying import retry

# 这里的headers使用的是手机版的
m_headers = {
    "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
}

@ retry(stop_max_attempt_number = 10)  #让被装饰的函数反复执行10次,10次全部报错才会报错, 中间有一次正常就继续往下走
def parse_url1(url):
    response = requests.get(url, headers=m_headers, timeout=5)
    return response.content.decode()

# 真正的url请求函数
def parse_url(url):
    try:
        html_str = parse_url1(url)
    except:
        html_str = None
    return html_str

if __name__ == ‘__main__‘: 
    url = "http://www.baidu.com"
    print(parse_url(url))

python 爬虫由于网络或代理不能用导致的问题处理方法

原文:https://www.cnblogs.com/lpdeboke/p/12912269.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!