python - 使用文本 selenium beautifulsoup python 获取标签
问题描述
我知道有一种使用 xpath 和 javascript 的方法
element = browser.find_element_by_xpath("//*[contains(text(),'text')]")
但是这种方法不检测元素/标签,它们被定义为标签,例如:
<p>
<span class="text-primary">UK</span>
+44 (0) 1865 987 667<br>
Piccadilly Gardens, 49 Piccadilly, Manchester, M1 2AP </p>
在这种情况下,如果文本是+44 (0) 1865 987,它不会得到元素。
- 这个问题在许多示例中重复出现,以这种方式包含文本。可能是什么原因?
- 有没有办法在beautifulsoup中获取标签,使用文本搜索?
解决方案
我的期望是您需要使用以下功能组合:
- normalize-space() - 在子项中查找匹配项/忽略前导/尾随空格等。
- contains() - 用于部分匹配
把所有东西放在一起:
element = driver.find_element_by_xpath("//*[contains(normalize-space(),'+44 (0) 1865 987 667')]")
演示:
更多信息:XPath 运算符和函数
推荐阅读
- javascript - 如何通过ajax调用在点击jstree最后一个节点时填充数据
- github - Github 部署显示空白
- graphql - 问题在 apollo-graphql 中的突变中传递数组参数
- excel - TEXT 函数中的 $ 符号是什么意思
- marklogic - 元素词位置 - 概念问题
- python - markdown 未正确转换为 html
- css - Bootstrap:CSS 媒体查询不会覆盖原始 CSS
- r - 在 R 中的 cowplot::gridplot 中为子图添加标签
- algorithm - 最大和的动态规划方法
- python - 在 rasterio 中索引 numpy 数组和打开文件之间的权衡