SIM*_*SIM 7 python scrapy web-scraping python-3.x scrapy-spider
我在python中编写了一个脚本,Scrapy用于通过代理向网页发送请求而不更改settings.py或中的任何内容DOWNLOADER_MIDDLEWARES.它现在很好用.但是,我唯一不能使用的是创建一个代理列表,这样如果一个失败,另一个将被使用.我如何抽取这一部分os.environ["http_proxy"] = "http://176.58.125.65:80"逐一获取代理列表,因为它只支持一个代理.任何有关这方面的帮助将受到高度赞赏.
这是我到目前为止尝试过的(工作一个):
import scrapy, os
from scrapy.crawler import CrawlerProcess
class ProxyCheckerSpider(scrapy.Spider):
name = 'lagado'
start_urls = ['http://www.lagado.com/proxy-test']
os.environ["http_proxy"] = "http://176.58.125.65:80" #can't modify this portion to get list of proxies
def parse(self, response):
stat = response.css(".main-panel p::text").extract()[1:3]
yield {"Proxy-Status":stat}
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0',
})
c.crawl(ProxyCheckerSpider)
c.start()
Run Code Online (Sandbox Code Playgroud)
我不想更改任何内容settings.py或创建任何自定义middleware以达到目的.我希望通过单个代理实现与上面相同的(外部).谢谢.
您还可以将每个请求的元密钥代理设置为http://some_proxy_server:port或http://username:password@some_proxy_server:port之类的值。
因此,您需要编写自己的中间件来执行以下操作:
request.meta['proxy']将值替换为新的代理 ip或者,您可以查看已经为解决此问题而制作的 scrapy 扩展包: https: //github.com/TeamHG-Memex/scrapy-rotating-proxies
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |