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

如何用Selenium从ResearchGate爬取个人头像(解决403与元素定位问题)

用Selenium下载ResearchGate用户头像的解决方法
  • 定位正确的头像元素
    ResearchGate的头像大多采用懒加载机制,真实图片链接不会直接放在img标签的src属性里,而是存放在data-src中。必须等页面完全加载后再查找元素,推荐用显式等待替代隐式等待,避免过早查找导致元素未加载。

操作方法:打开目标用户的ResearchGate主页,按F12右键头像选择「检查」,查看头像对应的img标签类名(通常是avatar-image或profile-header__avatar-image),用这个类名直接定位即可。
示例定位代码:

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
from selenium.common.exceptions import TimeoutException
import requests

# 初始化Chrome浏览器
driver = webdriver.Chrome()
driver.get("https://www.researchgate.net/profile/目标用户名")

# 显式等待头像元素加载,最长等待10秒
try:
    avatar_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "avatar-image"))
    )
    # 优先取懒加载的真实链接,没有则取src
    avatar_url = avatar_element.get_attribute("data-src") or avatar_element.get_attribute("src")
except TimeoutException:
    print("头像加载超时,请检查页面结构或网络状态")
    driver.quit()
    exit()
  • 下载头像到本地
    拿到头像链接后,用requests发起请求下载,记得带上当前浏览器的User-Agent,避免被平台拦截:
# 直接从浏览器获取User-Agent,模拟真实请求
headers = {"User-Agent": driver.execute_script("return navigator.userAgent;")}

resp = requests.get(avatar_url, headers=headers)
if resp.status_code == 200:
    with open("researchgate_avatar.jpg", "wb") as f:
        f.write(resp.content)
    print("头像下载完成")
else:
    print(f"下载失败,状态码: {resp.status_code}")

# 关闭浏览器
driver.quit()
  • 额外注意事项
    • 如果类名定位失效,可直接从开发者工具复制头像元素的XPATH,替换代码中的By.CLASS_NAME为By.XPATH,定位更精准。
    • 频繁爬取容易触发平台反爬机制,建议添加time.sleep(2)这类延迟,降低访问频率。
    • 无自定义头像的用户会显示平台默认图,代码也能正常获取并下载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:32:56