Python实战案例:金庸的功夫流派、人物关系的分析案例(上)

Python实战案例:金庸的功夫流派、人物关系的分析案例(上)

 

一、项目说明

在香港的探案剧中, 经常见到这样的场景,为了分析某一桩谋杀案或者是失踪案,会把案件的可疑人员和与被害者的关系人员全部找出来,构建一个关系网。对关系网中的每一个人分析其做案动机。如下图所示。

Python实战案例:金庸的功夫流派、人物关系的分析案例(上)_第1张图片

类似上图这种网络关系的图表,可能使用python的networkx来进行网络关系图的绘制。不过,这里没有案件,这里没有被害人。我们以金庸的人物、武功及小说原文来说明networkx的使用,这也可以说是金庸的功夫流派、人物关系的分析案例。

二、金庸小说爬取

要完成金庸的功夫流派,人物关系的分析,首先需要爬取金庸的小说内容,然后爬取金庸小说中的人物,再去爬取金庸小说中的功夫密籍,也要去爬取金庸小说中的门派。

这里先爬取金庸小说的数据,爬取的网站是http://www.jinyongwang.com,进入页面后,点击导航中的“金庸小说阅读”。页面如下图所示。

Python实战案例:金庸的功夫流派、人物关系的分析案例(上)_第2张图片

可以看到图中数据有金庸小说的修订版、新修版和旧版。这里爬取的数据为金庸小说修订版的所有文本数据。使用的模块就是requests和lxml.

首先用requests.get()方法获取网页http://www.jinyongwang.com/book/中所有代码。可以添加请求头headers={“User-Agent”:”Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36”}

这样,requests的请求语句就变成了。

res=requests.get(“http://www.jinyongwang.com/book/”,headers=headers)

在这句代码中,res存储的就是请求这个页面后的结果.get中的参数headers=headers的作用就是在请求的时候模拟浏览器的效果.

获取代码后的结果数据是保存在res.content中,把res.content中的数据进行decode(“utf8”)解码,就可以把形如”\0304”这样的代码解析成”utf8”编码的汉字.代码如下.

result=res.content.decode("utf8")

接下来用lxml进行网页数据的提取.

首先需要调用lxml中的etree方法,然后通过etree.HTML(请求响应结果)将获取的结果形成树,最终使用xpath从树结构中选取网页元素.相关代码如下.

from lxml import html
etree=html.etree
html_result=etree.HTML(result)

接下来要xpath技术提取网页中包含的书的名字及书详情内容的链接地址页.

在金庸书名列表页的”查看网页元素"后的效果图如下所示.

Python实战案例:金庸的功夫流派、人物关系的分析案例(上)_第3张图片

从上图的html树形结构中可以看出,在

这个元素内部包含了3个

你可能感兴趣的:(Python开发,爬虫,Python数据分析,python,爬虫,数据分析)