pyspider的crawl_conf如何生效?

发布于 2022-09-05 23:26:22 字数 845 浏览 10 评论 0

比如我再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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆光飞翔i 2022-09-12 23:26:22

不会生效,我的做法是修改pypsider fetcher 的on_fetcher方法,每次抓取前会在redis或者库中动态取proxy,这样还可以实现proxy池
列如你可以添加如下代码:
def on_fetch(self,task_type, task):

fetch_task = task.get('fetch', '')
proxy = db.select or redis.select// 伪代码 1
task_fetch['proxy'] = proxy

你可以将我的伪代码地方修改,改成取数据库或者redis,这样可以在爬虫运行过程中换代理。有的网站防爬厉害,你可以在库存存很多代理ip,然后指定规则来动态取。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文