2026-01-19 23:58:25
这段代码是一个用于爬取豆瓣电影Top250榜单的Python脚本,主要使用了requests库发送HTTP请求,以及BeautifulSoup库解析HTML内容。以下是对代码的详细解释:
导入必要的库:
import requestsfrom bs4 import BeautifulSouprequests:用于发送HTTP请求,获取网页内容。
BeautifulSoup:用于解析HTML和XML文档,提取所需数据。
定义get_movie_info函数:
def get_movie_info(url):该函数接受一个URL作为参数,用于获取并解析该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'}通过设置User-Agent,模拟浏览器访问,避免被网站识别为爬虫。
发送HTTP请求并处理响应:
try: response = requests.get(url, headers=headers) response.raise_for_status() response.encoding = response.apparent_encoding使用requests.get发送GET请求,并携带自定义的请求头。
response.raise_for_status()检查请求是否成功,如果失败则抛出异常。
response.encoding设置响应内容的编码,确保中文等特殊字符能正确解析。
解析HTML内容:
soup = BeautifulSoup(response.text, 'html.parser')使用BeautifulSoup解析HTML内容,生成一个可遍历的树形结构对象。
查找电影信息所在的标签:
items = soup.find_all('div', class_='item')在解析后的HTML中查找所有class为item的div标签,这些标签包含了每部电影的信息。
遍历电影信息并提取名称和评分:
for item in items: title = item.find('span', class_='title').text rating = item.find('span', class_='rating_num').text print(f"电影名称: {title}, 评分: {rating}")遍历每个电影信息标签,提取电影名称和评分。
电影名称位于class为title的span标签内。
评分位于class为rating_num的span标签内。
使用格式化字符串打印电影名称和评分。
异常处理:
except Exception as e: print(f"发生错误: {e}")捕获并处理可能出现的异常,如网络请求失败、解析错误等。
主程序部分:
if __name__ == "__main__": base_url = '当脚本作为主程序运行时,执行以下代码。
base_url是豆瓣电影Top250的基础URL。
通过循环生成不同页面的URL(每页显示25部电影,共10页)。
调用get_movie_info函数,传入每个页面的URL,获取并打印电影信息。
总结:这段代码通过模拟浏览器访问豆瓣电影Top250页面,解析HTML内容,提取每部电影的名称和评分,并打印输出。它展示了如何使用requests和BeautifulSoup库进行简单的网页爬取和数据解析。