Python爬取豆瓣电影top250存储在MongoDB讲解
![douban-movie](
1. 简介
在网络时代,我们可以轻松获取各种信息。豆瓣是一个非常受欢迎的电影评价网站,它提供了大量的电影信息。本文将使用Python编写一个爬虫来获取豆瓣电影Top250的数据,并将数据存储在MongoDB中。
2. 爬取豆瓣电影Top250
2.1 安装必要的库
首先,我们需要安装一些必要的库,包括requests
用于发送http请求,bs4
用于解析html文档,pymongo
用于连接MongoDB数据库。
pip install requests
pip install bs4
pip install pymongo
2.2 发送请求获取页面内容
我们需要发送HTTP请求来获取豆瓣电影Top250的页面内容。以下是发送GET请求的基本示例代码。
import requests
url = '
response = requests.get(url)
content = response.text
print(content)
在这个示例中,我们使用requests
库的get
方法发送了一个GET请求,并将响应的内容保存在content
变量中。
2.3 解析页面内容
获取到页面内容后,我们需要使用bs4
库来解析HTML文档。以下是解析HTML文档的基本示例代码。
from bs4 import BeautifulSoup
soup = BeautifulSoup(content, 'html.parser')
在这个示例中,我们将页面内容传递给BeautifulSoup
类的构造函数,并指定解析器为html.parser
。通过这个示例,我们可以将HTML文档转换为一个可操作的Python对象。
2.4 提取电影信息
现在,我们已经解析了HTML文档,接下来我们需要从文档中提取出我们所需的电影信息。我们可以使用BeautifulSoup
的方法来提取特定的元素。
movies = soup.find_all('div', class_='item')
for movie in movies:
title = movie.find('span', class_='title').get_text()
rating = movie.find('span', class_='rating_num').get_text()
print(title, rating)
在这个示例中,我们使用find_all
方法找到所有class为item
的div元素,并使用find
方法在每个div元素中查找class为title
和rating_num
的span元素。然后,我们使用get_text
方法获取元素的文本内容。最后,我们将电影的标题和评分打印出来。
2.5 存储数据到MongoDB
现在,我们已经成功提取了电影的标题和评分信息,接下来我们需要将这些数据存储到MongoDB中。我们可以使用pymongo
库来连接MongoDB数据库,并将数据插入到指定的集合中。
from pymongo import MongoClient
client = MongoClient('mongodb://localhost:27017/')
db = client['douban_movie']
collection = db['top250']
for movie in movies:
title = movie.find('span', class_='title').get_text()
rating = movie.find('span', class_='rating_num').get_text()
collection.insert_one({'title': title, 'rating': rating})
在这个示例中,我们首先使用MongoClient
类连接到MongoDB数据库。然后,我们选择了一个名为douban_movie
的数据库,并创建了一个名为top250
的集合。接下来,我们通过循环遍历每个电影,并将电影的标题和评分信息插入到集合中。
3. 流程图
flowchart TD
A[发送请求获取页面内容] --> B[解析页面内容]
B --> C[提取电影信息]
C --> D[存储数据到MongoDB]
4. 总结
通过本文,我们学习了如何使用Python编写一个爬虫来爬取豆瓣电影Top250的数据,并将数据存储到MongoDB中。我们使用了requests
库发送HTTP请求,bs4
库解析HTML文档,以及pymongo
库连接MongoDB数据库。我们