网站一般由栏目页和内容页组成。首页、主题、搜索结果等也可视为栏目页。 采集网页数据,即从栏目页获得内容页地址列表,从内容页提取所需数据。 网页数据采集有着广泛的用途。例如,金融数据采集分析,门户新闻实时监控,监控电商的库存变化/价格变化,舆情分析,客户资料采集,短视频/文章同步发布到各平台。因此,掌握好这门技术,是非常有必要的。 现在,我们做一个热点新闻推送到手机的功能。我们以某门户站点的新闻热搜榜单为采集对象,采集结果将发布到企业微信。 页面分析使用Chrome浏览器,按F12打开浏览器的开发者工具,再打开门户站点。查看“网络”面板的访问列表,逐个查看,进而找到热搜的请求地址: https://www.xxx.com/hot-event/hot-board/?origin=xxx_pc&_signature=********* 。这个地址后面带了_signature,我们去掉试试,直接访问 https://www.xxx.com/hot-event/hot-board/?origin=xxx_pc ,发现可以打开。由此得出结论,仅仅采集该地址,即可获得实时热搜榜单。如下图。
页面分析
新建采集规则打开“蜜蜂采集器”。在左侧的“采集任务列表”上右键点击,弹出菜单中选择“添加采集任务”--“添加采集任务”。 采集任务的“基本设置”中,设置采集任务的名称为“热点新闻推送到手机”。其他默认。 采集任务的“列表页”中,添加“普通网址”,内容为https://www.xxx.com/hot-event/hot-board/?origin=xxx_pc。
采集规则之列表页
如上图。点击下方“实时输出”窗口的网址,在弹出菜单中选择“测试网址采集”。 网址采集采集任务的“网址采集”中,测试完毕后,展开下方“调试”区域的左侧调试日志列表,选择第一个“Http请求”日志,查看右侧的“响应内容”的选项卡标签,再复制其下方的具体内容。可以看到,这个具体内容就是热搜榜单的具体数值列表,数据格式为JSON格式。
采集规则之网址采集
复制这个JSON内容,再选择上方规则区域的“JSON分析工具”,将内容粘贴到“JSON分析工具”的左侧区域。
JSON分析工具
如图,选中“Url”行,可以看到,JsonPath表达式为["data"][0]["Url"]。所以,“网址”标签的采集规则(JsonPath)为["data"]["Url"]。但这个链接太长,我们使用浏览器打开对应的新闻链接,发现实际网址是 https://www.xxx.com/trending/7189954117882609668/?rank=4&log_from=9bc734edafd3a_1674090438028 这样的结构。其中rank是排名,这个是动态变化的,因此,应该从网址中过滤掉rank参数。所以,只需要 https://www.xxx.com/trending/7189954117882609668/ 这样的结果即可。所以,再添加一个“标签数据二次处理”项————“字符串替换”,通配规则为topic_id=[参数],替换规则为https://www.xxx.com/trending/[参数1]。
“网址”标签的采集
类似的,我们再增加一个“标题”标签,采集规则(JsonPath)为["data"]["Title"]。“封面”标签,采集规则(JsonPath)为["data"]["Image"]["url"]。“热度”标签,采集规则(JsonPath)为["data"]["HotValue"]。 如果以此采集,每次采集到50条记录,一天内多次采集,可能有上百条数据。因此,我们过滤一下。可以看到,这50条记录中,只有少量的Label值是hot,以此作为过滤条件。再增加一个“热门”标签,采集规则(JsonPath)为["data"]["Label"],并设置“内容过滤处理”必须包含“hot”字符串。如图。
内容过滤处理
内容采集采集任务的“内容采集”中,设置“热门”标签为临时标签。临时标签不入库。因为“热门”标签仅仅用来过滤网址列表,无需入库。
临时标签
采集任务的“内容采集”中,“内容”标签的采集。“内容”标签采集的是热点新闻的概要。所以,先采集 https://www.xxx.com/trending/7190322924799131705 ,即“热点新闻专题页”,获取里面的第一个新闻链接。再访问新闻链接,获取里面的新闻概要。如果“热点新闻专题页”中无法获取到新闻链接,则新闻概要为空。 因此,提取新闻链接的采集规则(XPath)为//div[@class="feed-card-article-l"]/a/@href。XPath可以通过浏览器的开发者工具获取,请参考相应文档。 随后勾选“标签数据二次处理”,并添加“网址补全/Http请求”项。 再添加一个“字符串截取”项,用于从“新闻链接页面”提取概要。起始字符串为<meta name="description" content=",结束字符串为"/>。 再添加一个“添加内容前后缀”项。 字符串后缀: 字符串后缀: 原文:[标签:原文地址]热度:[标签:热度][标签:封面]
考虑到“内容”标签可能为空,“添加内容前后缀”时,取消勾选“内容为空时,不添加前后缀”。
添加内容前后缀
再添加一个“原文地址”标签。设置“数据来源”为“从网址中提取”,并且提取方法为“字符串截取”,起始字符串和结束字符串均为空。
原文地址
测试采集规则。点击下方的“测试”,测试是否正常执行。在“网址采集”的测试窗口,双击记录项 或 点击“测试内容采集”,即可获得测试网址。
测试内容采集
注意:测试采集时提示“您需要允许该网站执行 JavaScript”,这是未设置Cookie所致。在管理器“Cookie管理”中添加Cookie项,在采集规则的“基本设置”中设置Cookie,即可。 内容发布打开主菜单“帮助”——“应用市场”。类型选择“内容发布插件”。找到插件“发布到企业微信应用”,点击“下载”。
应用市场
导入插件
如果没有可用的PHP“外部程序”,请下载PHP,并添加到“外部程序管理中”。 点击“保存”后,即创建了一个“发布到插件”的发布配置。 打开管理器“发布到插件”,选中刚刚添加的发布配置,点击“修改”。填入您的企业微信开发者帐号信息。touser / toparty / totag 至少填写一个,不能全部留空;corpid / corpsecret / agentid 必填。
发布到插件
切换回采集规则编辑窗口。添加“发布到插件”(点击工具栏“发布到站点”后面的下拉图标),并指定发布参数为刚刚添加的发布配置。点击下方的“测试”,测试是否正常执行。在“内容采集”的测试窗口,双击记录项 或 点击“测试内容发布”,即可获得测试数据。
测试内容发布
计划任务打开主菜单“视图”——“计划任务”。添加一个计划任务,执行周期为10分钟。
计划任务
至此,就实现了我们自己的热点新闻推送。
|