我对 python 很菜鸟,现在正在 Selenium 中构建一个网络抓取工具,它将获取网页上单击的“选项卡”中产品的所有 URL。但我的代码从第一个“选项卡”获取 URL。代码如下。感谢你们。我开始有点沮丧哈哈。 Screenshot
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from lxml import html
PATH = 'C:\Program Files (x86)\chromedriver.exe'
driver = webdriver.Chrome(PATH)
url = 'https://www.alza.sk/vypredaj-akcia-zlava/e0.htm'
driver.get(url)
driver.find_element_by_xpath('//*[@id="tabs"]/ul/li[2]').click()
links = []
try:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, 'blockFilter')))
link = driver.find_elements_by_xpath("//a[@class='name browsinglink impression-binded']")
for i in link:
links.append(i.get_attribute('href'))
finally:
driver.quit()
print(links)
最佳答案
选择当前选项卡:
current_tab = driver.current_window_handle
在选项卡之间切换:
driver.switch_to_window(driver.window_handles[1])
driver.switch_to.window(driver.window_handles[-1])
假设您的新标签页网址为 TAB_URL
,您应该尝试:
from selenium.webdriver.common.action_chains import ActionChains
action = ActionChains(driver)
action.key_down(Keys.CONTROL).click(TAB_URL).key_up(Keys.CONTROL).perform()
此外,显然 li
没有 click 事件,您确定您正在获取此元素吗 '//*[@id="tabs"]/ul/li[2]'
将 aria-selected
属性设置为 true
或以下任何类:ui-tabs -active
ui-state-active
?
如果没有,您应该在此li
内的a
标记上调用click。
那么您应该增加 WebDriverWait
的 timeout 参数,以保证 div 已加载。
关于 python , Selenium 。谷歌浏览器。网页抓取。如何在网站中的 'tabs' 之间导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66769337/