python - 我使用selenium(python)从WOS顶级论文中检索一些数据,但是当我使用click()打开子链接时,我只能打开第一个url
问题描述
我的任务是从以下网站打开每个 url 并检索每篇文章的一些评估数据。我已成功定位元素,这意味着我得到了 10 个元素。但是,当 selenium 开始模仿人类点击 url 时,它只能打开十个链接中的第一个链接。https://esi.clarivate.com/DocumentsAction.action
代码如下。
import time
from selenium import webdriver
driver=webdriver.Chrome('/usr/local/bin/chromedriver')
driver.get('https://esi.clarivate.com/IndicatorsAction.action?Init=Yes&SrcApp=IC2LS&SID=H3-M1jrs4mSS2O3WTFbtdrUJugtDvogGRIM-18x2dx2B1ubex2Bo9Y5F6ZPQtUZbfUAx3Dx3Dp1StTsneXx2B7vu85UqXoaoQx3Dx3D-03Ff2gF3hTJGBPDScD1wSwx3Dx3D-cLUx2FoETAVeN3rTSMreq46gx3Dx3D')
#add filter-> research fields-> "clinical medicine"
target = driver.find_element_by_id("ext-gen1065")
time.sleep(1)
target.click()
time.sleep(1)
n = driver.window_handles
driver.switch_to.window(n[-1])
links=driver.find_elements_by_class_name("docTitle")
length=len(links)
for i in range(0,length):
item=links[i]
item.click()
time.sleep(1)
handles=driver.window_handles
index_handle=driver.current_window_handle
for handle in handles:
if handle != index_handle:
driver.switch_to.window(handle)
else:
continue
time.sleep(1)
u1=driver.find_elements_by_class_name("large-number")[2].text
u2=driver.find_elements_by_class_name("large-number")[3].text
print(u1,u2)
print("\n")
driver.close()
time.sleep(1)
driver.switch_to_window(index_handle)
driver.quit()
print("————finished————")
我尝试通过测试这些代码来找出问题所在:
links=driver.find_elements_by_class_name("docTitle")
length=len(links)
print(length)
print(links[1].text)
#links[0].click()
links[1].click()
结果是: 这意味着它已经找到了元素,但无法打开它。(使用 links[0].text 时,它工作正常。)对此有什么想法吗?
解决方案
推荐阅读
- google-smart-home - 如何在谷歌智能家居中调用“真空厨房”?
- html - CSS定位 - 如何将一个输入放在另一个旁边
- python-3.x - 将字符串转换为数字时出现问题
- tensorflow - Facenet 和单图像前向传播
- ios - nfc 代码在 ios 11 中有效,但在 iOS13 中无效
- java - 如何正确配置successHandler?
- embedded - 我的另一个 imx7d pico android things start kit 又死了
- mysql - 如何在不冲突的情况下将相同的数据分发给多个用户
- php - 使用 Wordpress 设置 API 存储数组有奇怪的行为
- php - 如何根据laravel中所有星期的当前月份检索所有数据?