Python 查找位置变化但文本不变的网页元素
我试图在几个网页上找到一个元素。这些网页都在同一个网站上,但网站的结构有时每页都会发生变化 当我检查页面时,我看到以下完整的Python 查找位置变化但文本不变的网页元素,python,selenium,xpath,Python,Selenium,Xpath,我试图在几个网页上找到一个元素。这些网页都在同一个网站上,但网站的结构有时每页都会发生变化 当我检查页面时,我看到以下完整的xpath: 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]
xpath
:
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
即使结构不同,每次如何定位图元
当前代码(仅适用于上述两种代码,并具有不同的标准):
请让我知道我需要调整什么
亲切问候,
Huib使用
//a[.='Uptobox']
来获取Uptobox按钮,但您需要等待元素出现在HTML中。如果要单击使用element\u可单击
条件以等待元素可单击
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"))
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"))