美文网首页
豆瓣电影 知识图谱 Neo4j

豆瓣电影 知识图谱 Neo4j

作者: 苍简 | 来源:发表于2019-04-08 21:26 被阅读0次

转载自公众号:python-china

作者想学习知识图谱,奈何没有数据,只能自己找。于是选择了豆瓣电影。网址:

https://movie.douban.com/top250?start=0&filter=
image

一、分析问题

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

image

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

image

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

  • 电影名称

  • 导演

  • 演员

  • 电影类型

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

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

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

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

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

关系:

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

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

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

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

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

二、爬取数据

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

image

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

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

代码如下:

读取详细页URL列表

image

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

image

将爬取结果导出到CSV文件

image

导出的文件如下:

image

三、生成结点和关系

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

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

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

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

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

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

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

image

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

image

拼接结点数据

image

生成结点文件

image

关系:

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

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

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

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

读取以上生成的结点文件

image

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

image

导出到CSV

image

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

image

director.csv文件格式如下:

image

relationship_director_film.csv文件格式如下:

image

四、导入Neo4j,生成图谱

使用如下语句导入

image.gif

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

image

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

image image

相关文章

  • 豆瓣电影 知识图谱 Neo4j

    转载自公众号:python-china 作者想学习知识图谱,奈何没有数据,只能自己找。于是选择了豆瓣电影。网址: ...

  • 初识Neo4j - 图数据库

    起个头:由于涉及知识图谱的项目需要,接触到Neo4j图形数据库,就想写个笔记,做个分享,督促自己。 知识图谱: 简...

  • py2neo V4 极简使用指南:Python操作Neo4j图数

    Neo4j的介绍可以参考这篇文章:《知识图谱技术与应用指南(转)》 其实,Python操作Neo4j,既可以用ne...

  • 记一个 neo4j 与 py2neo 的 match 语句的坑

    最近项目中需要使用 neo4j 构建知识图谱。在师兄建议下使用了 py2neo ,而不是 neo4j 官方的api...

  • Neo4j数据库Linux 单机安装笔记

    一、简介 最近这段时间一直在搞知识图谱的一个项目,简单搭建Neo4j数据库测试一下,小结一下搭建过程。知识图谱场景...

  • Neo4j安装教程

    最近再做企业与纳税人关联关系知识图谱,接触到图数据库,经过一番比较后,选择Neo4j图数据库作为知识图谱项目的数...

  • Neo4j的简单介绍

    在构建知识图谱的时候,Neo4j用来建立实体之间的关系非常方便,下面简单介绍一下它的使用方法: Neo4j数据库可...

  • Neo4j图数据库学习总结

    1. 概述 本学习总结报告是对最近在本科课程设计电商知识图谱中使用到的图数据库Neo4j的总结,旨在对Neo4j的...

  • 领域综述 | 知识图谱概论(一)

    本篇文章从知识图谱历史发展的角度向大家介绍知识图谱。 目录: 什么是知识图谱 知识图谱的发展史 一.什么是知识图谱...

  • 知识图谱neo4j教程

    1.Neo4j的查询语法笔记 2.Neo4j教程 3.如何将大规模数据导入Neo4j 4.使用 Neo4j 来构建...

网友评论

      本文标题:豆瓣电影 知识图谱 Neo4j

      本文链接:https://www.haomeiwen.com/subject/dormiqtx.html