首页 > 解决方案 > Python - 如何使用 .click/selenium 打印 URL

问题描述

我的代码进入网页,可以点击页面的每一行。

我想最终将每一行的每个链接作为一个新页面打开,这样我就可以保存每个页面的 URL。

如果没有 Seleniums .click()(我相信),我无法获取 URL,所以我求助于 .click,然后获取 currentURL。

此代码仅适用于第一行,因为网页退出了原始 URL。

有没有更有效的方法来打印每行的 URL?

from selenium import webdriver
import time
sam=[]
import pandas as pd
driver = webdriver.Chrome()
for x in range (1,8):
    driver.get(f'https://www.abstractsonline.com/pp8/#!/9325/presentations/endometrial/{x}')
    time.sleep(3)
    page_source = driver.page_source
    eachrow=driver.find_elements_by_xpath('//*[@id="results"]/li')
    for item in eachrow:
        oth = item.find_element_by_xpath(".//h1[@class='name']")
        oth.click()
        print(driver.current_url)

标签: pythonseleniumweb-scraping

解决方案


<h1 class="name" data-id="696" data-key="">
  <span class="title color-primary">
    <i class="icon-caret-right"></i> 
    <span class="bodyTitle">Panel Discussion</span>
  </span>
</h1>

您的每个元素都有一个 data-id 抓取所有元素并附加 url

https://www.abstractsonline.com/pp8/#!/9325/presentation/696

https://www.abstractsonline.com/pp8/#!/9325/presentation/{}

然后,您可以通过

eachrow=["https://www.abstractsonline.com/pp8/#!/9325/presentation/"+x.get_attribute('data-id') for x in driver.find_elements_by_xpath('//*[@id="results"]/li//h1[@class='name']')]

for row in eachrow:
    driver.get(row)

推荐阅读