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

使用Selenium抓取加载更多后的文章链接问题求助

解决Selenium加载更多后无法获取所有文章链接的问题

这问题我之前帮不少开发者踩过坑,核心矛盾就是动态渲染的内容不能直接依赖driver.page_source立刻抓取——有时候即使视觉上内容加载出来了,page_source可能还没同步更新,或者你得换个方式直接从当前DOM里提取元素。给你几个靠谱的解决思路:

1. 直接通过Selenium定位所有文章链接(最推荐)

不用绕去获取page_source再解析,直接让Selenium帮你找当前页面中所有的文章链接元素,这才是最可靠的方式,因为它直接访问浏览器实时渲染的DOM。

举个代码例子,假设文章链接都在class为article-link的<a>标签里:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("你的目标网站URL")

# 循环点击加载更多,直到按钮消失
while True:
    try:
        load_more_btn = driver.find_element(By.XPATH, "//button[text()='加载更多']")
        load_more_btn.click()
        # 给页面一点加载时间(也可以用下面的显式等待替换)
        driver.implicitly_wait(1)
    except:
        # 找不到按钮说明所有内容加载完成
        break

# 直接提取所有文章链接
article_links = driver.find_elements(By.CLASS_NAME, "article-link")
all_hrefs = [link.get_attribute("href") for link in article_links]

# 输出结果
for href in all_hrefs:
    print(href)

driver.quit()

2. 配合显式等待确保内容加载完成

如果直接点击后立刻提取可能会漏内容,用WebDriverWait做显式等待,比固定时长等待更高效精准:

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

# 先记录初始文章数量
initial_article_count = len(driver.find_elements(By.CLASS_NAME, "article-item"))
# 点击加载更多按钮
load_more_btn.click()
# 等待文章数量增加,最多等10秒
WebDriverWait(driver, 10).until(
    lambda d: len(d.find_elements(By.CLASS_NAME, "article-item")) > initial_article_count
)

这种方式能确保每次点击后,新内容确实渲染完成再进行下一步操作。

3. 强制获取实时DOM的HTML(备选方案)

如果一定要用page_source,可以通过执行JS获取当前完整的页面HTML,避免driver.page_source的缓存问题:

# 用JS获取实时渲染的页面完整HTML
full_page_html = driver.execute_script("return document.documentElement.outerHTML")

# 用BeautifulSoup解析HTML提取链接
from bs4 import BeautifulSoup
soup = BeautifulSoup(full_page_html, "html.parser")
all_article_links = soup.find_all("a", class_="article-link")

for link in all_article_links:
    print(link.get("href"))

小提醒

  • 注意“加载更多”按钮的状态:有些网站按钮在加载中会变为不可点击,或者加载完成后隐藏,你可以通过判断按钮的disabled属性或display样式来决定是否继续点击。
  • 避免高频点击:适当增加等待时间,防止触发网站的反爬限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:27:52