Scrapy技术疑问:如何从多层div、span标签中精准提取目标数据
解决Scrapy提取HTML目标文本的问题
嘿,我来帮你搞定这个提取"Chicago"文本的问题!你现在用response.css('#info1').extract_first()拿到的是整个<div id="info1">的完整HTML内容,自然会包含大量冗余标签和属性。根据你给出的HTML结构,这里有几个精准提取目标文本的方法:
方法一:定位到a标签的文本节点
直接使用CSS选择器定位到包含目标文本的<a>标签,并用::text提取其纯文本内容:response.css('#info1 span a::text').extract_first()这个选择器的逻辑是:先找到id为
info1的div,再定位到它下面的span,最后选中span里的a标签,提取其文本。方法二:简化选择器路径
如果确认该div下只有这一个<a>标签,还可以简化选择器,省去中间的span层级:response.css('#info1 a::text').extract_first()方法三:使用XPath提取
如果你更习惯用XPath,也可以这样写:response.xpath('//div[@id="info1"]//a/text()').extract_first()
为什么原来的方法会返回冗余内容?
extract_first()方法默认会返回选中元素的完整HTML代码(包括所有嵌套标签、属性等),而加上::text(CSS)或/text()(XPath)后,就会只提取元素内部的文本节点,从而得到你需要的"Chicago"。
内容的提问来源于stack exchange,提问作者Teddy Seong
相关产品推荐
相关产品推荐

