You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

期刊作者名提取报错:Selenium获取标签并存入列表的正确方法

问题分析与解决方案

错误原因

  • 直接用requests.get()无法获取需机构权限或动态渲染的页面内容,导致BeautifulSoup解析不到目标标签,parent_div返回None,触发AttributeError
  • BeautifulSoup语法错误:find_all("a.href")写法错误,正确查找带href属性的a标签应为find_all("a", href=True)

目标标签确认

Tandfonline文章页面中,作者名称的典型标签结构:

  • 父容器:div.NLM_contrib-group 或 ul.contrib-list
  • 单个作者元素:span.NLM_contrib 下的a标签(部分页面直接用span标签承载作者名),标签内文本即为作者名称

Selenium 实现代码

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import pandas as pd

# 初始化Chrome浏览器(需确保chromedriver路径配置正确)
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

url = "https://www.tandfonline.com/doi/full/10.1080/17452759.2022.2111585"
driver.get(url)

# 等待作者区域加载完成
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "NLM_contrib-group")))

# 提取所有作者元素(根据实际页面结构调整选择器)
author_elements = driver.find_elements(By.CSS_SELECTOR, "div.NLM_contrib-group span.NLM_contrib a")
# 若页面无a标签,改用:driver.find_elements(By.CSS_SELECTOR, "div.NLM_contrib-group span.NLM_contrib")

# 提取作者名并存入列表
author_names = [ele.text.strip() for ele in author_elements if ele.text.strip()]

print(author_names)

# 写入Excel(示例)
output = pd.read_excel("C:\\Users\\97254\\Downloads\\output.xlsx")
output["作者"] = author_names
output.to_excel("C:\\Users\\97254\\Downloads\\output_updated.xlsx", index=False)

# 关闭浏览器
driver.quit()

注意事项

  • 若需机构权限,需确保浏览器已登录对应机构账号(可手动登录后保持会话,或用Selenium处理登录流程)
  • 若页面结构变动,需通过浏览器开发者工具查看实际标签,调整元素定位方式
  • 适当增加等待时间或显式等待,避免因页面加载不完整导致元素查找失败

内容的提问来源于stack exchange,提问作者Ido Kobi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:05:02