Xpath。按页面出现的顺序获取指定标签的文本

时间:2018-10-20 09:42:54

标签: python xpath scrapy

我正在尝试从h2,h3和p标签上的文本按它们在html页面上出现的顺序获取文本。 例: 所有突出显示的文本应按此顺序提取。 enter image description here

使用以下xpath时:

response.xpath('//*[name()=("h2", "h3","p")]/text()').extract()

出现以下错误:

ValueError: XPath error: Invalid expression in //*[name()=("h2", "h3","p")]/text()

我在哪里错了?还有另一种方法可以实现我的目标吗?

1 个答案:

答案 0 :(得分:2)

您可以通过使用 Undefined index: CUSTOMER_ORDER $json_decoded = json_decode($json_data,true); or $json_decoded = json_decode(json_encode($json_data),true); $customer_nickname = $json_decoded['CUSTOMER_ORDER'][0]['customer_nickname']; 组合一些条件来实现所需的目标:

or

您还可以通过组合一些路径并链接多个response.xpath('//*[name()="h2" or name()="h3" or name()="p"]/text()') 调用来选择同一件事:

.xpath()

我不确定是否存在性能差异,但是我只是选择一个您更容易阅读的字体。
如果性能是一个主要问题,我建议对两种方法进行性能分析。