私はPythonとScrapyが新しく、FormRequestを使用して検索結果ページのタイトルを取得する単純なクローラにいくつかの問題があります。Scrapy:CSVのFormRequest、順番にまたは検索タームでエクスポート
基本的に、考えられるのは、検索語句で満たされたCSVを同じ形式で実行し、結果ページからタイトルを取得し、別の(または同じ)CSVにエクスポートすることです。
検索結果の出力は、希望どおり/期待通りです。
問題は、ページがスクラピー用に読み込まれる順番にタイトルをエクスポートすることです。つまり、元のCSVと比較して順序が間違っていて、元のCSVの行に戻すことはできません。私はStackOverflowの上での検索の束を行っているが、FormRequestを使用しての面で地雷に一致する問題を見つけるカント
from scrapy.item import Item, Field
from scrapy.http import FormRequest
from scrapy.spider import Spider
class ExampleSpider(Spider):
name = "examplecsv"
allowed_domains = ["examplewebsite.com"]
start_urls = ["https://www.examplewebsite.com"]
def parse(self, response):
with open('addresses.csv') as fp:
for line in fp:
yield FormRequest.from_response(response,
formdata={'examplesearchfield':line},
clickdata={'id': 'clickexamplesearch'},
callback=self.parse1)
def parse1 (self, response):
for title in response.css('title'):
yield {
'title':title.css('title::text').re(r'^[^|]+(?=|)')
}
:
は、ここに私のコードです。私はCONCURRENT_REQUESTSを1に設定しようとしましたが、それは助けになりませんでした。
移動する前に各FormRequestが完了するのを待つか、入力された検索語をその出力に含めるかのどちらかを強制する方法がありますか?
私のPythonの知識は進んでいないので、助けになるコードを簡単に微調整したいと思っています。
ご指摘いただければ幸いです。