python爬虫使用代理ip或请求头的问题

在request库中使用代理ip实例如下

headers = {
    'User-Agent':
    'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0',
    'Connection':
    'keep-alive',
    'Cookie':
    'session-id=130-1833310-5969908; session-id-time=2082787201l;',
    'referer':
    'https://www.amazon.com/s/ref=nb_sb_noss?field-keywords=%E7%94%B5%E8%84%91&ie=UTF8&language=zh_CN&url=search-alias%3Daps'
}

# 设置代理ip
proxies = {
    'http': 'http://110.52.235.150:9999',
    'https': 'https://58.137.62.133:80'
}
list_html = requests.get(
    'https://www.amazon.com/s/ref=nb_sb_noss?field-keywords=' + keywords +
    '&ie=UTF8&language=zh_CN&url=search-alias%3Daps',
    timeout=timeout,
    headers=headers,
    proxies=proxies,
)

可能会遇到的问题

一、 Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))

这种情况是爬取目标对本机进行反爬导致, 目前暂时考虑两种:

ip封锁导致:

解决的关键在于cookie携带还有ip更替, (cookie携带下, 对ip的封锁频率会降低)

请求头referer属性:

部分页面向下访问时会携带referer记录从哪个页面跳转, 有些反爬针对referer进行检测, 如果没有携带或者携带错误会大大增加封锁率

请求头用户代理:

二、Cannot connect to proxy.', NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x00000166942B8D30>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

这种情况是由于使用的代理ip失效而无法再连接的问题, 可以使用cmd安装tcping命令对ip + 端口进行有效性检查

三、'Connection to 121.61.3.9 timed out. (connect timeout=10)'))
这种情况是由于使用的代理ip连接失效或者连接过于久, 使得超过了程序设定的时间, 可以不设置request的timeout属性以达到最大时间看看是否代理ip失效问题。

猜你喜欢

转载自blog.csdn.net/weixin_33722405/article/details/87042411