私は完全にうまく動作するスパイダーを持っていますが、今はアイテムに別の値を追加したいと思います。問題はstamp
の値がparse
にあることです。 stamp
値は私がget_details
に渡すリンクと関連していますが、stamp
はオリジナルページだけです。生成するたびにstamp
の値を追加するコードを変更するにはどうすればよいですか?ありがとうカスタム値を渡す治療
def parse(self, response):
stamp = response.xpath("//div[@class='byline']/time/@datetime")
for url in response.xpath("//h2[@class='post-title']/a/@href").extract():
yield scrapy.Request(url, callback=self.get_details)
def get_details(self, response):
article = ArticleItem()
article['title'] = response.xpath("//h1/text()").extract()
article['url'] = response.url
yield article
私がわからない場合はIあなたの質問を正しく理解することができますが、コールバックメソッドにデータを渡す必要がある場合は、Scrapy [request.meta](https://doc.scrapy.org/en/1.0/topics/request-response.html#passing-additional)を使用できます。 -data-to-callback-functions)属性を使用します。 – vold
私は '// h2 [@ class = 'post-title']/a/@ href'を使って必要なすべてのリンクを取得し、ページから必要なすべてのデータを取得します。しかし、「スタンプ」はメインページでのみ利用可能です。そして私がつかむ1つのリンクはすべて「切手」です。それが一緒に来るようにアイテムにどのように渡すのですか? – yurashark
あなたは 'parse'でリクエストする' request.meta ['stamp'] = stamp'を追加し、 'get_details'では' stamp = response.meta ['stamp'] 'でスタンプ値を取得できます。 – vold