基于类名的网页爬取问题:无法提取目标地址内容
解决爬取地址的XPath问题
问题分析
你之前的两段XPath都存在逻辑错误,导致无法获取目标地址:
- 第一段
td[2]/td[contains(@class,'type-address')]:HTML规范里<td>不能作为另一个<td>的子元素,你的目标<td class="type-address">本身就是独立单元格,不存在嵌套在td[2]里的子<td>,路径完全错误。 - 第二段
td[2]/@class:这段代码是提取第二个<td>的class属性值,根本不是提取文本内容,自然拿不到地址。
正确的XPath写法
根据你提供的HTML结构,以下几种写法都能正确提取目标地址:
- 精准定位到带
type-address类的<td>,再提取其内部<span>的文本:
address = response2.xpath("//td[@class='type-address']/span/text()").get()
- 如果需要自动去除文本首尾的空格,使用
normalize-space():
address = response2.xpath("normalize-space(//td[@class='type-address']/span/text())").get()
- 也可以直接提取
<td>下的所有文本内容(因为<span>里的内容就是<td>的全部文本):
address = response2.xpath("normalize-space(//td[@class='type-address']//text())").get()
补充说明
如果你的目标<td>确实是某个<tr>下的第二个单元格,可把路径调整为//tr/td[2][@class='type-address']/span/text(),但从你给出的HTML结构来看,不需要额外层级定位。
内容的提问来源于stack exchange,提问作者Taegyun Lim
相关产品推荐
相关产品推荐

