为什么我的 Scrapy 代码 return 是一个空数组?

Why does my Scrapy code return an empty array?

我正在为 wunderground.com 构建网络抓取工具,但我的代码 returns inches_rain 和湿度的“[]”值。谁能看出为什么会这样?

# -*- coding: utf-8 -*-
import scrapy
from scrapy.selector import Selector
import time

from wunderground_scraper.items import WundergroundScraperItem


class WundergroundComSpider(scrapy.Spider):
    name = "wunderground"
    allowed_domains = ["www.wunderground.com"]
    start_urls = (
        'http://www.wunderground.com/q/zmw:10001.5.99999',
    )

    def parse(self, response):
        info_set = Selector(response).xpath('//div[@id="current"]')
        list = []
        for i in info_set:
            item = WundergroundScraperItem()
            item['description'] = i.xpath('div/div/div/div/span/text()').extract()
            item['description'] = item['description'][0]
            item['humidity'] = i.xpath('div/table/tbody/tr/td/span/span/text()').extract()
            item['inches_rain'] = i.xpath('div/table/tbody/tr/td/span/span/text()').extract()
            list.append(item)
        return list

我也知道湿度和 inches_rain 项目设置为相同的 xpath,但这应该是正确的,因为一旦信息在数组中,我只是将它们设置为数组中的某些值。

让我建议一个更可靠和可读的 XPath 来定位,例如,"Humidity" 值,其中基础是 "Humidity" 列标签:

"".join(i.xpath('.//td[dfn="Humidity"]/following-sibling::td//text()').extract()).strip()

现在输出 45%。


仅供参考,您的 XPath 至少有一个问题 - tbody 标记 - 将其从 XPath 表达式中删除。