XPath 是一种在 XML 文档中查找信息的语言,它同样适用于 HTML 文档。Scrapy 是一个用于网络爬虫的 Python 框架,它提供了强大的工具来提取网页数据。
假设我们有一个 HTML 结构如下:
<div class="container">
<div class="item">
<h2>Title 1</h2>
<p>Description 1</p>
</div>
<div class="item">
<h2>Title 2</h2>
<p>Description 2</p>
</div>
</div>
我们想要提取每个 .item
下的 h2
标签的文本。使用 Scrapy 和 XPath,代码如下:
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
start_urls = ['http://example.com/page']
def parse(self, response):
for item in response.xpath('//div[@class="item"]'):
title = item.xpath('.//h2/text()').get()
yield {'title': title}
问题: 使用 XPath 提取文本时,可能会遇到提取到的文本包含多余的空格或换行符。
原因: 这通常是因为 HTML 中的元素包含了空白字符,或者是多个文本节点拼接的结果。
解决方法: 使用 normalize-space()
函数来去除多余的空格和换行符。
title = item.xpath('normalize-space(.//h2/text())').get()
这样就可以确保提取到的文本是干净且格式正确的。
通过上述方法,你可以有效地使用 Scrapy 和 XPath 从网页中提取所需的数据,并处理常见的提取问题。
领取专属 10元无门槛券
手把手带您无忧上云