在 Python 中使用 Selenium 浏览链接 [重复]
Posted
技术标签:
【中文标题】在 Python 中使用 Selenium 浏览链接 [重复]【英文标题】:Navigating through links using Selenium in Python [duplicate] 【发布时间】:2019-07-15 17:21:24 【问题描述】:我正在尝试从具有多个通过 NEXT 按钮链接的页面的站点中抓取数据
后续页面 URL 与之前的页面 URL 没有对应关系,正如人们所假设的那样
(在这种情况下修改路径就可以解决问题)
这就是我打算做的-
1.以初始网址开头
2.提取信息
3.点击下一步
重复 2 和 3 n 次
具体来说,我想知道如何在点击时获取新页面的 URL
这是我目前为止的想法
def startWebDriver():
global driver
options = Options()
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(executable_path = '/path/to/driver/chromedriver_linux64/chromedriver',options=options)
#URL of the initial page
driver.get('https://openi.nlm.nih.gov/detailedresult.php?img=CXR1_1_IM-0001-3001&query=&coll=cxr&req=4&npos=1')
time.sleep(4)
#XPATH of the "NEXT" button
element = driver.find_element_by_xpath('//*[@id="imageClassM"]/div/a[2]/img').click()
任何帮助将不胜感激
【问题讨论】:
我有点不清楚你想在这里实现什么。这是否是正确的概要:您打开了 URL,找到了上面的“NEXT”按钮并单击它,现在您想知道页面重定向到哪个 URL? 根据您的按钮xpath
应该是>
按钮。但是我在您提供的网页上看不到任何>
按钮。对吗url
您在导航吗?
我提供的 URL 是正确的.. XPATH 也是正确的.. 但是当您访问该页面时(甚至手动)...该元素由于某种原因不可见 @Anuj坎德瓦尔
是的,那是因为它的 CSS 样式设置为“display: none”。当我们从控制台中删除该样式属性时,按钮会出现,但单击它不会导致任何新页面。你确定那个按钮能正常工作吗?
【参考方案1】:
如果您想在点击下一步后获取您所在页面的 url 试试这个。
print(browser.current_url)
或
print(driver.current_url)
【讨论】:
【参考方案2】:也许你可以试试这样的:
from selenium import webdriver
from selenium.webdriver import ChromeOptions
import time
if __name__ == "__main__":
options = ChromeOptions()
options.add_argument("--disable-extensions")
#start driver
driver = webdriver.Chrome(options=options)
#load first page
driver.get('https://openi.nlm.nih.gov/detailedresult.php?img=CXR1_1_IM-0001-3001&query=&coll=cxr&req=4&npos=1')
for i in range(3): #However many of these links to click
time.sleep(4) # let each page load
driver.find_element_by_xpath('//*[@id="imageClassM"]/div/a[2]/img').click()
print(driver.current_url)
这会为我加载页面(我删除了您关于 chrome 驱动程序路径的信息,因为我的驱动程序位于同一文件夹中)。但它确实出现了错误,看起来它对driver.find_element_by_xpath('//*[@id="imageClassM"]/div/a[2]/img').click()
说:
selenium.common.exceptions.ElementNotVisibleException:消息:元素不可见
我不知道如何解决这个问题,因为我在网页上看不到“下一步”按钮...不过我相信你可以弄清楚!
【讨论】:
【参考方案3】:driver.current_url()
您可能需要先等待页面加载。
【讨论】:
以上是关于在 Python 中使用 Selenium 浏览链接 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python 和 Selenium 将 cookie 保存在浏览器中
爬虫04 /asyncioselenium规避检测动作链无头浏览器