Scraperr能从网页中抓取数据
什么是 Scraperr ?
Scraperr
是一个自托管的Web
应用程序,允许用户通过XPath
指定元素从网页中抓取数据。用户可以提交要抓取的URL
和相应元素,结果将显示在表格中。用户可以下载作业结果的Excel
表,以及重新运行该作业的选项。
反向代理
安装完成后,如果直接用 IP
访问,虽然能看到主界面,但是点什么都反应,所以我们需要通过反代实现域名的解析。
官方用的是 traefik
,这个老苏不熟悉,所以换成了 nginx proxy manager
因为无公网访问需求,本文采用了 tailscale + npm
方案
文章传送门:用自定义域名访问tailscale节点
假设我们实际访问地址为: https://pc.xxsu.cf
域名 | 局域网地址 | 备注 |
---|---|---|
pc.xxsu.cf |
http://192.168.0.197:8124 |
Scraperr 的访问地址 |
在 npm
中的设置
SSL
都勾选了
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 scraperr
,选择第一个 jpyles0524/scraperr
,只有一个 latest
版本,双击直接下载
采用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
1 | version: '3' |
注意事项:
- 为避免在某些机器上出现指令不兼容的情况,
WARNING: MongoDB 5.0+ requires a CPU with AVX support, and your current system does not appear to have that!
,老苏用了mongo:4.4.29
,而不是mongo:latest
; - 如果
MONGO_INITDB_ROOT_USERNAME
和MONGO_INITDB_ROOT_PASSWORD
修改了,MONGODB_URI
要相应的变化; HOSTNAME
:设置为域名;
然后执行下面的命令
1 | # 新建文件夹 scraperr 和 子目录 |
运行
在浏览器中输入 https://pc.xxsu.cf
就能看到主界面,
第一次要注册账号,点 Login
–> NO ACCOUNT? SIGN UP
注册成功会有提示
登录成功后
用法
测试抓个标题看看,还是以老苏的博客为例
URL
:老苏的博客地址为https://laosu.tech
Multi-Page Scrape
:看需要,这里没有勾选,所以只会抓取第一个(后来测试勾选了会失败)Name
:因为是抓标题,所以输入了title
XPath
:可以在浏览器中获取到/html/body/main/div[2]/div[1]/article/header/h2/a
点 +
号添加,可以设定多个条件
点 submit
提交到任务队列
很快就有结果
可以下载 Excel
文件
API
Scraperr
提供了 API
,打开 https://pc.xxsu.cf/docs
可以找到该 API
的文档页面
参考文档
jaypyles/Scraperr: Self-hosted webscraper.
地址:https://github.com/jaypyles/ScraperrUpdate to Self-Hosted Webscraper “Scraperr” : r/selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/1e8ryua/update_to_selfhosted_webscraper_scraperr/