pyspider的crawl_conf如何生效?
比如我再crawl_conf中配置了一些字段,其中有一个是"proxy",如下代码:
class Handler(BaseHandler):
crawl_config = {
'itag':'v123',
'proxy':'192.168.218.10:8888',
"headers":{
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
}
}
..........
..........
我在192.168.218.10上搭了一个代理服务
然后启动这个项目,假如在爬虫还有跑完的时候,我更换了proxy的服务器,这时候我需要在代码中把192.168.218.10改成 192.168.218.101,我单单更改了这一项,点击save然后回到主页面将状态改成RUNNING,爬虫继续在跑
问题:这个新的proxy的代码会不会生效?在何时生效?
之前的经验是我在crawl_conf修改之后,同样的操作会生效,但奇怪的是如上的操作并没有生效,在代理服务的日志中并没有看到我们应该传过来的请求。
如果是我如上的操作有误,还请大家指正,谢谢了.
20170927 补充
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不会生效,我的做法是修改pypsider fetcher 的on_fetcher方法,每次抓取前会在redis或者库中动态取proxy,这样还可以实现proxy池
列如你可以添加如下代码:
def on_fetch(self,task_type, task):
你可以将我的伪代码地方修改,改成取数据库或者redis,这样可以在爬虫运行过程中换代理。有的网站防爬厉害,你可以在库存存很多代理ip,然后指定规则来动态取。