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

使用__doPostBack分页的BrickEconomy站点爬取仍返回首页数据问题求助

问题修复方案

  • 修正请求URL为HTTPS协议,原代码使用的HTTP会触发站点301重定向,重定向后请求自动转为GET请求,自然返回第一页内容。
  • 新增__EVENTVALIDATION隐藏字段提取,ASP.NET WebForm的PostBack请求默认会校验该字段,缺失会导致分页参数失效。
  • 使用requests.Session()维持会话,统一管理Cookie,保证多次请求被站点识别为同一会话。
  • 请求头新增X-Requested-With: XMLHttpRequest,标记为AJAX异步请求,符合站点分页接口的预期请求格式。
  • 如果需要爬取多页,每次请求完新页面后,要从返回的内容里提取最新的__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION值,用于下一次分页请求,这三个值每次页面刷新都会更新,不能一直复用第一页的数值。

修复后的参考代码

import requests
from bs4 import BeautifulSoup

# 初始化会话 保持cookie
session = requests.Session()
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest'
}
# 修正为https协议
url = "https://www.brickeconomy.com/sets/theme/collectable-minifigures"

# 先请求第一页 获取初始状态字段
page_content = session.get(url, headers=headers).content
soup = BeautifulSoup(page_content, 'html.parser')

# 提取三个必要的状态字段
VIEWSTATEGENERATOR  = soup.find('input',{'id':'__VIEWSTATEGENERATOR'}).get('value')
VIEWSTATE  = soup.find('input',{'id':'__VIEWSTATE'}).get('value')
EVENTVALIDATION = soup.find('input',{'id':'__EVENTVALIDATION'}).get('value')

data = {  
        "ctl00$ScriptManager1": "ctl00$ContentPlaceHolder1$ctlSets$UpdatePanelMain|ctl00$ContentPlaceHolder1$ctlSets$GridViewSets",
        "ctl00$txtSearchHeader2": "",
        "ctl00$txtSearchHeader": "",
        "subthemesorter": "",
        "setsorter": "SetNumberDESC",
        "ctl00$LoginModalUsername": "",
        "ctl00$LoginModalPassword": "",
        "__EVENTTARGET": "ctl00$ContentPlaceHolder1$ctlSets$GridViewSets",
        "__EVENTARGUMENT": "Page$2",
        "__VIEWSTATE":VIEWSTATE,
        "__VIEWSTATEGENERATOR": VIEWSTATEGENERATOR, 
        "__EVENTVALIDATION": EVENTVALIDATION,
        "__ASYNCPOST": 'true'
}

res = session.post(url, data=data, headers=headers).content
# 此时返回的就是第二页内容
print(BeautifulSoup(res, 'html.parser').find_all(class_ = 'mb-5'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:06:03