Web Scraper实战:轻松构建电影数据库
前言
如同古代淘金工人在杂质中寻求点点黄金,现代数据工作者也需要探索从纷繁的网页中提取有价值信息。Web Scraper就是这样一个实用的工具,让我们能够轻松获取网页中的宝贵数据。
一、Web Scraper工具
1. 什么是Web Scraper?
Web Scraper是一款基于浏览器的数据采集扩展工具,它就像一位不知疲倦的数字图书管理员,能够自动翻阅网页并将指定内容整理归档。
2. 核心优势解析
- 零代码入门:可视化选择器让数据采集变得像搭积木一样简单
- 云端协作:支持团队协作和数据云存储
- 智能分页:自动处理分页数据采集
- 数据导出:支持CSV、Excel等多种格式
二、实战豆瓣APP电影Top250采集
1. 环境准备
2. 配置详解
{"_id":"doubanAPPtop250","startUrl":["https://movie.douban.com/top250?start=[0-225:25]&filter="],"selectors":[{"id":"doubanCard","type":"SelectorElement","parentSelectors":["_root"],"selector":"div.item","multiple":true,"delay":0},{"id":"num","type":"SelectorText","parentSelectors":["doubanCard"],"selector":"em","multiple":false,"regex":"","delay":0}]
}
2.1 根对象参数
{"_id": "doubanAPPtop250","startUrl": ["https://movie.douban.com/top250?start=[0-225:25]&filter="],"selectors": [...]
}
参数 | 类型 | 说明 | 示例值解析 |
---|---|---|---|
_id | 字符串 | 站点地图唯一标识符 | "doubanAPPtop250" 表示此配置的名称标识 |
startUrl | 数组 | 起始URL集合 | ["https://..."] 中的[0-225:25] 表示分页参数:- 从0开始 - 最大225 - 步长25 |
selectors | 数组 | 选择器配置集合 | 包含多个选择器对象的数组 |
2.2 选择器公共参数(所有Selector类型共有)
{"id": "doubanCard","type": "SelectorElement","parentSelectors": ["_root"],"selector": "div.item","multiple": true,"delay": 0
}
参数 | 类型 | 说明 | 典型值解析 |
---|---|---|---|
id | 字符串 | 选择器唯一标识 | 如"doubanCard" 用于后续引用 |
type | 字符串 | 选择器类型 | 可选:SelectorElement /SelectorText /SelectorLink /SelectorImage 等 |
parentSelectors | 数组 | 父选择器ID | ["_root"] 表示从文档根开始查找 |
selector | 字符串 | CSS选择器 | "div.item" 定位电影卡片元素 |
multiple | 布尔 | 是否匹配多个元素 | true 表示采集所有匹配元素 |
delay | 数值 | 操作延迟(毫秒) | 0 表示无延迟,防封禁建议设300-500 |
2.3 专用选择器参数
2.3.1 文本选择器 (SelectorText)
{"id": "num","type": "SelectorText","selector": "em","regex": ""
}
特殊参数 | 说明 |
---|---|
regex | 正则表达式过滤文本,留空表示不处理 |
2.3.2 链接选择器 (SelectorLink)
{"id": "link","type": "SelectorLink","selector": ".hd a"
}
特殊参数 | 说明 |
---|---|
无 | 自动提取元素的href属性 |
2.3.3 图片选择器 (SelectorImage)
{"id": "img","type": "SelectorImage","selector": "img"
}
特殊参数 | 说明 |
---|---|
无 | 自动提取图片的src属性 |
2.4 参数组合逻辑
- 层级关系:
parentSelectors
建立选择器树形结构 - 数据流:
doubanCard
→num
/name
/link
/img
- 执行顺序:广度优先遍历选择器树
注:所有选择器共享父级元素的DOM上下文,
multiple
为true时会产生数据数组嵌套结构
三、采集结果展示
1. 数据结构示例
{"num": "1","name": "肖申克的救赎","link": "https://movie.douban.com/subject/1292052/","img": "https://img9.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg"
}
2. 数据应用场景
- 电影推荐系统基础数据
- 影视行业分析研究
- 个人观影记录管理
- 数据可视化项目素材
四、技术原理进阶
1. 反爬虫机制规避
- 设置合理
delay
参数 - 使用代理IP轮换
- 模拟人类操作间隔
2. 性能优化技巧
- 分批次采集大规模数据
- 优先采集文本类数据
- 合理设置选择器范围