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

Selenium爬取Tipranks页面数据返回空结果问题排查求助

问题描述

尝试使用Selenium爬取Tipranks分析师页面(示例链接:https://www.tipranks.com/experts/analysts/dan-payne)的"Success Rate"数据,编写的代码如下:

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
import time

driver = webdriver.Chrome('chromedriver')
url = 'https://www.tipranks.com/experts/analysts/john-pitzer'

driver.get(url)
time.sleep(30)

elements = driver.find_elements(By.CSS_CLASS,"override")

# 浏览器检查器中定位到的元素:<text class="override  fontSizemedium colorgreen fontWeightsemibold" x="50%" y="50%" fill="#1ead00" text-anchor="middle" dy="0.28em">69%</text>

for all in elements:
    print(all.text)

运行后返回空结果,无论是用该CSS选择器还是复制的XPATH(示例:/html/body/div[1]/div[2]/div[4]/div/div[3]/div[1]/div[1]/div[1]/div[2]/div[3]/div[2]/div[2]/div[2]/div[1]/div[2]/svg/g/text)都无法获取有效数据,需要排查问题原因。

问题排查与解决方案

1. 元素定位参数错误

你使用的By.CSS_CLASS是无效参数,Selenium中定位class的正确方式是By.CLASS_NAME,或者用By.CSS_SELECTOR配合CSS语法。另外目标元素的class是多值组合,用By.CLASS_NAME只能指定单个class(如override),但页面中可能存在大量同名元素,导致定位精度不足。

2. SVG元素的特殊定位规则

目标数据位于<svg>内部的<text>标签中,Selenium对SVG元素的定位需要特殊语法:

  • CSS选择器需明确关联SVG层级,比如:svg g text.override.fontSizemedium
  • 避免使用绝对XPATH(极易因页面结构变动失效),改用相对路径,比如://svg//g//text[contains(@class, 'override') and contains(@class, 'colorgreen')]

3. 等待机制优化

固定的time.sleep(30)无法保证元素已加载完成,改用显式等待精准等待目标元素:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化等待对象,最长等待20秒
wait = WebDriverWait(driver, 20)
# 等待SVG内的目标文本元素出现
success_rate_element = wait.until(EC.presence_of_element_located(
    (By.CSS_SELECTOR, 'svg g text.override.fontSizemedium.colorgreen')
))
print(success_rate_element.text)

4. 反爬机制应对

Tipranks可能存在反爬检测,可通过以下方式优化:

  • 添加浏览器参数模拟真实用户环境:
options = webdriver.ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36')
driver = webdriver.Chrome(options=options)
  • 检查页面是否需要登录才能查看完整数据,若有登录弹窗需先完成登录流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:05:32