Scrapy:如何使用XPath提取HTML中title标签内的文本?
用Scrapy XPath提取title标签内容的解决方案
别担心,这事儿其实挺简单的,我给你捋清楚怎么操作:
核心XPath表达式:要拿到title标签里的文本,最直接的表达式就是
//title/text()。这个路径会定位到页面里所有的title标签,然后提取它的文本内容——对于普通网页来说,title标签一般只有一个,所以完全够用。在Scrapy爬虫里的实际用法:在你的Spider的
parse方法里,直接用response.xpath()调用这个表达式就行,示例代码如下:
def parse(self, response): # 提取title标签的文本内容 title_content = response.xpath('//title/text()').get() # 打印结果,或者存入Item print(title_content) # 这里就会输出你要的"This is it"
这里要注意:response.xpath()返回的是SelectorList对象,用get()可以获取第一个匹配到的字符串(刚好对应唯一的title);如果遇到极端情况有多个title标签,用getall()会返回所有匹配的文本列表。
- 特殊场景处理(很少遇到):如果目标页面是带命名空间的XHTML文档,你需要先注册命名空间再提取,比如:
def parse(self, response): # 注册HTML命名空间 response.selector.register_namespace('html', 'http://www.w3.org/1999/xhtml') # 用带命名空间的XPath提取 title_content = response.xpath('//html:title/text()').get()
不过这个情况非常少见,普通HTML页面完全不需要这一步。
内容的提问来源于stack exchange,提问作者TJ1
相关产品推荐
相关产品推荐

