爬虫实战-3-“朝俄韩关系”主题爬虫


一、爬取主题

朝俄韩关系

二、关键技术

img

图2.1 网络爬虫的系统结构[1]

网页获取

基本原理是模拟浏览器进行HTTP请求,爬虫客户端通过HTTP请求向web服务器发送请求,获取服务器端的响应后下载网页,完成爬虫系统的爬取工作(requests、urllib、Scrapy)。

本次使用requests库模拟浏览器向服务器发送请求。

img

图2.2 网页获取模块

网页解析

一个网页去噪的过程,主要是网页内容正文抽取,提取网页中的内容时需要分析页面的HTML结构,从中提取页面的有效信息。

常见方法有通过BeautifulSoup对HTML结构解析、利用正则表达式抽取文本数据。

BeautifulSoup主要是Xpath和CssSelector方法,针对网站的HTML标签可以提取出所需要的有效信息,可以选择tag、id、class等多种方式进行定位选择。

但在复杂的页面结构中,需要采取正则表达式来提取有效信息。

这里使用BeautifulSoup、urljoin结合对网页的分析来进行有效信息的提取。

wps3

图2.3 网页解析模块

数据存储

爬虫抓取的数据一般有两种存储方式:本地保存,如CSV、Excel格式,或直接存储到数据库。

一般写入数据库时采取爬一次数据就进行一次向量化清洗并入库,避免出现一些网络错误时已爬数据失效。

这里保存在本地csv文件中,内容包括:url、title、similarity、content。

wps4

图2.4 数据存储模块

主题判别

主要是判断爬取网页的主题相关性,大多被当做一个文本分类的问题来探索,目前结合网页中链接的锚文本、网页标签等来计算网页中URL与主题的相关度。

常用的主题相似度判别算法有:

  1. 向量空间模型:将文本处理转换为在向量空间上的向量运算,将每一篇文档表示为向量空间上的某一维度,通过计算向量在空间的相似度来衡量文档之间的相似度。
  2. 语义相似度:主要问题是自然语言处理中语义理解,文本语义通常分析分词、统计词频。

这里尝试使用TF-IDF+关键词匹配度+余弦相似度来判断相关度:

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆向文件频率)是一种用于评估一个词在一个文档中的重要程度的算法,考虑词在文档中的频率(TF)以及在所有文档中出现的频率(IDF),通过两者相乘得到TF-IDF值,TF-IDF权值越高,重要性越高。

wps5

图2.5 TF计算公式(词在文档中出现次数/文档中总次数)

wps6

图2.6 IDF计算公式(log(总文档数/包含词的文档数+1))

wps7

图2.7 TF-IDF计算公式(TF与IDF相乘)

余弦相似度(Cosine Similarity)计算两个向量夹角的余弦值,用于衡量他们之间的相似度。

wps8

图2.8 余弦相似度计算公式

wps9

图2.9 主题判别模块

网页搜索策略

主要目的是使爬虫有次序、有目的地搜索,运用合理的搜索策略可以保证主题爬虫选择更合理的爬行路径。

分为静态搜索策略和动态搜索策略,区别是有无事先确定搜索规则:

静态:依照确定的规则进行搜索,不会改变。

动态:根据相关度实时调整搜索路线,分为基于文本内容(Fish-Search、Shark-Search)和基于链接关系的搜索(PageRank、HITS、HillTop)。

这里主要使用静态搜索策略,设置待访问、已访问链接列表和计数器,从主页出发,不断爬取链接,对于非文章类链接,深入爬取,直至文章。

wps10

图2.10 网页搜索策略

三、问题及解决

问题:网站文章页面url的标识经过了编码,暂未发现可遍历规律:

img

图3.1 爬取策略问题

解决:

从主页开始爬取,分为两种策略:

  1. 爬取到分类链接时,即以’/’结尾,则保留待继续爬取;
  2. 爬取到文章链接时,即包含’/c/’,则直接开始解析。

问题:使用TF-IDF+余弦相似度来判断相关度极低,无法爬取有效数据:

解决:

使用jieba分词,加入关键词频统计与TF-IDF+余弦相似度结合计算(目前效果不是很好,待改进):

img

图3.2 相似度计算问题

问题:爬虫未设置停止条件:

解决:加入计数器,设置最大爬取文章数和未访问链接及已访问链接。

img

图3.3 爬虫结束问题

四、爬取结果示例与思考

图4.1 爬虫结果示例

从示例上看,虽然该文章完全符合预期主题,但是相关度仅是0.5,可能是相关度计算模块的TF-IDF方面并没有起到作用,而分词方面为1所致,需要后续对相关度计算研究学习。此外该次爬取的文章符合主题的并不多,大部分是少量相关,对于爬取技术方面还有所欠缺。

整体来看,参考相关文献,对主题爬虫的过程基本实现,但若要达到实用且高效的程度,还需继续完善。

五、参考文献

[1] 潘晓英,陈柳,余慧敏,等.主题爬虫技术研究综述[J].计算机应用研究,2020,37(4):961-965,972.