【问题标题】:Scrapy web crawler not returning anythingScrapy网络爬虫不返回任何东西
【发布时间】:2013-09-29 21:13:15
【问题描述】:

我是第一次使用 Scrapy,但我无法让它返回任何东西。有人可以帮我理解我做错了什么吗?

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

from idcode.items import StatuteItem

class IdCodeSpider(BaseSpider):
  name = "idcode"
  allowed_domains = ["idaho.gov"]
  start_urls = ["http://legislature.idaho.gov/idstat/Title1/T1CH1SECT1-101.htm"]

  def parse(self, response):
    hxs = HtmlXPathSelector(response)
    item = StatuteItem()
    item['title'] = hxs.select("//table/tbody/tr[1]/td[2]/div[2]/div[1]/div[1]/text()").extract()
    return item

我知道我项目中的其他所有内容都在工作,因为如果我在return item 上方添加item['title'] = "test",它会返回“测试”。所以我的 XPath 一定有问题,但我在 Chrome 开发者控制台中对其进行了测试,它在那里工作。

【问题讨论】:

标签: python xpath scrapy


【解决方案1】:

删除 tbody 解决了该问题。

item['title'] = hxs.select("//table/tr[1]/td[2]/div[2]/div[1]/div[1]/text()").extract()

【讨论】:

    【解决方案2】:

    如果您想使用代码而不仅仅是创建它,您可以使用 Goose 项目。它仅适用于文本和媒体,但我已经使用了很多次,我没有任何问题。

    这是链接:

    https://github.com/grangier/python-goose

    【讨论】: