为什么我的 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 表达式中删除。
我正在为 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 表达式中删除。