RSS 进阶篇:Huginn - 真·为任意网页定制 RSS 源(PhantomJs 抓取)

烧制网页RSS源主要有FEED43Huginn两种方法。

  1. FEED43:简单免费,六小时抓取一次,每次抓取20条静态页面。使用攻略- RSS 入门篇:FEED43&FeedEx-为静态网页定制 RSS 源

2. Huginn:自由度高,可设定抓取频率、内容结构、js结果、输出样式等;需要搭建服务器,学习Huginn抓取规则

Huginn 准备工作

  1. 准备一台 Debian/Ubuntu 环境的服务器
  2. Qi大的攻略搭建Huginn,也可以直接看Huginn 官方搭建攻略

准备工作完成后,我们已经可以使用 Huginn 抓取页面了。但很多网站都是用 JS 加载动态内容,需要通过 PhantomJs Cloud 抓取页面 JS 缓存。

————————

Huginn + PhantomJs Cloud 全网页抓取

一、Phantom Js Cloud API key 获取

注册 PhantomJs Cloud ,然后将 API key 保存在 Huginn 的 Credentials 中。

新建 Huginn 任务组 Scenario 「国内应急新闻」,抓取链接 cneb.gov.cn/guoneinews/

二、Phantom Js Cloud Agent 抓取页面缓存

Name: 国内应急新闻 #1 获取 JS 缓存

Schedule: Every 1h

三、WebsiteAgent 获取页面详情

Name: 国内应急新闻 #2 抓取全页

Sources: 国内应急新闻 #1 获取 JS 缓存

Schedule: Every 1h

四、css path 路径获取

  1. 使用火狐浏览器打开抓取页面
  2. 按下F12, 然后点击 Developer Tools 左上角的检查指针

3. 选中要抓取的部分

4. 回到 Developer Tools 窗口,右键选中的蓝色部分,获取 css path、Xpath。这里以 css path 为例。

5. 处理 css path 路径

html body div.area.areabg1 div.area-half.right div.tabBox div.tabContents.active table tbody tr td.red a

css path 原始路径过长,删去不带 .# 的节点(节点间以空格“ ”分割),并删去每个节点在 .#前的第一个标签,得到:

.area.areabg1 .area-half.right .tabBox .tabContents.active .red a

前半部分对节点定位无用,继续省略(比如:中国上海,省略掉中国,大家也知道上海在哪)

.tabContents.active .red a

非常规情况处理

a. 有些路径中的节点带空格,如<div class="packery-item article">,路径中的空格由.代替,截取为.packery-item.article

b. 当抓取多种 css path 规则时,用逗号,分割

"css": ".focus-title .current a , .stress h2 a",

五、DataOutputAgent 导出 RSS

Name: 国内应急新闻 #3 排序生成RSS

Propagate immediately: Yes

回到Scenarios, 点击最后一步的 Actions - Show ,复制导出的xml链接 http://xxx.xxxxxx/users/1/web_requests/xxx/xxxx.xml

详细设置的使用文件-百度网盘下载

其他问题,查看官方说明-PhantomJs Cloud 英文使用攻略

编辑于 2019-05-14

文章被以下专栏收录