用爬虫自建行业知识库

几年前用 Python 写过一个程序,自动抓取各市文化局网站相关栏目文章,然后把抓到的文章,写成离线网页,发到指定邮箱。

当时针对每个网页写一个爬虫,对每一个网页都进行分析。比如,标题是什么,发布时间在哪,正文内容如何保存等等。因为工作量慢慢变大,后来就把它放到代码库里吃灰。

现在,每天要采集整理各地文旅信息,去年年底又重新捡起之前的代码。

重构了一遍代码,大体实现自动抓取全省16个市局、文化报、旅游报、相关文化机构、多数省级文旅部门网站的每日更新信息。最后写了一个网页,动态呈现抓取信息。

现在,每天早上程序自动运行,逐个查看各地文旅网站更新了没有,更新了什么,并对信息库进行同步。

总体实现步骤如下:

第一步:用查看每一个信息源(网站)的更新情况,只抓取主页上的两项信息,即链接标题、链接地址,以文本文件形式保存到本地。

通过多个程序分别对全省16市文旅部门及相关机构、省级文旅部门、文化报、旅游报、副省级城市文旅部门网站进行访问。

第二步:将信息保存到本地,与数据库表已有记录进行比对,如果数据库表中不存在相同的记录,则对数据库表进行更新。

第三步:所有代码及数据更新后同步到代码库。

第四步:写一个网页(内网使用),对数据库中信息分类呈现,并提供检索功能。

第五步:通过脚本(windows 环境的自动批处理文件),依次调用第一步、第二步里的多个程序,加入操作系统的任务计划程序定时运行。

工作流程共五个环节:获取、更新、同步、呈现、运行。

以上工作量最大的是第一步,即信息获取。

由于每个信息源的最新信息、主要信息,一般会在网站主页呈现,所以只需关注主页更新即可。

这里的技术难点,主要有两个:

1、不同的信息源(网站)保存信息的方式不同,需要分别处理。

2、少数信息源(网站)采用特殊设置,要避开这些特殊设置,需要对网站进行深入分析和调试,这给自动获取信息带来一些困难,有些甚至解决不了。

这是一个非常小的、相当简陋的项目,实现过程中有一些收获。

其中,最大的收获是可以更方便地了解各地文旅动态,不用再逐个翻看网站,节省了不少时间。

其次,在实现过程中也进一步熟悉了相关技术。比如,如何用 python + Selenium 模拟网页访问;如何避开网站的一些特殊设置;如何使用 python + Sqlite 操作数据库;如何用 python + flask 写动态网页,包括网页模板、检索功能实现等;如何使用 Git;如何自动化工作流程,等等。此外,通过代码重构还加深了对程序模块化设计的理解。

信息采集是一个常见的需求。

大的搜索引擎,如百度、谷歌、搜狗、必应等,都是基于信息采集而发展起来的"重型武器"。对大多数行业来说,可能不需要这大的"火力",仅需要自身行业的信息库。

基于浩如烟海的网络信息,建立属于行业自身的信息库,并不断更新,是必要且必须之事。

还可以做哪些扩展?

从内网到外网使用,从PC端到移动端,搜集更多数据,整理更多信息,挖掘更多知识,呈现更多智慧......

相关推荐
Java 码农3 分钟前
Centos7 maven 安装
java·python·centos·maven
倔强青铜三1 小时前
苦练Python第63天:零基础玩转TOML配置读写,tomllib模块实战
人工智能·python·面试
浔川python社1 小时前
《网络爬虫技术规范与应用指南系列》(xc—3):合规实操与场景落地
python
B站计算机毕业设计之家1 小时前
智慧交通项目:Python+YOLOv8 实时交通标志系统 深度学习实战(TT100K+PySide6 源码+文档)✅
人工智能·python·深度学习·yolo·计算机视觉·智慧交通·交通标志
IT森林里的程序猿1 小时前
基于机器学习方法的网球比赛胜负趋势预测
python·机器学习·django
正牌强哥1 小时前
Futures_ML——机器学习在期货量化交易中的应用与实践
人工智能·python·机器学习·ai·交易·akshare
倔强青铜三2 小时前
苦练Python第62天:零基础玩转CSV文件读写,csv模块实战
人工智能·python·面试
郝学胜-神的一滴2 小时前
Effective Python 第43条:自定义容器类型为什么应该从 `collections.abc` 继承?
开发语言·python
银行数字化转型导师坚鹏2 小时前
如何设计优秀的企业微信私域运营实战培训方案
大数据·python·企业微信
jerryinwuhan3 小时前
最短路径问题总结
开发语言·人工智能·python