Python爬虫:使用requests和BeautifulSoup爬取豆瓣电影排行榜
import requests
from bs4 import BeautifulSoup
import urllib
# 爬取豆瓣电影分类排行榜 - 喜剧片
url = 'https://movie.douban.com/j/chart/top_list'
params = {
'type': '24',
'interval_id': '100:90',
'action': '',
'start': '0',
'limit': '10'
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55'
}
# 发送请求获取数据
response = requests.get(url=url, params=params, headers=headers)
# 将响应解析为JSON格式
list_data = response.json()
# 使用BeautifulSoup解析网页结构
soup = BeautifulSoup(response.text, 'html.parser')
# 解析电影列表
movie_list = soup.find(class_='grid_view').find_all('li')
for movie in movie_list:
# 获取电影名称和评分
movie_name = movie.find(class_='title').text
movie_rating = movie.find(class_='rating_num').text
# 获取电影详情页链接
movie_detail_link = movie.find('a')['href']
# 请求电影详情页
movie_detail_response = requests.get(movie_detail_link)
movie_detail_soup = BeautifulSoup(movie_detail_response.text, 'html.parser')
# # 获取电影下载链接 (示例,实际操作需根据网站结构调整)
# download_link = movie_detail_soup.find('a', text='[下载]')['href']
#
# # 下载电影视频
# video_file = f'{movie_name}.mp4'
# urllib.request.urlretrieve(download_link, video_file)
#
# # 获取电影音频链接
# audio_link = movie_detail_soup.find('a', text='[音频]')['href']
#
# # 下载电影音频
# audio_file = f'{movie_name}.mp3'
# urllib.request.urlretrieve(audio_link, audio_file)
# 打印电影信息
print(f'电影名称:{movie_name}')
print(f'评分:{movie_rating}')
# print(f'视频文件名:{video_file}')
# print(f'音频文件名:{audio_file}')
print('------------------------')
代码说明:
- 导入库: 导入
requests,BeautifulSoup,urllib库用于网络请求、HTML解析和文件下载。 - 设置参数: 设置请求URL、参数和请求头,模拟浏览器行为。
- 发送请求: 使用
requests.get()发送GET请求获取网页内容。 - 解析数据: 使用
response.json()将响应解析为JSON格式,使用BeautifulSoup解析网页结构。 - 提取信息: 使用
find()和find_all()方法定位并提取电影名称、评分、详情页链接等信息。 - 下载文件: 根据网站结构,使用
urllib.request.urlretrieve()下载电影视频和音频文件 (示例代码已注释,实际操作需根据网站结构调整)。 - 打印信息: 打印提取到的电影信息。
注意:
- 爬取网页数据时请遵守网站的robots.txt协议和相关法律法规。
- 网站结构可能会发生变化,导致代码失效,需要根据实际情况调整代码。
- 下载电影视频和音频文件涉及版权问题,请谨慎操作。
原文地址: https://www.cveoy.top/t/topic/lawW 著作权归作者所有。请勿转载和采集!