1

Web サイトをスクレイピングして、出力を MongoDB に保存しようとしています。コードは問題ないことがわかりますが、単純な出力 (スクレイピー クロール IR -o items.json -t json) を試すと、ファイルは空白になります...しかし、スパイダーのログは、データがスクレイピングされたことを示しています...

ここに私のスパイダーコードがあります

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from teste.items import IngressoRapidoItem

class IngressoRapidoSpider(BaseSpider):
   name = "IR"
   allowed_domains = ["ingressorapido.com.br"]
   start_urls = (
        'http://www.ingressorapido.com.br/eventos.aspx?genero=55',
         )

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        items = []
        item = IngressoRapidoItem()
        item['banda'] = hxs.select('normalize-space(//a[contains(@href,"Evento")]    /text())').extract()
        item['local'] = hxs.select('normalize-space(//td/span[contains(@style,     "normal")]/text())').extract()
        items.append(item)
        return items

データがスクレイピングされていても出力が null になる理由を誰でも推測できますか? 前もって感謝します

4

1 に答える 1

0

上記のコードを実行すると、データがスクレイピングされたことを確認できますが、そのデータが実際に役立つかどうかはわかりません。会場で作成されたアイテムは 1 つだけで、イベント名はありません。

xpath コードを少し変更したところ、 の最初のページに示されている 10 個のイベントすべてに対してアイテムを返すことができましたhttp://www.ingressorapido.com.br/eventos.aspx?genero=55。その後、スクレイピングしたデータを json ファイルに問題なく書き込むことができました。

ご質問がある場合、または xpath コードが必要なデータを返さない場合はお知らせください。

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from teste.items import IngressoRapidoItem

class IngressoRapidoSpider(BaseSpider):
    name = "IR"
    allowed_domains = ["ingressorapido.com.br"]
    start_urls = (
        'http://www.ingressorapido.com.br/eventos.aspx?genero=55',
         )

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        events = hxs.select('//table[@id="ContentPlaceHolder1_dlEventos"]//table//td[2]')
        items = []
        for e in events:
            item = IngressoRapidoItem()
            item['banda'] = e.select('normalize-space(.//a//text())').extract()
            item['local'] = e.select('normalize-space(.//span//text())').extract()
            items.append(item)
        return items
于 2013-08-30T08:39:27.593 に答える