发布于2026-07-22 阅读(0)
扫一扫,手机访问
最近在做一个可配置的爬虫模板,目标是能快速扩展新的抓取业务,最终做成一个可视化的配置服务。目前还在进行中,思路有些卡壳,所以打算翻翻市面上已有的轮子,看看能不能找到新的灵感。
Docker 安装完成后,拉取 Portia 服务项目即可。
# <..FOLDER> 路径自定义即可,可在后面加上 portia 的版本 docker run -i -t --rm -v:/app/data/projects:rw -p 9001:9001 scrapinghub/portia # git 上是如下语句 docker run -v ~/portia_projects:/app/data/projects:rw -p 9001:9001 scrapinghub/portia
具体细节可以参考官方文档。
Portia 安装完成后,用浏览器打开 http://localhost:9001,在“Create a new project”中输入项目名。

点击“New spider”创建一个新的 spider。右侧边栏会提示输入一个 URL,Portia 会将这个 URL 作为 start page(起始页)。这个 start page 通常被当作 seed(种子),用来获取更多的链接。

Portia 支持创建 page sample(页面样本)。创建了页面样本后,就可以调度后续任务按照设定的模板抓取元素。所以,我们需要先创建这样的模板。
创建 sample 后,就可以开始注释页面了。注释会将页面中的一条数据链接到项目字段,而这些就是我们想要提取的数据。

给字段命名,选择数据类型。

Portia 默认会遵循所有域内 URL。但在很多情况下,我们需要限制 Portia 访问的页面,避免在不相关的页面上浪费请求。为此,可以分别设置“跟随”和“排除”的白名单和黑名单 URL 模式。通过将爬网策略改为“Configure URL patterns”来配置这些。

到此操作结束。可以在最右侧看到我们选中的项目。将所有需要提取的 items 注释完后,关闭样本(Close Sample)。如果以后需要再添加其他元素,可以继续配置此样本,方便后续抓取。
最后,在右侧可以看到我们需要的数据,JSON 格式如下。
配置好了 sample page 和 start pages,接下来就是正式抓取数据了——将数据保存到 JSON 文件或者数据库中。这里我们以保存成 JSON 文件为例。
官方给出的代码如下:
docker run -i -t --rm -v PROJECTS_FOLDER:/app/data/projects:rw -v OUPUT_FOLDER:/mnt:rw -p 9001:9001 scrapinghub/portia \ portiacrawl /app/data/projects/PROJECT_NAME SPIDER_NAME -o /mnt/RESULT.json
其中可以更改的是大写的部分:PROJECTS_FOLDER(项目文件夹)、OUPUT_FOLDER(输出目录)、PROJECT_NAME(项目名)、SPIDER_NAME(Spider 名字)、RESULT.json(保存结果的文件名)。
注意:启动程序前必须先关闭 Portia 的调试页面。这里我直接使用 kill 命令,因为在 docker 启动的终端按下 Ctrl+C 或 Ctrl+Z 都无效,只能用进程关闭。
举个例子,我的启动代码如下:
docker run -i -t --rm -v ~/portia_projects:/app/data/projects:rw -v ~/result:/mnt:rw -p 9001:9001 scrapinghub/portia \ portiacrawl /app/data/projects/tingyun tingyun.site -o /mnt/tingyun.json
运行成功就能看到代码在飞快地跑了,而且抓取的都是我们想要的 items。
到这里,Portia 的抓取之旅就告一段落了。通过使用 Portia,确实能实现快速、简易的抓取功能,并且将抓取过程可视化地呈现给操作者。还有其他有趣的功能,后续学习过程中遇到再继续分享。接下来会试着将它用到一些大规模的抓取场景中,看看实际效果如何。关于 Portia 的更多内容,可以继续关注本站后续文章。
下一篇:CTFAWD入门学习手册
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8