首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要scrapy xpath帮助

需要scrapy xpath帮助
EN

Stack Overflow用户
提问于 2011-11-11 02:30:47
回答 3查看 1.1K关注 0票数 0

我是xpath的新手,所以请耐心听我说。目前,我正在使用scrapy从一些网页上抓取一些内容,内容看起来像这样:

代码语言:javascript
复制
     <td colspan="3" valign="top" class="regular">Landsize: 84,000sq with an extensive shoreline 750m<br />
<br />
Call Or Email for more info<br />

. Full-length Olympicpool,children pool,jacuzzi<br />
\' Landscapesdkey bridges<br />
. 2 tennis courts<br />
. water features True seafront development with iconic design by architect Daniel Libeskind<br />
lconic residential, located less than\' 150 metres from the shoreline<br />
<br />
opposite the future integrated resort on sentosa Island.<br />

A part of keppel Bay world calss water front precinct with luxury homes.<br />
<br />
Call or email for more info </td>

具体地说,我使用了以下hxs.select('//tr[contains(td,"Description")]/following-sibling::tr[1]/td/text()').extract()

但是,这样做会将结果项分解到一个列表中,因为内容是由<br>分隔的。如果我从xpath中排除text()<td>元素将包含在结果字符串中,这是不可取的。

在xpath中有没有一种方法可以确保我得到的字符串是上面所示的所有内容,但没有td标记?我希望我不需要通过<br/>手动加入列表

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-11 13:58:19

从你对埃文的正确答案的评论来看,你想跳过。

在这种情况下,请尝试:

代码语言:javascript
复制
normalize-space(//tr[contains(td,"Description")]/following-sibling::tr[1]/td)

便笺

  1. 如果normalize-space()的参数选择了多个节点,则此函数将返回仅处理第一个选定节点的结果。
  2. 将删除所有前导和尾随空格字符。相邻空格字符的所有中间组都将替换为单个空格字符。
票数 3
EN

Stack Overflow用户

发布于 2011-11-11 02:55:12

尝试将表达式包装在对string()的调用中,该调用返回节点的字符串值,该值是节点的后代文本节点的所有字符串值的串联。

代码语言:javascript
复制
string(//tr[contains(td,"Description")]/following-sibling::tr[1]/td)
票数 0
EN

Stack Overflow用户

发布于 2011-11-11 03:17:14

您可能会发现HTML Agility Pack对于解析web页面很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8084484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档