Python爬虫样例:爬取豆瓣电影Top250

前言

随着互联网的发展,爬虫技术在数据采集和分析方面越来越重要。本文将介绍如何使用Python编写一个爬虫,爬取豆瓣电影Top250的数据,并将结果保存到本地文件中。

准备工作 在开始编写爬虫之前,我们需要安装一些必要的工具和库:
Python 3.x
requests库
BeautifulSoup库

这里注意未安装相应的库,是无法运行的哦~


我们可以通过pip命令来安装这些库:

1
2
pip install requests
pip install beautifulsoup4

爬虫实现

分析目标网页
首先,我们需要分析目标网页的结构和内容。在本例中,我们要爬取的是豆瓣电影Top250,其网址为:

1
https://movie.douban.com/top250

打开网页后,我们可以看到每部电影都有一张海报、标题、评分、导演和主演等信息。这些信息都是我们需要爬取的内容。

发送请求并获取HTML
在Python中,我们可以使用requests库来发送HTTP请求并获取HTML代码:

1
2
3
4
5
6
7
8
import requests

url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
html = response.text

上述代码中,我们首先定义了目标网页的URL和请求头部。由于豆瓣网站有反爬虫机制,我们需要在请求头中添加User-Agent信息,模拟浏览器访问网页。
然后,我们使用requests库发送HTTP请求,并获取响应。最后,我们将响应的HTML代码保存到html变量中。
解析HTML并获取数据
获取HTML代码后,我们需要使用BeautifulSoup库来解析HTML,并提取需要的数据:

1
2
3
4
5
6
7
8
9
10
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
movies = soup.find_all('div', class_='item')
for movie in movies:
title = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
director = movie.find('div', class_='bd').p.text.split('\n')[1].strip().split(':')[1]
actors = [actor.strip() for actor in movie.find('div', class_='bd').p.text.split('\n')[2].strip().split('/')]
print(title, rating, director, actors)

上述代码中,我们首先使用BeautifulSoup库解析HTML代码,并找到所有电影的div元素。

然后,我们使用find()方法来查找每个电影的标题、评分、导演和主演等信息,并将它们保存到变量中。

保存数据到本地文件
最后,我们可以将爬取到的数据保存到本地文件中:

1
2
3
4
5
6
7
8
9
10
11
import csv

with open('top250.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['标题', '评分', '导演', '主演'])
for movie in movies:
title = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
director = movie.find('div', class_='bd').p.text.split('\n')[1].strip().split(':')[1]
actors = [actor.strip() for actor in movie.find('div', class_='bd').p.text.split('\n')[2].strip().split('/')]
writer.writerow([title, rating, director, actors])

上述代码中,我们使用csv库来创建一个CSV文件,并将表头和每个电影的信息写入文件中。

总结

本文介绍了如何使用Python编写一个爬虫,爬取豆瓣电影Top250的数据,并将结果保存到本地文件中。在爬虫的实现过程中,我们使用了requests和BeautifulSoup库来发送HTTP请求、解析HTML和提取数据。