python - 查找位置变化但文本不变的网页元素
问题描述
我正在尝试在几个网页上找到一个元素。这些网页都在同一个网站上,但网站的结构有时会每页发生变化。
当我检查页面时,我看到以下完整内容xpaths
:
1; /html/body/div[2]/div/div[2]/div/div/main/article/div/div/p[3]/strong/a[1]
2, /html/body/div[2]/div/div[2]/div/div/main/article/div/div/p[10]/a[1]
3; /html/body/div[2]/div/div[2]/div/div/main/article/div/div/p[3]/strong/a
4; /html/body/div[2]/div/div[2]/div/div/main/article/div/div/p[3]/strong/a
5; /html/body/div[2]/div/div[2]/div/div/main/article/div/div/p[3]/strong/a
6; /html/body/div[2]/div/div[2]/div/div/main/article/div/div/p[10]/a[1]
7; /html/body/div[2]/div/div[2]/div/div/main/article/div/div/p[10]/a[1]
最终元素的文本始终包含字符串Uptobox
How do I locate the element 每次,即使结构不同。
当前代码(仅适用于上述几个并且具有不同的标准):
import selenium
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(url)
links = driver.find_elements_by_xpath('//p[contains(., "Download")]//a') # Need to adjust this to final uptobox-level
请让我知道我需要调整什么
亲切的问候,
惠布
解决方案
用于//a[.='Uptobox']
获取Uptobox按钮,但您需要等到元素出现在 HTML 中。如果您单击使用element_to_be_clickable
条件以等待元素可单击。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(url)
uptobox = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[.='Uptobox']")))
uptobox.click()
更新,a.btn[rel*='nofollow']
css 选择器将适用于所有页面:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get(url)
links = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "a.btn[rel*='nofollow']")))
for link in links:
print(link.get_attribute("href"))
推荐阅读
- image-segmentation - 内置拟合不会在 keras 的自定义指标中传递正确的 y_true 和 y_pred 形状
- python - 带有字典数据的 Ansible 查找模块
- go - BrowserModProxy 未通过 golang 运行
- python - 在python中获取价值组件?
- java - Java Flight Recording 不报告 Java Mission Control 中的死锁
- java - 如何知道 flatbuffer 消息中是否缺少字段?
- python-3.x - 如何在 Python Seaborn 的箱线图中指定 x 轴上的平均线和中线颜色以及组标签?
- c# - 如何为动态链接提供 URL(重写问题)
- django - ProgrammingError - 试图让图像出现在多个类别下
- react-native - React Native 滚动视图在屏幕更改后停止滚动