【发布时间】:2014-02-16 05:20:59
【问题描述】:
我有这个 html 页面
<page>
<div class="results-list">
<div class="item paid-featured-item"></div>
<div class="item paid-featured-item"></div>
<div class="item paid-featured-item"></div>
<div class="item paid-featured-item"></div>
<div class="item paid-featured-item"></div>
<div class="item paid-featured-item"></div>
<div class="item paid-featured-item"></div>
<div class="item paid-featured-item"></div>
</div>
</page>
在每个“项目付费功能项目”中,我都有这个:
<div class="item paid-featured-item">
<div class="somethign">
<div class="title">
This is the title
</div>
</div>
<div class="anotherthing">
</div>
</div>
我想使用 xpath 提取标题。
我尝试过的
Container = "//div[@class='results-list']"
for item in Container:
title = "//div[@class='title']/text()"
我有 8 个标题,但每个标题都是第一个项目的标题。
我确定那是因为我使用了 //
请问我该怎么办?
第一
我不想使用 css 选择器,因为我的工作中不允许使用它
秒
我不想使用class="something",因为这个 div 并不总是存在于我的页面中。
第三
我在 python 中使用 scrapy
第四
感谢您的帮助
【问题讨论】:
-
意料之中.. DOM
id在整个文档中必须是唯一的。搜索 ID 的查询将永远不会返回任何内容,除了找到的第一个 ID,因为它不允许有重复的 ID。 -
在我的页面中,有 24 个 id 同名,即
title -
那么您还有什么期望。 ID 必须是唯一的,因此您有 ONE 标题元素和 23 个非法重复项。
-
这与 id 无关,老实说,即使
class我也有同样的问题。我的问题是使用//总是给我第一个项目。 -
您需要显示您的实际 xpath/retrieval 代码。
//foo将检索所有 foo 项作为 DOMNodeList,但实际处理该列表是否正确取决于您。
标签: python-2.7 xpath scrapy