python - Python Selenium 将网页上的所有 url 扩展作为列表获取
问题描述
我正在尝试获取与 URL 相关的所有文本的列表。在网页中Ctrl++中的代码给了我这个Shift:I
<sr-cell-name name="Otto Kraf" url="/ark:/61903/1:1:Q247-6VCC" relationship="Principal" collection-name="New York, New York City, Police Census, 1890"></sr-cell-name>
页面上有 Otto Kraf 等 20 个名称的列表,我想列出与每个名称相关的 URL。
我试过driver_get_element_by(xpath, name, css_selecter, and xpath)
了,但似乎没有人找到 URL。
HTML 的快照:
解决方案
要使用Selenium在网页中获取网页中所有url的列表, 您必须诱导WebDriverWait并且您可以使用以下任一定位器策略:visibility_of_all_elements_located()
使用
CSS_SELECTOR
:print([my_elem.get_attribute("url") for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.table.table-element-table span.td[name='name'] sr-cell-name[name][url]")))])
使用
XPATH
:print([my_elem.get_attribute("url") for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='table table-element-table']//span[@class='td' and @name='name']//sr-cell-name[@name and @url]")))])
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
更新
元素似乎在#shadow-root (open)
. 您可以在以下位置找到一些有关如何访问#shadow-root (open)中的元素的相关讨论:
推荐阅读
- reactjs - pnp/sp PeoplePicker 中的必需属性不起作用
- mysql - 联合查询的总百分比
- java - 如何将节点的边界固定到其中的内容
- r - 如何折叠列表中的值以允许将数据框中的列表列转换为向量?
- ios - 将数据添加到 AnyObject Var 的问题,以便我可以制作原生广告
- axios - Nuxt vuex - 从 Vue 迁移存储
- java - 从二叉树构建 BST 的最佳实践
- flask - Flask-migrate 在环境更改后不会更新或迁移更改
- angular - Angular angular-auth-oidc-client 问题想要读取 authzData 但没有找到
- python - 保存模型 django 中的图像列表