使用scrapy从xpath响应获取列表每行的布尔值

2024-05-15 13:37:23 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用scrapy时,我有一个xpath响应,它返回一个列表。我想检查列表的每一行是否包含字符串。所以结果应该是一个布尔值列表

使用scrapyresponse.xpath是如何做到的

这是我的解决方法: 因为scrapy使用的是XPath1,所以我必须构建一个变通方法,因为在XPath1中,每个节点都是唯一的。因此,XPath1只能返回每个标题一次。我就是这么解决这个问题的:


问题:


标题1
文本1
文本2
文本3


标题2
文本4
文本5
文本6


结果:
正确
正确
我想要得到这样的东西:
正确
正确
错误
正确
正确
错误

因此,我没有使用Xpath选择器来检索布尔值,而是使用scrapy来检索整页源代码。然后,我根据需要使用标准的python字符串操作和循环来迭代这个字符串。主要问题是XPath1只能返回每个节点一次


Tags: 方法字符串文本标题列表节点源代码response
1条回答
网友
1楼 · 发布于 2024-05-15 13:37:23

如果要检查每个列表项是否包含字符串,则可以使用另一种方法

如果您考虑下面的示例html,请找出列表项文本中没有fruit的列表项

<html> <div class="navbar navbar-blue"> <select> <option> Apple fruit</option> <option> fruit kiwi </option> <option> this should not select</option> <option> citrus fruit</option> </select> </div> </html>

您可以使用下面的xpath获取不包含字符串的列表项

//select/option[not(contains(.,'fruit'))]

enter image description here

相关问题 更多 >