我正在抓取一个网站并尝试将输出保存在MongoDB中。它认为代码是可以的,但是当我尝试一个简单的输出(scrapy crawl 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
有人猜到即使数据被删除,为什么输出为空? 提前致谢
答案 0 :(得分:0)
运行上面发布的代码后,我可以确认数据已被删除,但该数据是否实际有用很难说,因为只有一个项目是使用场地创建的,但没有事件名称。
我稍微修改了xpath代码,并且能够返回http://www.ingressorapido.com.br/eventos.aspx?genero=55
第一页上显示的所有10个事件的项目。然后,我可以毫不费力地将删除的数据写入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