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

使用Python爬取Google Scholar关联academic.oup站点摘要DOI失败求助

问题原因及解决方案

核心问题原因

  • 拼写错误:bs4代码中标签名拼写错误,seciton应为section,直接导致匹配不到元素。
  • Selenium未加等待逻辑:调用driver.get后立即查找元素,此时页面还未完成渲染,元素尚未加载,自然返回空结果。
  • 选择器过于脆弱:直接复制的全路径XPath依赖页面层级结构,站点页面结构稍有调整就会失效。
  • Requests反爬拦截:直接发起请求未携带完整浏览器标识,学术站点的反爬策略会返回非目标页面,导致无法匹配内容。
  • 代码语法问题:Selenium代码中循环打印时引用的变量x未定义,会引发运行错误。

Selenium修复方案

改用稳定的元素定位方式,添加显式等待逻辑,优先从页面meta标签提取元数据(几乎不会随页面结构调整变动),修复后代码如下:

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

driver = webdriver.Chrome('/Users/cante/Downloads/chromedriver_win32/chromedriver.exe')
driver.get('https://academic.oup.com/eurheartj/article-abstract/42/Supplement_1/ehab724.1650/6394300')
wait = WebDriverWait(driver, 10)

# 优先从meta标签提取,稳定性更高
doi = driver.find_element(By.XPATH, "//meta[@name='citation_doi']").get_attribute('content')
# 等待摘要元素加载完成后提取文本
abstract = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "section.abstract"))).text

print("摘要:", abstract)
print("DOI:", doi)

driver.quit()

BeautifulSoup修复方案

补充合法的请求头模拟浏览器访问,修复标签拼写错误,同样优先从meta标签提取元数据,修复后代码如下:

import requests
from bs4 import BeautifulSoup

# 模拟浏览器请求头,绕过基础反爬校验
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
url = 'https://academic.oup.com/eurheartj/article-abstract/42/Supplement_1/ehab724.1650/6394300'
response = requests.get(url, headers=headers)
if response.status_code != 200:
    print('Status code:', response.status_code)
    raise Exception('Failed to fetch web page ')

page = BeautifulSoup(response.text, 'html.parser')

# 从meta标签直接提取元数据,无需依赖页面渲染结构
abstract = page.find('meta', {'name': 'citation_abstract'})['content']
doi = page.find('meta', {'name': 'citation_doi'})['content']

## 也可选择提取页面渲染的摘要文本
# abstract = page.find("section", attrs={"class": "abstract"}).get_text()

print("摘要:", abstract)
print("DOI:", doi)

内容的提问来源于stack exchange,提问作者Giorgia Mancini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:54:06