私のコードにある種類のItem Exporterを実装しようとしています。私の基本的なコードは、例のように打撃平均をsi.comで削っているところです。結果は1つの長い行に表示されています。代わりに.csvファイルに格納されている出力を変更して、列に配置したいと考えています。下に私はスパイダーを含めて、私が使用しているアイテムの輸出業者はちょうど基本的なものを見つけただけですhere.私は実際に起こったかったことは、各アイテムを取って、長い列の代わりに、 3つの結果はすべて連続しています。ScrapでItemExporterを使用しようとしています
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.exporter import XmlItemExporter
from mlb1.items import MlbItem
class MLBSpider(BaseSpider):
name = "si.com"
allowed_domains = ["si.com"]
start_urls = [
http://sportsillustrated.cnn.com/baseball/mlb/stats/2011/batting/ml_0_byBATTING_AVG.html"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//div[@class="cnnSASD_sport-mlb"]/div[@class="cnnSASD_page-leadersPlayersExpandedStats"]/div[@class="cnnStatsContent"]')
items = []
for site in sites:
item = MlbItem()
item['name'] = site.select('//table[@class="cnnSASD_first"]/*/td[@class="cnnCol1"]//text()').extract()
item['team'] = site.select('//table[@class="cnnSASD_first"]/*/td[@class="cnnCol2"]//text()').extract()
item['batave'] = site.select('//table[@class="cnnSASD_first"]/*/td[@class="cnnColHighlight"]//text()').extract()
items.append(item)
return items
私はPythonコーディングでまだ非常に新しいので、治療のドキュメントはあまり役に立ちません。コードを実行しようとすると、 "ImportError:オブジェクト 'mlb1.pipelines.XmlExportPipeline'の読み込み中にエラーが発生しました:名前のシグナルをインポートできません。誰でも助けることができれば幸いです。
素晴らしい、ありがとう。私はもう少し時間がかかっていて、書き込んだクイックコンバータを読み込んでいましたが、これは素晴らしいプログラムです。私も探しています。異なるサイトには異なるフォーマットがあるため、両方のサイトを自由に使い分けることができます。あなたの助けに感謝します。 – Jeff
@Jeff、あなたは大歓迎です。アイテムのサイズが大きくなるにつれて、これらのアイテムをcsvではなくsqlite dbに書き込むことを検討することができます。クラッシュがあり、csvファイルが書き込まれていない場合にも便利です – Medorator