python-3.x - 如何使用 Selenium 仅获取依赖内容(不包括引用内容)
问题描述
我想知道要获取哪些内容不包括引用内容。
https://forumd.hkgolden.com/view.aspx?type=BW&message=7219211
下图是例子
我只想得到“唔提冇咩人记得”,但是我用下面的代码会得到两个内容。
content = driver_blank.find_element_by_xpath('/html/body/form/div[5]/div/div/div[2]/div[1]/div[5]/table[24]/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[1]/td/div')
print(content.text)
以下代码是我要捕获的内容:
<div class="ContentGrid">
<blockquote><div style="color: #0000A0;"><blockquote><div style="color: #0000A0;">腦魔都俾你地bam咗啦<img data-icons=":~(" src="/faces/cry.gif" alt=":~("></div></blockquote><br>珠。。。。。</div></blockquote><br>唔提冇咩人記得
<br><br><br>
</div>
谁能帮我?谢谢~~~
的方法可以not(starts-with
解决吗?
解决方案
使用下面的代码行仅提取文本节点内容
element = driver.find_element_by_css_selector('div.ContentGrid')
text = driver.execute_script("return arguments[0].childNodes[3].textContent", element);
print(text)
Selenium 不允许您使用文本节点直接定位元素。尽管您可以使用一些 JavaScript 代码来实现它。
代码说明:
arguments[0].childNodes[3]
表示上下文节点的第三个子元素,即div.ContentGrid
. 请注意上下文节点的前 2 个子元素是空白的(尝试使用您共享的 HTML 代码),这就是使用索引3的原因。
推荐阅读
- typescript - Importing declarations from another file with as little repetition as possible?
- amazon-cognito - 是否可以在不使用 Amazon Cognito 的情况下使用 AWS Amplify?
- java - E/BluetoothAdapter:蓝牙绑定器为空
- symfony - Symfony4正确处理参数配置设置的方法
- c# - 使用 Ajax Post 调用 Web API 时是否可以附加证书?
- css - Webpack 不会从 node_modules 的 vue 组件中提取 css 到通用文件
- javascript - 如何正确设置 Google API 凭据和地理编码限制
- android-espresso - 连续调用 MockWebServer 进行测试
- loops - 使用 do loop-SAS 在数据步骤中定义一个带有变量的过滤器
- sql-server - TSQL - 在输出 AUTO、TYPE、ELEMENTS 时向 XML 添加属性