Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于刮纸的旋转代理_Python_Proxy_Screen Scraping_Web Crawler_Squid - Fatal编程技术网

Python 用于刮纸的旋转代理

Python 用于刮纸的旋转代理,python,proxy,screen-scraping,web-crawler,squid,Python,Proxy,Screen Scraping,Web Crawler,Squid,我有一个pythonweb爬虫,我想在许多不同的代理服务器之间分发下载请求,可能运行squid(尽管我对其他选择持开放态度)。例如,它可以以循环方式工作,其中request1转到proxy1,request2转到proxy2,并最终循环。你知道怎么设置吗 更难的是,我还希望能够动态更改可用代理的列表,减少一些代理,并添加其他代理 如果重要的话,IP地址是动态分配的 谢谢:)让您的爬虫程序有一个代理列表,并在每个HTTP请求中以循环方式使用列表中的下一个代理。但是,这将阻止您使用HTTP/1.1持

我有一个pythonweb爬虫,我想在许多不同的代理服务器之间分发下载请求,可能运行squid(尽管我对其他选择持开放态度)。例如,它可以以循环方式工作,其中request1转到proxy1,request2转到proxy2,并最终循环。你知道怎么设置吗

更难的是,我还希望能够动态更改可用代理的列表,减少一些代理,并添加其他代理

如果重要的话,IP地址是动态分配的


谢谢:)

让您的爬虫程序有一个代理列表,并在每个HTTP请求中以循环方式使用列表中的下一个代理。但是,这将阻止您使用HTTP/1.1持久连接。修改代理列表最终将导致使用新代理或不使用代理


或者并行打开多个连接,每个代理一个连接,并将爬网请求分发给每个打开的连接。动态可以通过让connetor向请求调度器注册自己来实现。

我已经使用HAProxy+DeleGate+多个Tor实例设置了旋转代理。使用Tor,您无法很好地控制带宽和延迟,但它对web抓取非常有用。我刚刚发表了一篇关于这个主题的文章:

编辑:甚至还有gimmeproxy的Python包装器:


如果您不介意节点,可以使用来收集公共代理并检查它们。这正是它的工作原理,更多信息

谢谢,给了我一些好主意,主要是使用redis集存储代理列表,使用srandmember命令获取代理。@Jacob你能分享你的示例代码或github repo吗?这很酷。不幸的是,越来越多的网站似乎禁止了与Tor出口节点相关的ip地址。@ChrisArmstrong是的。如果你想走这条路,就要考虑这个问题。