3

GneList 来了!抓取列表页-极-其-简-单!

 2 years ago
source link: https://www.kingname.info/2022/03/09/this-is-gnelist/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

GneList 来了!抓取列表页-极-其-简-单!

发表于

2022-03-09

| 分类于 Gne

| 评论数: 0

Gne发布以后,大家自动化抓取新闻正文页的需求被解决了。但随之而来的,不断有同学希望能出一个抓取列表页的工具,于是,就有了今天的 GneList。

GneList 是什么

GneList是一个浏览器插件,专门用来生成列表页的 XPath。使用这个 XPath,你可以快速获取到列表页中的每一个条目。

GneList 怎么用?

GneList 的使用非常简单,几乎不需要说明。

  1. 打开带有列表的页面
  2. 输入名字,点击开始抓取
  3. 鼠标点击列表的前两项,GneList 会自动选中所有项
  4. 点击提交按钮
  5. 去数据库查看 XPath

怎么安装 GneList?

GneList 由两个部分组成:插件端与后端。

插件端的下载地址:https://github.com/GeneralNewsExtractor/GneList/releases/download/0.1/GneList.zip

后端的代码:https://github.com/GeneralNewsExtractor/GneListBackend ,并且后端依赖 MongoDB。

首先确保你有一个可以连接的 MongoDB,我们假设它的 URI 是:mongodb://localhost。从 Github上面 clone 后端的代码:https://github.com/GeneralNewsExtractor/GneListBackend.git

进入后端代码的根目录中的 config 文件夹中,你会发现一个local.yml文件。打开它,第一行填写 MongoDB 的 URI 地址,第二行是数据库名,第三行是集合名。插件生成的 XPath 会保存在这里供你的下游调用。

改好配置文件以后,回到后端的根目录,分别执行如下命令(你需要先安装 Pipenv):

pipenv install
pipenv shell
export local # 你自己创建的 yml文件的名字
uvicorn main:app --port 8800 --host 0.0.0.0 # 使用8800端口

命令执行完成后,如果你使用浏览器访问http://127.0.0.1:8800,应该会看到下图的内容,说明后端搭建成功。

2022-03-08-22-40-38.png

GneList 插件支持所有基于 Chromium 内核的浏览器,包括但不限于 Chrome/Chromium/Edge。

从上面的地址下载GneList.zip后,把它解压到任何一个文件夹中,如下图所示:

2022-03-08-22-45-08.png

然后打开你的浏览器的插件管理页面,启动开发人员模式,例如下图是我在 Edge 中开启开发人员模式的方法。

2022-03-08-22-47-02.png

然后点击右上角的加载解压缩的扩展,选中GneList文件夹。完成。

现在,刷新已有的列表页,或者重新开一个新的列表页,然后点击插件,试用一下吧。

管理配置页面

在插件上右键,选择扩展选项。Chrome 上面,名字可能是叫做选项或者英文Options。可以打开如下图所示的页面:

2022-03-08-22-51-06.png

如果你没有启动后端,或者后端地址不是http://127.0.0.1:8800(例如你把后端部署在服务器上,需要使用 IP 或者域名来访问,或者端口不是8800),那么这个页面应该如上图所示。

你可以把输入框中的地址改为后端地址/rule,例如http://123.56.78.99:8888/rule。然后点击提交按钮。接下来刷新页面,你就可以看到如下图所示的内容:

2022-03-08-22-54-35.png

这个页面显示了你已经添加的所有网站的XPath,你可以对他们进行修改或者删除。

为什么插件生成的 XPath 这么奇怪?

因为这些 XPath 是从 CssSelector 转成的 XPath,我用了一个第三方的 JavaScript 包。那个包转出来的就是这么奇怪。但不影响它的功能。我后面会更换更好的包,让 XPath 变得更好看。

我的爬虫怎么使用这些 XPath?

还记得一开始配置的 MongoDB 吗?让你的爬虫去里面读取就可以了。

为什么我启动插件以后,点网页上面的元素第一次没有反应?

第一次点击的时候,如果发现没有生成红框框,就多点一下。看到红框框了再点第二个元素。

GneList 的原理是什么?

接下来的几篇文章,我会介绍 GneList 的原理。如果你等不及的话,也可以到 Github上查看源代码。GneList 与 Gne 一样,他们是站在其他优秀开源项目的肩膀上做出来的,尤其是受到 web-scraper-chrome-extension的启发。因此,GneList也是完全开源的,允许非商业使用。

谢乾坤 | Kingname wechat
第一时间获取最新文章更新,请订阅我的微信公众号:未闻Code

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK