在 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 浏览链接 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

sele nium 模块

python自动化测试工具selenium使用指南

如何使用 python 和 Selenium 将 cookie 保存在浏览器中

爬虫04 /asyncioselenium规避检测动作链无头浏览器

无法在浏览器中单击radio元素(使用Python 3和Selenium)[重复]

安装selenium操作步骤(python中使用selenium)