在Scrapy中将列表作为参数传递

时间:2015-02-16 16:41:39

标签: python flask scrapy scrapy-spider

我正在尝试使用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)

我知道通过阅读包含所需网址的文件可以做类似的事情,但是我可以通过网址列表进行抓取吗?

1 个答案:

答案 0 :(得分:5)

覆盖蜘蛛的__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: