您的位置:首页 > 新闻资讯 >文章内容
用爬虫代理爬取豆瓣电影榜单并构建知识图谱
来源: Python中文社区 KingShine 作者:admin 时间:2019-04-11 10:06:27

用爬虫代理爬取豆瓣电影榜单并构建知识图谱:想学习知识图谱,奈何没有数据,只能自己找,于是选择了豆瓣电影。首先我们要通过爬虫去爬取电影榜单,之后再进行知识图谱的构建的,那么如何实现呢?

一、分析问题

豆瓣电影Top250主页面看着信息比较完整,仔细看会发现主演内容不全,查看网页源代码。

直接爬取主页面,主演内容会获取不全。于是想到进入每个电影的详细页面进行爬取,打开第一个电影,可以看到如下。

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

信息比较全,所以决定数据从电影详细页爬取。
构建知识图谱首先选择所要存储的字段。经过考虑和大家的兴趣,主要探索导演、演员、电影的关系,再加上电影类型。所以确定所要爬取的字段为

  • 电影名称

  • 导演

  • 演员

  • 电影类型

本文的操作过程步骤如下:
第一步:从主页爬取到每个电影详细页的地址,进行存储
第二步:读取第一步中电影地址列表,依次爬取每个电影的信息,进行存储
第三步:对爬取的电影数据提取整合出知识图谱的结点和关系
结点:

  • 电影结点(电影ID,电影名称,标签)

  • 导演结点(导演ID,导演名称,标签)

  • 演员结点(演员ID,演员名称,标签)

  • 类型结点(类型ID,类型名称,标签)

关系:

  • 导演——电影关系(导演)

  • 演员——电影关系(出演)

  • 导演——演员关系(合作)

  • 电影——类型关系(属于)

第四步:将结点和关系导入Neo4j,生成图谱

二、爬取数据

一开始用的Scrapy框架爬取,获取电影URL比较简单,获取到的URL为下面样式:

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

下面对电影详细页进行爬取。

一开始继续使用scrapy,弄了半天,发现电影、导演、类型都爬下来了,可是演员怎么都获取不到。后来才注意到演员是JS动态生成的,真是浪费感情了。于是使用requests+BeautifulSoup来爬取数据。

代码如下:

读取详细页URL列表

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

遍历URL列表,爬取每个页面信息,将每个页面的信息存储在results列表

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

将爬取结果导出到CSV文件

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

导出的文件如下:

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

三、生成结点和关系

数据有了,下一步就是整理出所需要的可以直接导入到Neo4j的结点和关系文件。
结点:

  • 电影结点(电影ID,电影名称,标签)

  • 导演结点(导演ID,导演名称,标签)

  • 演员结点(演员ID,演员名称,标签)

  • 类型结点(类型ID,类型名称,标签)

提取结点的主要代码如下:

下面主要获得电影、导演、演员、类型的集合,方便ID编码

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

下面生成电影、导演、演员、类型的ID

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

拼接结点数据

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

生成结点文件

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

关系:

  • 导演——电影关系(导演)

  • 演员——电影关系(出演)

  • 导演——演员关系(合作)

  • 电影——类型关系(属于)

读取以上生成的结点文件

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

遍历文件,拼接出关系表,主要代码如下:

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

导出到CSV

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

这样所需要的结点和关系文件就生成好了

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

director.csv文件格式如下:

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

relationship_director_film.csv文件格式如下:

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

四、导入Neo4j,生成图谱

使用如下语句导入

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

需要注意的是,这种导入方式需要保证你的数据库中没有movie.db,否则会报错。因为Neo4j默认的数据库为graph.db,所以导入成功后,需要修改neo4j.conf文件,才能查看刚才生成的数据库。修改如下:

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

重新启动Neo4j后,你就会看到你的数据了。
我们来查看一下效果。

用爬虫代理爬取豆瓣电影榜单并构建知识图谱

以上介绍了用爬虫代理爬取豆瓣电影榜单并构建知识图谱的整个过程,可供参考。

相关文章内容简介
推荐阅读
  • 19 2019-10
    哪种代理方式能够真正隐藏IP?

    透明代理、匿名代理、高匿代理,大家在选择代理IP的时候,相信对这几个名词不陌生。但是你知道用哪一种代理方式,才是能够真正起到隐藏我们真实IP的作用吗?

  • 09 2019-10
    如何使用代理IP爬取搜狗微信文章?

    如何使用代理IP进行搜狗微信文章爬取?网上看到有不少相关的文章,这类爬取自然是少不了使用代理IP跟反爬机制的破解,机灵代理总结了以下教程,方便大家能够在使用的时候进行参考。

  • 04 2020-01
    国内专业代理ip​怎么找?

    国内专业代理ip​怎么找?很多的用户对国内地址的代理ip需求量巨大,他们通常是做营销或者数据爬取等等的。如果需要大量的中国的代理ip,哪家是不错的呢?价格如何?质量如何?数量如何呢?

  • 12 2019-08
    代理服服务器设置隐藏真实IP

    代理服服务器设置隐藏真实IP,这个代理去哪找呢?现在几乎每个跟网络有关的软件都提供“代理设置”了,只要简单设置一下就可以把真实的IP隐藏起来,取而代之的是代理IP。现在就说说隐藏

  • 14 2019-10
    解析短效代理IP的使用优点

    代理IP有这么多不同的选择,短效的代理IP是什么类型?选择它对我们的业务有什么好处呢?今天,机灵代理给大家分享下这个话题,为大家日后选择提供帮助。

  • 10 2019-04
    搭建IP代理池步骤:IP的获取、存放、检测、外部接口

    搭建IP代理池步骤有哪些?在公司做分布式深网爬虫,搭建了一套稳定的IP代理池服务,为上千个爬虫提供有效的IP代理,保证各个爬虫拿到的都是对应网站有效的IP代理,从而保证爬虫快速稳定

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部