3日間、それぞれのstart_ursをmeta属性に保存して、後続のリクエストにアイテムとしてスクレイプで渡そうとしているので、start_urlを使用して辞書を呼び出し、出力に追加のデータを入力できます。ドキュメントで説明されているので、実際には簡単なはずです...
グーグルスクレイピーグループで議論があり、ここにも質問がありましたが、実行できません:(
私はscrapyを初めて使用し、それは素晴らしいフレームワークだと思いますが、私のプロジェクトでは、すべてのリクエストのstart_urlsを知っている必要があり、見た目は非常に複雑です。
助けていただければ幸いです。
現時点では、私のコードは次のようになっています。
class example(CrawlSpider):
name = 'example'
start_urls = ['http://www.example.com']
rules = (
Rule(SgmlLinkExtractor(allow=('/blablabla/', )), callback='parse_item'),
)
def parse(self, response):
for request_or_item in super(example, self).parse(response):
if isinstance(request_or_item, Request):
request_or_item = request_or_item.replace(meta = {'start_url': response.meta['start_url']})
yield request_or_item
def make_requests_from_url(self, url):
return Request(url, dont_filter=True, meta = {'start_url': url})
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
item = testItem()
print response.request.meta, response.url