python - 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)
解决方案
<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)
推荐阅读
- android - Firebase Android 重置后发送新密码
- java - H2 在内存中创建服务器以通过 Shell 访问
- vagrant - Vagrant 同步文件夹导致内容被删除
- c++ - 如何将 std::stringstream 转换为 uintptr_t 并保持十六进制值?
- html - 谷歌浏览器在使用时抱怨闪退
- node.js - NPM 运行开始:“系统找不到指定的路径。”
- swift - 在 UITableView 中选择单个单元格以转到 UITableView 以显示不同的学生列表数据
- azure - 在 Azure DevOps 中设置/更改默认组织
- java - Restlet 请求对象不包含身份验证信息
- android - 带有 SurfaceView 的 Android MediaPlayer 在 Prepare() 方法上失败