【发布时间】:2020-04-24 12:20:04
【问题描述】:
我正在使用 Scrapy 选择器从 html 中提取字段
xpath = /html/body/path/to/element/text()
这类似于问题scrapy get nth-child text of same class
并按照文档,我们可以使用.getall() 方法获取所有元素并从列表中选择特定的元素。
selected_list = Selector(text=soup.prettify()).xpath(xpath).getall()
是否可以在 xpath 本身中直接指定要选择的第 n 个元素? 如下所示
xpath = /html/body/path/to/element/text(2) #to select 3 child text
例子
<body>
<div>
<i class="ent_sprite remind_icon">
</i>
text that needs to be
</div>
</body>
response.xpath('/body/div/text()').getall() 的结果由 2 个元素组成
'\n''text that needs to be'
【问题讨论】:
-
你可以做
.../element[3]/text() -
<div><i class="ent_sprite remind_icon"></i> text that needs to be selected</div>@Piron 问题是我想提取第二个文本元素而不是第二个元素 -
你能把 XML 吗?第一个和第二个文本元素。
-
@Piron 添加了有问题的示例
标签: python html regex xpath scrapy