爬取豆瓣电影榜单构建知识图谱

本文讲述了作者如何通过爬虫技术获取豆瓣电影Top250的详细信息,包括电影名称、导演、演员和类型,然后使用Neo4j构建知识图谱,详细描述了数据爬取、整理和导入图谱的过程。
摘要由CSDN通过智能技术生成

640?wx_fmt=jpeg

文/Kingshine 图片来源于网络


作者简介:KingShine,现居北京,程序猿一枚。主要方向为数据分析、自然语言处理,大数据。希望结交到志同道合的朋友,共同进步。

本文作者已加入Python中文社区专栏作者计划

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

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

640?wx_fmt=png

一、分析问题

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

640?wx_fmt=png

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

640?wx_fmt=png

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

  • 电影名称

  • 导演

  • 演员

  • 电影类型

本文的操作过程步骤如下:
第一步:从主页爬取到每个电影详细页的地址,进行存储

以下是使用Python爬取豆瓣电影Top250榜的示例代码: ```python import requests from bs4 import BeautifulSoup import sqlite3 # 创建数据库连接 conn = sqlite3.connect('movies.db') cursor = conn.cursor() # 创建数据表 cursor.execute('''CREATE TABLE IF NOT EXISTS movies (id INTEGER PRIMARY KEY, title TEXT, rating REAL, num_ratings INTEGER, summary TEXT, url TEXT)''') # 爬取Top250榜单 for i in range(0, 250, 25): url = f'https://movie.douban.com/top250?start={i}&filter=' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') movies = soup.find_all('div', class_='info') # 解析电影信息并存储到数据库 for movie in movies: title = movie.find('span', class_='title').text rating = float(movie.find('span', class_='rating_num').text) num_ratings = int(movie.find('span', class_='rating_num').find_next_sibling().text[:-3]) summary = movie.find('span', class_='inq').text if movie.find('span', class_='inq') else '' url = movie.find('a')['href'] cursor.execute(f"INSERT INTO movies (title, rating, num_ratings, summary, url) VALUES ('{title}', {rating}, {num_ratings}, '{summary}', '{url}')") conn.commit() # 关闭数据库连接 conn.close() ``` 该代码使用requests和BeautifulSoup库爬取豆瓣电影Top250榜单,并将电影信息存储到SQLite数据库中。具体步骤如下: 1. 导入需要的库:requests、BeautifulSoup和sqlite3。 2. 创建数据库连接,并创建名为movies的数据表。 3. 循环爬取Top250榜单,每次爬取25部电影。 4. 解析每部电影的信息,包括电影名称、评分、评分人数、电影概述和电影链接。 5. 将电影信息插入到数据库中。 6. 关闭数据库连接。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值