RandomUserAgentMiddleware 执行问题

来源:8-5 通过downloadmiddleware随机更换user-agent - 2

qq_光阴的尾巴_03454093

2017-09-22

class RandomUserAgentMiddleware(object):

    def __init__(self, crawler):

        super(RandomUserAgentMiddleware, self).__init__()

        self.ua = UserAgent()

        self.per_proxy = crawler.settings.get('RANDOM_UA_PER_PROXY', False)

        self.ua_type = crawler.settings.get('RANDOM_UA_TYPE', 'random')

        self.proxy2ua = {}

    @classmethod

    def from_crawler(cls, crawler):

        return cls(crawler)

老师您好,这里我们重写了 __init__方法,from_crawler这个函数对这个类进行实例化的时候知道需要传递crawler参数,那么其他的地方怎么是知道也需要传递这个参数呢(因为我们如果不重写是不需要传参数的)?或者根本没有其他地方需要对这个类进行实例化?默认情况下这个类是不需要被实例化的吗?谢谢


写回答

1回答

bobby

2017-09-25

这个是由scrapy框架调用的 参数会传递一个crawler 所以函数定义是固定的 但是函数内部具体的逻辑是由自己来写的

0
3
bobby
回复
慕粉0243397241
这个地方可以不写 但是如果你需要控制中间过程就需要在这里添加逻辑了
2017-12-04
共3条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5795 学习 · 6290 问题

查看课程