Scrapy Shell XPath

Scrapy Shell XPath

我正在尝试从这个 http://www.npr.org/rss/#feeds 新闻提要网站获取 link 和类别。

这是我在 scrapy 中的 xpath shell:

a = sel.xpath('//ul[@class="rsslinks"]/li/a/@href').extract()

b = sel.xpath('//ul[@class="rsslinks"]/li/a/text()').extract()

但是b的长度比a的长度小一。我不知道我在这里错过了什么。但这会导致数据出现问题。

从下图中,类别名称是 "Most Emailed Stories" 但 link 是 "News Headlines"

如有任何帮助,我们将不胜感激

这是因为结果中的第一个 link:

<a class="iconlink xml" href="/rss/rss.php?id=1001" target="blank"><strong>News Headlines</strong></a>

如你所见,没有直接子"text"节点,只有一个strong元素。你的 xpath 不匹配。

添加另一个斜杠以获取 a 标签中的所有文本节点:

//ul[@class="rsslinks"]/li/a//text()
                         HERE^

/rss/rss.php?id=1001 的带有新闻标题标签的文本似乎是 <strong> </strong> 下的另一个级别,而其他链接则不是。