帮我写一段爬取豆瓣TOP250的代码,要求爬取页码数可控(第几页到第几页),并保存成csv文件
时间: 2024-03-29 16:41:02 浏览: 102
爬虫爬取豆瓣电影TOP250源代码
好的,以下是示例代码:
```python
import requests
from bs4 import BeautifulSoup
import csv
def get_movies(start_page, end_page):
"""
爬取豆瓣TOP250电影
:param start_page: 起始页码
:param end_page: 结束页码
:return: 电影列表
"""
movies = []
for page in range(start_page, end_page + 1):
url = f'https://movie.douban.com/top250?start={25 * (page - 1)}&filter='
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
movie_list = soup.find(class_='grid_view').find_all('li')
for movie in movie_list:
title = movie.find(class_='title').text.strip()
info = movie.find(class_='bd').p.text.strip()
rating = movie.find(class_='rating_num').text.strip()
quote = movie.find(class_='quote').span.text.strip()
movies.append({'title': title, 'info': info, 'rating': rating, 'quote': quote})
return movies
def save_to_csv(movies):
"""
将电影信息保存到csv文件中
:param movies: 电影列表
"""
with open('douban_top250.csv', 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['title', 'info', 'rating', 'quote']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for movie in movies:
writer.writerow(movie)
# 示例调用
movies = get_movies(start_page=1, end_page=2)
save_to_csv(movies)
```
在这个示例代码中,我们首先定义了`get_movies`函数来爬取指定页码范围内的豆瓣TOP250电影,并以字典的形式存储在列表中返回。接着,我们定义了`save_to_csv`函数来将电影信息保存到csv文件中。最后,我们通过`get_movies`函数获取电影信息,并将电影信息保存到csv文件中。
在保存csv文件时,我们使用了`csv`模块来处理csv文件。我们首先定义了csv文件的列名(即表头),然后使用`csv.DictWriter`创建一个写入对象,将列名写入csv文件。最后,我们遍历电影列表,将每个电影的信息写入csv文件中。
阅读全文