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

如何爬取无限滚动/点击加载更多网页?Selenium被反爬如何限制最大爬取页数?

无限滚动网页爬取最大页数限制方案及优化建议

限制最大页数的实现方法

你现有代码的循环仅判断「加载更多」按钮是否存在,仅需在循环判断条件中增加最大页数阈值即可实现页数控制。比如你需要最多爬取10页,修改逻辑如下:

  1. 先定义最大页数常量,可根据实际需求调整数值
  2. 修改while循环条件,同时满足「存在加载更多按钮」、「当前页数未达最大阈值」两个条件时才继续执行

修改后的代码片段示例:

from selenium import webdriver
import time
import pandas as pd
from bs4 import BeautifulSoup
import random

url = 'https://www.bloomberg.com/search?query=indonesia%20mining'
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
# 新增反爬配置,避免被识别为机器人
options.add_argument('--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')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)

driver = webdriver.Chrome(options=options)
driver.get(url)
html = driver.page_source.encode('utf-8')

# 自定义最大爬取页数
MAX_PAGE = 10
page_num = 0

while page_num < MAX_PAGE and driver.find_elements_by_css_selector('.contentWell__a8d28605a5'):
    driver.find_element_by_css_selector('.contentWell__a8d28605a5').click()
    page_num += 1
    print("getting page number "+str(page_num))
    # 替换固定等待为随机时长等待,模拟真人操作间隔
    time.sleep(random.uniform(2, 5))

html = driver.page_source.encode('utf-8')
soup = BeautifulSoup(html, 'lxml')
titles = soup.find_all('div', {"class":"text__d88756958e withThumbnail__c4ffc902a6"})

df = pd.DataFrame(columns=['judul', 'link'])
news_list = []
for t in titles:
    news = {}
    news['judul'] = t.find('a', {'class':'headline__96ba1917df'}).text.strip()
    news['link'] = t.find('a', {'class':'headline__96ba1917df'}).get('href')
    news_list.append(news)
# 替换已废弃的append方法为concat,避免版本兼容问题
df = pd.concat([df, pd.DataFrame(news_list)], ignore_index=True)

额外优化说明

  • 代码中新增了反爬相关的配置,可降低被网站识别为机器人的概率
  • 固定等待改为随机间隔,更符合真人操作的行为特征
  • 调整了数据拼接逻辑,替换了高版本pandas已经废弃的append方法,避免运行报错
  • 爬取过程中注意控制频率,遵守目标网站的爬取规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:15:06