私は、ページ上に複数のリンクを介してクロールし、対応する各リンクからのデータのリストをつかむために以下のコードを使用しています:Scrapy - 重複を削除し、単一のリストとしてデータを出力しますか?
import scrapy
class testSpider(scrapy.Spider):
name = "quotes"
start_urls = ['http://www.website.com']
def parse(self, response):
urls = response.css('div.subject_wrapper > a::attr(href)').extract()
for url in urls:
url = response.urljoin(url)
yield scrapy.Request(url=url, callback=self.getData)
def getData(self, response):
data = {'data': response.css('strong.data::text').extract()}
yield data
それは、各リンクのためのデータのリストを返すだとして、それが正常に動作しますが、、
"dalegribel,Chad,Ninoovcov,dalegribel,Gotenks,sillydog22"
"kaylachic,jmargerum,kaylachic"
"Kempodancer,doctordbrew,Gotenks,dalegribel"
"Gotenks,dalegribel,jmargerum"
...
(同じデータが複数のページに表示されます)任意の重複することなく、行の単一のリストなどのデータを出力する任意の単純/効率的な方法があり、類似した:CSVへのI出力は、それは次のようなとき、次のように?
dalegribel
Chad
Ninoovcov
Gotenks
...
私はその後、出力を得るために、各要素をループ配列を使用してみましたが、収量のみサポート「要求、BaseItem、辞書またはNone」を言ってエラーを取得しています。また、私は約10kのエントリ以上これを実行するように、私は配列にデータを格納する場合は、あまりにも多くの擦り減りを遅くするかどうかはわかりません。ありがとう。
感謝リスト属性が 'split'をサポートしていないというエラーが出ました。この関数を削除した後、ループが分割を処理しているように見えました。しかし、まだ起こっていると思われることの1つは、CSVにエクスポートするときの各行の間のギャップです(上記のコードの2番目のブロックで示したものと同じです)。空の行がないようにこれを修正する方法はありますか?ありがとうございました。 –
@ExamOrphデータはどのようにCSVに出力されますか?機能によって、または何ですか? – pythad
コマンドライン関数: 'scrapy crawl quotes -o test.csv -t csv' –