豆瓣电影top250数据爬取代码
时间: 2023-09-05 11:12:22 浏览: 105
以下是一个简单的 Python 代码示例,可以实现豆瓣电影top250数据爬取:
``` python
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 定义请求头,模拟浏览器请求
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'}
# 定义函数,获取豆瓣电影top250页面的HTML内容
def get_html(url):
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
else:
return None
except requests.exceptions.RequestException as e:
print(e)
return None
# 定义函数,解析HTML内容,获取电影信息
def parse_html(html):
soup = BeautifulSoup(html, 'html.parser')
movie_list = soup.find('ol', class_='grid_view').find_all('li')
data = []
for movie in movie_list:
title = movie.find('div', class_='hd').find('span', class_='title').get_text()
rating = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
director = movie.find('div', class_='bd').find('p').get_text().split('\n')[1].strip().replace('导演: ', '')
actors = movie.find('div', class_='bd').find('p').get_text().split('\n')[2].strip().replace('主演: ', '')
data.append({'title': title, 'rating': rating, 'director': director, 'actors': actors})
return data
# 定义函数,将数据存储为CSV文件
def save_to_csv(data, filename):
df = pd.DataFrame(data)
df.to_csv(filename, index=False, encoding='utf-8')
# 主函数,爬取豆瓣电影top250数据
def main():
url = 'https://movie.douban.com/top250?start={}&filter='
data = []
for i in range(0, 250, 25):
html = get_html(url.format(i))
if html:
data += parse_html(html)
save_to_csv(data, 'douban_top250.csv')
if __name__ == '__main__':
main()
```
在上面的代码中,首先定义了一个请求头,用于模拟浏览器请求。然后定义了三个函数:`get_html()`用于获取HTML内容,`parse_html()`用于解析HTML内容并提取电影信息,`save_to_csv()`用于将数据存储为CSV文件。
最后在主函数中,循环爬取豆瓣电影top250页面的HTML内容,并调用`parse_html()`函数提取电影信息,最后调用`save_to_csv()`函数将数据存储为CSV文件。
阅读全文