在Python中使用Selenium浏览链接

时间:2019-02-21 17:38:08

标签: python selenium selenium-webdriver web-scraping

我正在尝试从具有通过 NEXT 按钮

链接的多个页面的网站中抓取数据

连续页面URL与上一个页面URL没有对应关系

(在这种情况下,修改路径就可以解决问题)

这是我计划要做的-

1。从初始URL开始

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()

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

如果您想获取单击下一步后的页面的网址, 试试这个。

print(browser.current_url)

print(driver.current_url)

答案 1 :(得分:0)

也许您可以尝试这样的事情:

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:消息:元素不可见

我不确定如何解决此问题,因为我在网页上没有看到“下一步”按钮...我确定您可以解决这个问题!

答案 2 :(得分:0)

driver.current_url()

您可能需要先等待页面加载。