编写一个爬虫,爬去豆瓣电影top250,并添加注释
时间: 2024-01-16 19:02:44 浏览: 30
好的,我可以给你提供一个简单的爬虫示例,用于爬取豆瓣电影 top250。以下是代码,我会给你添加注释来解释每个部分的功能:
```python
import requests
from bs4 import BeautifulSoup
# 设置请求头,模拟浏览器访问
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'}
# 定义一个函数,用于获取每一页的电影信息
def get_movies(url):
movie_list = []
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 找到电影列表
movies = soup.find('ol', class_='grid_view').find_all('li')
for movie in movies:
# 获取电影名称、评分、评分人数、导演和主演等信息
name = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
rating_num = movie.find('div', class_='star').find_all('span')[3].text[:-3]
info = movie.find('div', class_='bd').p.text.strip()
director, actors = info.split('\n')[0].strip(), info.split('\n')[1].strip()
# 将电影信息添加到列表中
movie_list.append({
'name': name,
'rating': rating,
'rating_num': rating_num,
'director': director,
'actors': actors
})
return movie_list
# 定义一个函数,用于获取豆瓣 top250 的所有电影信息
def get_all_movies():
all_movies = []
for i in range(10):
# 构造每一页的 URL
url = f'https://movie.douban.com/top250?start={i * 25}'
# 调用 get_movies 函数获取当前页的电影信息,并将其添加到 all_movies 列表中
all_movies.extend(get_movies(url))
return all_movies
# 打印所有电影信息
movies = get_all_movies()
for movie in movies:
print(movie)
```
在这个爬虫示例中,我们使用 requests 库发起 GET 请求获取网页内容,然后使用 BeautifulSoup 库解析 HTML 文档。具体而言,我们先找到电影列表所在的 `ol` 标签,然后再找到每个电影所在的 `li` 标签,最后从中提取需要的信息。
注意,这个爬虫示例只是为了帮助你了解爬虫的基本原理,实际爬虫中还需要考虑很多其他问题,比如反爬机制、爬虫频率等。如果你需要真正的爬虫工具,可以考虑使用 Scrapy 等专业的爬虫框架。