我正在尝试查找网页上某些文本的xpath。如果要转到https://www.york.ac.uk/teaching/cws/wws/webpage1.html并尝试获取“EXERCISE”的xpath,它将类似于“html body html table tbody tr td div h4”。如果你进入那个页面,右击“EXERCISE”并检查它,你可以看到代码底部的路径(在chrome中)。你知道吗
我试过很多种方法。都没有达到预期的效果。这是我得到的最接近的结果:
soup = BS(page, 'html.parser')
tags = [{"name":tag.name,"text":tag.text,"attributes":tag.attributes} for tag in soup.find_all()]
s = ''
for t in tags:
if "EXERCISE" in t['text']:
s = s + t['name'] + " "
print(s)
一开始我需要得到“html body html table tbody tr td div h4”,但最终对于更复杂的页面,我还需要得到标记属性
谢谢!你知道吗
如果你知道你想要的标签总是有“EXERCISE”的确切文本(没有引号,或者后面不同的大小写,空格等等),那么你可以在确切的文本上使用
.find
。不过,您也可以使用正则表达式来代替,以防您确实需要检查空格的变化。你知道吗从那里,您可以利用
.parents
获得对象祖先的列表,即包含它的元素、包含该元素的元素,依此类推到文档顶部。然后只需提取标签名,反转列表,并将所有内容连接在一起。你知道吗输出:
如果您不想在开始时使用“
[document]
”,您可以通过多种方式将其取出,例如使用以下行而不是最后两行:输出:
CSS选择器
:contains(EXERCISE):not(:has(:contains(EXERCISE)))
将选择包含字符串“EXERCISE”的最里面的标记。你知道吗然后我们使用方法
find_parents()
找到这个标签的所有父项并打印它们的名字:印刷品:
使用lxml:
输出:
相关问题 更多 >
编程相关推荐