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

如何遍历带自定义标识的嵌套元素树实现USNews网站内容抓取

如何遍历带自定义标识的嵌套元素树实现USNews网站内容抓取

我太懂你抓USNews的痛苦了!他们家的页面元素经常搞动态渲染,加上搜索结果还套了Google CSE的跳转链接,定位起来特别挠头。你之前遇到的空列表问题,大概率是元素还没加载完成就去定位,或者定位路径不够精准导致的,咱们一步步来解决:

一、先解决「元素找不到」的核心问题:等待DOM渲染完成

USNews的搜索结果是动态加载的,直接用find_elements会因为页面还没渲染完,DOM里根本没有目标元素,所以一定要用显性等待(比硬写time.sleep靠谱多了),让代码等元素出现后再执行操作。

二、精准定位第一个搜索结果链接

你要找的第一个链接其实有个非常靠谱的标识:data-tracking-placement="1",这个是搜索结果的位置标记,第一个结果就是1,用这个属性定位比依赖class名稳定得多(毕竟class名可能随网站更新变化)。

完整可运行的代码示例

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
from urllib.parse import urlparse, parse_qs

# 初始化浏览器驱动(这里以Chrome为例,记得对应你的浏览器版本)
driver = webdriver.Chrome()

# 替换成你要访问的USNews搜索页面URL
target_url = "你的USNews搜索页面地址"
driver.get(target_url)

# 给页面一点初始加载时间(配合显性等待更稳妥)
time.sleep(2)

try:
    # 显性等待第一个搜索结果链接出现,最长等待10秒
    first_result_link = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, '//a[@data-tracking-placement="1"]'))
    )
    
    # 获取链接的原始跳转地址(这个是Google CSE的中转链接)
    raw_href = first_result_link.get_attribute('href')
    print("原始跳转链接:", raw_href)
    
    # 如果需要直接点击跳转页面
    # first_result_link.click()
    
    # 直接提取真实的USNews目标地址(解析url中的q参数)
    parsed_url = urlparse(raw_href)
    real_usnews_url = parse_qs(parsed_url.query)['q'][0]
    print("真实USNews链接:", real_usnews_url)
    
except Exception as e:
    print("定位元素出错:", str(e))
finally:
    # 关闭浏览器
    driver.quit()

为什么你之前的代码会返回空列表?

  1. 没有等待元素加载:页面还在动态渲染时就执行了find_elements,此时DOM里还没有usn-site-search-item这个li元素,自然返回空。
  2. 旧版API问题:find_elements_by_xpath是Selenium的旧版方法,现在推荐使用find_element(By.XPATH, ...)这种符合新版规范的写法。
  3. 定位路径不够精准:依赖class名定位容易受页面样式更新影响,而data-tracking-placement这类业务属性一般不会轻易变动。

额外注意事项

  • USNews有反爬机制,频繁请求可能会被限制访问,建议每次操作后加随机等待(比如time.sleep(random.uniform(2,5))),或者使用代理IP。
  • 如果还是找不到元素,可以检查页面是否有iframe嵌套,若存在需要先切换到对应的iframe再定位元素。

备注:内容来源于stack exchange,提问作者MsTais

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 10:34:29