TypeError:恰好接受1个参数(给定0个)-Scrapy

用户1592380

我正在努力工作。我想为每个请求生成一个唯一的用户代理。我有以下几点:

class ContactSpider(Spider):
    name = "contact"

    def getAgent(self):
        f = open('useragentstrings.txt')
        agents = f.readlines()
        return random.choice(agents).strip()

    headers = {          
        'user-agent': getAgent(),
        'content-type': "application/x-www-form-urlencoded",
        'cache-control': "no-cache"
    }

    def parse(self, response):
        open_in_browser(response)

getAgent从以下形式的列表生成代理:

"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"

但是,当我运行它时,我得到:

  File "..spiders\contact_spider.py, line 35, in <module>
    class ContactSpider(Spider):
  File "..spiders\contact_spider.py", line 54, in ContactSpider
    'user-agent': getAgent(),
TypeError: getAgent() takes exactly 1 argument (0 given)
ec

getAgent()是一个实例方法,希望将ContactSpider实例视为一个参数。但是,问题是,您不需要此函数成为您的Spider类的成员-将其移至单独的“ helpers” /“ utils” /“ libs”模块并导入:

from helpers import getAgent

class ContactSpider(Spider):
    name = "contact"

    headers = {          
        'user-agent': getAgent(),
        'content-type': "application/x-www-form-urlencoded",
        'cache-control': "no-cache"
    }

    def parse(self, response):
        open_in_browser(response)

另请参见:类和实例方法之间的区别


或者,作为一种替代方法,可以使用scrapy-fake-user-agentScrapy中间件来无缝且随机地轮换用户代理。用户代理字符串由fake-useragent模块提供

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TypeError:main()恰好接受1个参数(给定0)

来自分类Dev

TypeError:__call __()恰好接受1个参数(给定2个)

来自分类Dev

TypeError:__init __()恰好接受1个参数(给定4个)

来自分类Dev

TypeError:__call __()恰好接受1个参数(给定2个)

来自分类Dev

signup()恰好接受1个参数(给定0)

来自分类Dev

TypeError:randint()恰好接受3个参数(给定4个)

来自分类Dev

SqlAlchemy。TypeError:filter_by()恰好接受1个参数(给定2个)

来自分类Dev

DRF TypeError __init __()恰好接受1个参数(给定2个)

来自分类Dev

Python:TypeError:__init __()恰好接受2个参数(给定1个)

来自分类Dev

Python 2.7 TypeError:__init __()恰好接受4个参数(给定1个)

来自分类Dev

/ __init __()处的TypeError恰好接受1个参数(给定2个)

来自分类Dev

TypeError:read_hdf()恰好接受2个参数(给定1个)

来自分类Dev

pyspark-TypeError:count()恰好接受1个参数(给定2个)

来自分类Dev

Django-nonrel设置中的错误TypeError:__init __()恰好接受1个参数(给定2个)

来自分类Dev

TypeError:read_hdf()恰好接受2个参数(给定1个)

来自分类Dev

Python 2.7 TypeError:__init __()恰好接受4个参数(给定1个)

来自分类Dev

我收到“ TypeError:decorator_factory()恰好接受2个参数(给定1个)”

来自分类Dev

TypeError receive_money()恰好接受3个参数(给定1个)-Django

来自分类Dev

__enter __()恰好接受3个参数(给定1个)

来自分类Dev

__init __()恰好接受1个参数(给定7个)

来自分类Dev

python恰好接受1个参数(给定2个)

来自分类Dev

警告:fflush()恰好需要1个参数,给定0个

来自分类Dev

为什么在使用Directory API的Python中出现错误“ TypeError:method()恰好接受1个参数(给定2个)?”

来自分类Dev

为什么这个装饰器调用“ TypeError:make_sandwich()恰好接受2个参数(给定1个)”

来自分类Dev

TypeError:function(self,item,** kwargs)恰好接受2个参数(给定3个)

来自分类Dev

无法弄清TypeError:__init __()恰好接受3个参数(给定2个)

来自分类Dev

TypeError:join()恰好接受一个参数(给定2个)

来自分类Dev

__init __()恰好接受1个参数,MYSQL

来自分类Dev

PySpark:aggregate()恰好接受4个参数(给定3个)

Related 相关文章

  1. 1

    TypeError:main()恰好接受1个参数(给定0)

  2. 2

    TypeError:__call __()恰好接受1个参数(给定2个)

  3. 3

    TypeError:__init __()恰好接受1个参数(给定4个)

  4. 4

    TypeError:__call __()恰好接受1个参数(给定2个)

  5. 5

    signup()恰好接受1个参数(给定0)

  6. 6

    TypeError:randint()恰好接受3个参数(给定4个)

  7. 7

    SqlAlchemy。TypeError:filter_by()恰好接受1个参数(给定2个)

  8. 8

    DRF TypeError __init __()恰好接受1个参数(给定2个)

  9. 9

    Python:TypeError:__init __()恰好接受2个参数(给定1个)

  10. 10

    Python 2.7 TypeError:__init __()恰好接受4个参数(给定1个)

  11. 11

    / __init __()处的TypeError恰好接受1个参数(给定2个)

  12. 12

    TypeError:read_hdf()恰好接受2个参数(给定1个)

  13. 13

    pyspark-TypeError:count()恰好接受1个参数(给定2个)

  14. 14

    Django-nonrel设置中的错误TypeError:__init __()恰好接受1个参数(给定2个)

  15. 15

    TypeError:read_hdf()恰好接受2个参数(给定1个)

  16. 16

    Python 2.7 TypeError:__init __()恰好接受4个参数(给定1个)

  17. 17

    我收到“ TypeError:decorator_factory()恰好接受2个参数(给定1个)”

  18. 18

    TypeError receive_money()恰好接受3个参数(给定1个)-Django

  19. 19

    __enter __()恰好接受3个参数(给定1个)

  20. 20

    __init __()恰好接受1个参数(给定7个)

  21. 21

    python恰好接受1个参数(给定2个)

  22. 22

    警告:fflush()恰好需要1个参数,给定0个

  23. 23

    为什么在使用Directory API的Python中出现错误“ TypeError:method()恰好接受1个参数(给定2个)?”

  24. 24

    为什么这个装饰器调用“ TypeError:make_sandwich()恰好接受2个参数(给定1个)”

  25. 25

    TypeError:function(self,item,** kwargs)恰好接受2个参数(给定3个)

  26. 26

    无法弄清TypeError:__init __()恰好接受3个参数(给定2个)

  27. 27

    TypeError:join()恰好接受一个参数(给定2个)

  28. 28

    __init __()恰好接受1个参数,MYSQL

  29. 29

    PySpark:aggregate()恰好接受4个参数(给定3个)

热门标签

归档