【问题标题】:Passing list as arguments in Scrapy在 Scrapy 中将列表作为参数传递
【发布时间】:2015-04-17 05:56:00
【问题描述】:

我正在尝试使用 Flask 和 Scrapy 构建应用程序。我必须将网址的list 传递给蜘蛛。我尝试使用以下语法:

__init__: in Spider
self.start_urls = ["http://www.google.com/patents/" + x for x in u]

Flask Method
u = ["US6249832", "US20120095946"]
os.system("rm static/s.json; scrapy crawl patents -d u=%s -o static/s.json" % u)

我知道可以通过读取具有所需 url 的文件来完成类似的事情,但是我可以传递 url 列表以进行抓取吗?

【问题讨论】:

    标签: python flask scrapy scrapy-spider


    【解决方案1】:

    覆盖蜘蛛的__init__() 方法:

    class MySpider(Spider):
        name = 'my_spider'    
    
        def __init__(self, *args, **kwargs): 
          super(MySpider, self).__init__(*args, **kwargs) 
    
          endpoints = kwargs.get('start_urls').split(',')
          self.start_urls = ["http://www.google.com/patents/" + x for x in endpoints]
    

    并通过-a 命令行参数传递端点列表:

    scrapy crawl patents -a start_urls="US6249832,US20120095946" -o static/s.json
    

    另见:


    请注意,您也可以从脚本运行 Scrapy

    【讨论】:

    • 这看起来是一个很有前途的解决方案,它甚至不需要在列表中存储专利号。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多