news 2026/5/14 22:45:10

Scrapy实战:一个需登录态的商业网站采集案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Scrapy实战:一个需登录态的商业网站采集案例

一、问题背景

最近接到一个采集需求:目标网站是一个商业品牌数据库,需要采集5个分类的品牌数据。

采集字段:品牌名称、创立时间、开店方式、合作期限、面积要求

技术难点

  1. 网站需要登录才能访问完整数据

  2. 列表页只有品牌名称,详细信息在详情页

  3. 需要覆盖5个分类,每个分类有分页

  4. 数据量要求2000+条

如果用requests写一个脚本也能跑,但为了后续维护和复用,我选择了Scrapy框架


二、解决思路

第一步:分析接口

登录网站,打开F12 → Network,找到品牌列表的真实接口:

  • URL:http://www.xxxxx.com/wsapi/brand/getBigdataList3_4

  • 方法:POST

  • 参数:ytlb1(分类)、pageNum(页码)、pageSize(每页数量)

  • 返回:JSON,包含品牌列表和hasNextPage翻页标识

第二步:处理登录态

从浏览器复制完整的CookieToken,放入请求头。这是绕过登录的关键。

第三步:定义数据字段(items.py)

class WsItem(scrapy.Item): brand_name = scrapy.Field() create_time = scrapy.Field() open_way = scrapy.Field() coop_term = scrapy.Field() area_req = scrapy.Field()

第四步:编写爬虫(brand.py)

核心逻辑:

  1. 循环5个分类,发起POST请求

  2. 解析列表页,提取brandId

  3. 请求详情页,用XPath提取4个字段

  4. 判断hasNextPage,自动翻页

第五步:保存数据(pipelines.py)

通过Pipeline将数据写入Excel。


三、核心代码

def parse_detail(self, response): item = WsItem() item["brand_name"] = response.meta["brand_name"] values = response.xpath('//ul[@class="detail-option border-b"]/li/span[2]/text()').getall() item["create_time"] = values[1] if len(values) > 1 else "" item["open_way"] = values[2] if len(values) > 2 else "" item["coop_term"] = values[3] if len(values) > 3 else "" item["area_req"] = values[4] if len(values) > 4 else "" yield item

在此展示部分代码


四、运行结果

成功拿到数据


五、踩坑与解决

问题解决方案
请求返回404URL路径大小写问题,对比浏览器确认
返回“未登录”缺少Cookie/Token,从浏览器完整复制
数据字段为空XPath写错,用getall()打印所有值定位
翻页无限循环检查hasNextPage字段,正确判断结束条件

🙋 关于我

爬虫 学习者,已完成多个网站采集项目。有数据采集需求或想交流技术,欢迎私信。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/14 22:44:29

软件测试的“全栈化”趋势:只会一种测试类型正在成为短板

在瞬息万变的软件行业,质量保障的战场早已从瀑布模型末端的“质量检查站”,前移到了贯穿需求、设计、开发、交付、运维的全生命周期中。当微服务将庞大的单体应用拆解成成百上千个独立运行、相互调用的服务单元时,系统的脆弱点不再仅仅存在于…

作者头像 李华
网站建设 2026/5/14 22:44:21

AT_ndpc2026_a ポリオミノ 题解

DP 水题一枚。DP 三要素走起! 1. 状态定义 定义 fif_ifi​ 为填充 222 行 iii 列的方案数。 2. 转移方程 若竖着填充一块 121\times212 的多连块,则 fi→fi1f_{i}\to f_{i1}fi​→fi1​;若横着填充一块 121\times212 的多连块,则 …

作者头像 李华
网站建设 2026/5/14 22:44:20

低功耗机器人工控机怎么选?17 年经验告诉你,这几款性价比最高

低功耗机器人工控机不知道怎么选型?通过这边文章结合17年经验给大家提供该类型的机器人工控机选型方案。现在的机器人,越来越多是移动的。比如 AGV、AMR、服务机器人、巡检机器人等等。这些机器人都是电池供电的,所以续航是它们的生命线。而工…

作者头像 李华
网站建设 2026/5/14 22:43:28

从双清到格式化:安卓刷机数据清除全指南与分区深度解析

1. 安卓刷机数据清除的常见操作 安卓手机用久了难免会遇到卡顿、存储空间不足的问题,这时候很多用户会选择通过清除数据或者刷机来解决问题。但面对官方Recovery、TWRP、Fastboot等不同环境下的各种清除选项,新手很容易一头雾水。我刷机这么多年&#xf…

作者头像 李华
网站建设 2026/5/14 22:37:34

从GDC题解到实战:算法竞赛中的经典模型与破局思路

1. 算法竞赛中的经典模型解析 参加过算法竞赛的同学都知道,比赛中经常会遇到一些"似曾相识"的题目。这些题目背后往往隐藏着经典的算法模型,比如动态规划、图论、数据结构等。就拿2022年GDC竞赛中的题目来说,A题涉及置换群理论&…

作者头像 李华