本次项目主要是针对某一主题,通过搜索引擎收集相关的新闻数据,同时也要对知乎的相关问答进行爬取,便于分析话题的关注热度。
本篇记录第一个任务构思过程,即编写爬虫代码收集数据。
- 数据来源:本次聚焦比较权威和大型的新闻网站,比如腾讯、新浪等,所以需要对url进行过滤。考虑到百度检索网页很多是机构页面,从百度资讯检索可以保证较高的时效性与新闻数量。因此,爬虫的总体结构确定为:
- 通过百度资讯的“媒体网站”分类下进行关键字检索,对信息来源进行过滤,提取信息。这个过程需要解析百度搜索界面的结果url,与网页检索不同,资讯界面url不需要进一步解析,直接就是资讯网页。当然,在选取目标站后,目标站的url结构和页面规则需要进一步分析,工作量还是比较大的。
- 通过百度资讯的“百家号”分类下进行关键字检索,百家号的url和界面结构具有统一性,解析应该较为简单,但同样应该选取可靠来源的信息,需要确定可靠作者名单。
- 对知乎进行关键字检索,爬取相关问答及文章,这一步骤主要是收集各文章的点赞数、评论数等,便于接下来对事件的热度分析。
- 数据存储方式:考虑到存储数据进行的逻辑运算比较少,并且对不同网页存储内容可能有所不同,暂定使用NoSQL中的MongoDB,与Redis manager相比,MongoDB的可视化工具RoBo是免费的,并且pymongo库操作也很简便。
- 数据结构的确定:对于每篇新闻,必须要记录的数据项包括页面URL(每次应用运行爬虫时,需要对新增数据与原有数据进行去重)、检索关键词、标题、作者、发布时间(便于确定话题发展趋势)、正文。
- 对于以上三类来源的数据,分别构建三个不同的collection。如果百度资讯的两部分,来源站点已经确定,也可以按照每个站点构建一个collection,避免一个collection中数据过多的现象。
- 点赞数、评论数、浏览量三个热度指标根据web界面提供的信息而定,尽量收集。
- 以上就是目前的构思,下一步就是构建具体的代码,爬取百度资讯和知乎的关键词检索页面,确定目标媒体网站与百家号,过滤url,对不同站点url和界面进行分析。