【发布时间】:2010-08-07 07:37:26
【问题描述】:
我正在开发依赖 XPath 从网页中提取信息的网络抓取软件。
该软件的一个应用是从网站上抓取节目评论。我试图抓取的一页是《卫报》最新的爱丁堡音乐节评论:http://www.guardian.co.uk/culture/edinburghfestival+tone/reviews
我想要的部分在底部,标题为“最新”。评论项目列表(即图片、星星、日期、简介等)的 XPath 表达式是
//ul[@id='auto-trail-block']
返回一个 li 元素列表,每个元素对应一个评论项。
如果我只想参考简介,我能得到的最接近的就是说
//ul[@id='auto-trail-block']/div[@class='trailtext']
但是当我从列表的每个项目中收集文本内容时,它包含了很多我不需要的 Javascript 和讨厌的东西。我不能引用简介本身,因为它不在 p 元素内,而是在一个 div 元素内,该元素包含 script 元素和分别包含 javascript 和不相关文本的强元素。
在调试器中,DOM 看起来像这样:
<ul id="auto-trail-block" ...>
<li ...>
<div ...>
<div ...>
<div ...>
<div class="trailtext">
<script ...>
<div ...>
<span ...>
<strong .../>
<br/>
The Text I want to copy!
<strong .../>
<a .../>
<div .../>
</div>
</div>
</li>
<li ...>
...
</li>
...
</ul>
有什么方法可以引用仅包含在 div 中而不是其任何子元素中的文本内容?
【问题讨论】:
-
从您的输入示例中,您想要的文本节点是 div[@class='trailtext'] 的子节点还是脚本元素后 div 的子节点并不清楚。
标签: xpath screen-scraping