用python爬取豆瓣电影前250,并保存数据为excel格式
时间: 2024-03-31 09:32:51 浏览: 129
好的,以下是使用 Python 爬取豆瓣电影前 250 并保存数据为 Excel 格式的代码示例:
```python
import requests
from bs4 import BeautifulSoup
import openpyxl
# 获取页面内容
def get_page_content(url):
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)
response.encoding = 'utf-8'
return response.text
# 解析页面内容
def parse_page(html):
soup = BeautifulSoup(html, 'lxml')
movie_list = soup.find('ol', class_='grid_view').find_all('li')
for movie in movie_list:
rank = movie.find('em').text
title = movie.find('span', class_='title').text
rating = movie.find('span', class_='rating_num').text
comment_num = movie.find('div', class_='star').find_all('span')[-1].text[:-3]
url = movie.find('a')['href']
yield [rank, title, rating, comment_num, url]
# 保存数据到 Excel 文件
def save_to_excel(filename, data):
wb = openpyxl.Workbook()
ws = wb.active
ws.append(['排名', '电影名', '评分', '评论人数', '链接'])
for row in data:
ws.append(row)
wb.save(filename)
if __name__ == '__main__':
url = 'https://movie.douban.com/top250'
filename = 'douban_top250.xlsx'
data = []
for i in range(10):
page_url = f'{url}?start={i*25}'
page_html = get_page_content(page_url)
page_data = parse_page(page_html)
data.extend(page_data)
save_to_excel(filename, data)
print(f'Saved data to {filename}.')
```
以上代码中,我们首先定义了 `get_page_content` 函数用于获取页面内容,然后定义了 `parse_page` 函数用于解析页面内容,将电影的排名、电影名、评分、评论人数、链接等信息提取出来,使用 `yield` 关键字生成器返回每部电影的信息。接着定义了 `save_to_excel` 函数,将数据保存到 Excel 文件中。
在 `main` 函数中,我们循环遍历豆瓣电影前 250 的每一页,调用 `get_page_content` 函数获取页面内容,再调用 `parse_page` 函数解析页面内容,将每页的电影信息保存到 `data` 列表中。最后调用 `save_to_excel` 函数将数据保存到 Excel 文件中。
阅读全文