我是Python和Scrapy的新手,並且遇到了一些簡單的搜尋器問題,我使用FormRequest來獲取搜索結果頁面上的標題。Scrapy:從CSV導出FormRequest,按順序導出或與搜索字詞導出
基本上,這個想法是讓csv充滿搜索條件,並通過相同的表單運行它們,從結果頁面獲取標題,然後導出到不同(或相同)的csv。
搜索工作正常 - 輸出符合預期/預期。
問題是,它按照scrapy爲頁面加載的順序導出標題,這意味着它們與原始csv相比無序,並且我無法將它們與原始csv中的行匹配回來。
這裏是我的代碼:
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'^[^|]+(?=|)')
}
我已經做了一堆在計算器上搜索的,但無法找到匹配礦用FormRequest方面存在問題。我嘗試將CONCURRENT_REQUESTS設置爲1,但這沒有幫助。
有沒有辦法強迫scrapy等待每個FormRequest在繼續之前完成,或者包含輸入搜索詞及其輸出?
我的Python知識不是先進的,所以我希望有一個簡單的代碼調整,將有助於。
任何指導將不勝感激。