请使用python爬虫爬取豆瓣电影正在热映的电影信息。包含电影名称、导演、编剧、演员信息和评分。(10分)https://movie.douban.com/
时间: 2024-12-21 07:22:17 浏览: 8
要使用Python爬虫爬取豆瓣电影正在热映的电影信息,我们可以利用Douban API或者直接解析其网页,因为豆瓣提供了API接口供开发者使用。然而,官方API有时会有反爬限制,所以这里我将提供一个使用BeautifulSoup抓取网页的示例,但请注意这可能会受到频率限制或被豆瓣封禁。
首先,安装必要的库:
```bash
pip install requests beautifulsoup4
```
然后编写一个简单的爬虫脚本:
```python
import requests
from bs4 import BeautifulSoup
import json
def get_hot_movies(url="https://movie.douban.com/chart"):
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)
soup = BeautifulSoup(response.text, 'lxml')
# 在这个例子中,通常电影信息都在`div.item`元素内,具体结构会因豆瓣更新而变化
movie_list = soup.select('.item')
movies_info = []
for movie in movie_list:
try:
title = movie.h3.a['title'] # 电影名称
director = movie.find('span', {'property': 'director'}).string # 导演
writers = [writer.string for writer in movie.select('span[property="screenplay"] a')] # 编剧,多个用列表表示
actors = [actor.string for actor in movie.select('span[itemprop="actors"]/a')] # 主演,多个用列表表示
rating = float(movie.find('span', {'itemprop': 'ratingValue'}).string) # 评分
movie_dict = {
'电影名称': title,
'导演': director,
'编剧': writers,
'主演': actors,
'评分': rating
}
movies_info.append(movie_dict)
except (KeyError, ValueError):
continue # 忽略无法获取的数据
return movies_info
hot_movies = get_hot_movies()
print(hot_movies)
将结果保存到JSON文件或TXT文件中
with open('douban_movies.json', 'w', encoding='utf-8') as f:
json.dump(hot_movies, f, ensure_ascii=False, indent=2)
```
注意,实际操作时,上述代码可能会遇到HTML结构变化导致解析失败的问题。为了长期稳定运行,建议查阅豆瓣API文档或者关注其API的可用性。另外,遵循网站的robots.txt规则并且尊重版权,不要滥用爬虫对服务器造成压力。
阅读全文