Portia:可视化网页抓取,不用写一行代码
Portia:可视化网页抓取,不用写一行代码
portia 在 GitHub 上已经拿到 9,501 Star 了。
Scrapinghub 开源了这个工具,专门干一件事:让你不用写代码,在浏览器里直接标注网页上的数据,Portia 自动学会怎么抓。
1、这玩意儿是干嘛的
就一件事:把网页数据提取从"写脚本"变成"画框框"。
打开目标网页,用鼠标圈选出你要的内容:标题、价格、描述、图片链接。Portia 会根据标注位置自动推断抓取规则。标注完一个页面,同类型的其他页面也都能用这套规则跑通。
对爬虫老手来说,XPath 和 CSS 选择器当然不在话下。但对数据分析师、运营、产品经理这些没有编程背景的人,Portia 降低了门槛:不需要理解 DOM 结构,不需要调试正则表达式,直接在可视化界面上手。
2、为什么要用它
写过爬虫的人都经历过这种循环:网站改版,选择器失效,重新调试,部署上线,然后又改版。
Portia 换个了思路。它让你做标注而不是写选择器。背后的引擎基于 Scrapy,会学习你标注的模式,生成的爬虫对页面结构的细微变化有一定容忍度。
另一个痛点是团队协作。爬虫代码散落在不同人手里,没有统一管理,交接成本高。Portia 提供可视化管理界面,项目存在本地目录,标注和抓取规则一目了然。

3、怎么跑起来
最简单的办法是用 Docker:
docker run -v ~/portia_projects:/app/data/projects:rw -p 9001:9001 scrapinghub/portia
然后浏览器打开 http://localhost:9001 就能看到 Portia 的 Web 界面。
如果想用 docker-compose:
git clone https://github.com/scrapinghub/portia.git
cd portia
docker-compose up
不用 Docker 的话,官方文档也提供了手动安装方式,包括依赖配置和本地运行步骤。
4、Portia 的工作原理
Portia 构建在 Scrapy 之上。Scrapy 是 Python 生态里最成熟的爬虫框架,调度、去重、并发、中间件一整套都有。Portia 做的事是把爬虫定义过程可视化:你在页面上画的标注,最终会转换成 Scrapy 的 Spider 定义。
具体流程:打开目标网页,在 Portia 内置浏览器中标注数据项,Portia 分析页面结构和标注位置,生成对应的抓取规则,应用到同类型页面。全程所见即所得。
标注完成后可以手动输入一列同类 URL 来测试抓取效果。数据预览和导出功能都内置在界面里,不需要额外写导出脚本。

5、适合哪些人用
- 数据分析师和运营人员:需要定期从网站上收集数据,但不会写爬虫代码
- 产品经理:需要快速验证某个数据源的可行性,不用等开发排期
- 爬虫团队:用 Portia 做快速原型,标注好规则后导出为 Scrapy 项目再深度定制
- 小型团队:一个人同时负责数据和业务,没精力维护爬虫代码库
Portia 的定位很明确:解决 80% 的简单抓取场景。页面结构清晰、不需要交互、数据量适中的任务,用 Portia 标注就能搞定。遇到复杂的登录流程、验证码处理或分布式调度,再回到 Scrapy 写代码。两者各司其职,互不替代。

浙公网安备 33010602011771号