2015-02-16 14 views
5

Tôi đang cố gắng xây dựng một ứng dụng bằng cách sử dụng Flask và Scrapy. Tôi phải vượt qua các URL của list. Tôi đã thử sử dụng cú pháp sau:Truyền danh sách làm đối số trong Scrapy

__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) 

Tôi biết điều tương tự có thể được thực hiện bằng cách đọc tệp có url bắt buộc, nhưng tôi có thể chuyển danh sách các url để thu thập dữ liệu không?

Trả lời

5

phương pháp ghi đè nhện __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] 

Và vượt qua danh sách các thiết bị đầu cuối thông qua các dòng lập luận -a lệnh:

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

Xem thêm:


Lưu ý rằng bạn cũng có thể chạy Scrapy từ kịch bản:

+0

này trông giống như một giải pháp rất hứa hẹn, điều này thậm chí không yêu cầu lưu trữ số bằng sáng chế trong danh sách. Cảm ơn. –

Các vấn đề liên quan