我有一个类似这样的代理列表,我想用python进行抓取:
proxies_ls = [ '149.56.89.166:3128',
'194.44.176.116:8080',
'14.203.99.67:8080',
'185.87.65.204:63909',
'103.206.161.234:63909',
'110.78.177.100:65103']
并使用bs4和请求模块crawlSite(url)创建了一个函数来废弃url。代码如下:
^{pr2}$我要做的是确保在连接中只使用该列表中的代理。 随机部分
randProxy=random.choice(proxies_ls)
工作正常,但是检查代理是否有效的部分,主要是因为我仍然得到200作为一个“虚构的代理”的响应。在
如果我将列表缩减为:
proxies_ls = ['149.56.89.166:3128']
如果代理不起作用,我仍然得到200作为回应!(我尝试过使用类似https://pt.infobyip.com/proxychecker.php的代理检查器,但它不起作用…)
所以我的问题是(我会列举一下,这样更容易): a) 为什么我得到的回复是200而不是4xx? b) 如何强制请求使用我想要的代理?在
谢谢你
尤尼托。在
所以,基本上,如果我答对了你的问题,你只需要检查一下代理是否有效。
requests
有一个异常处理程序,您可以这样做:仔细阅读文档,您必须在字典中指定以下内容:
http://docs.python-requests.org/en/master/user/advanced/#proxies
“工作”dict应如下所示:
这将只代理所有https请求。这意味着它不会代理http。在
因此,要代理所有的网络流量,您应该如下配置dict:
^{pr2}$当然,如果有必要,也可以用IP地址代替。其他情况请参见以下示例:
相关问题 更多 >
编程相关推荐