2.爬取豆瓣电影top250

2.爬取豆瓣电影top250
最新回答
紫萌雨

2026-01-19 23:58:25

这段代码是一个用于爬取豆瓣电影Top250榜单的Python脚本,主要使用了requests库发送HTTP请求,以及BeautifulSoup库解析HTML内容。以下是对代码的详细解释:

  1. 导入必要的库:

    import requestsfrom bs4 import BeautifulSoup

    requests:用于发送HTTP请求,获取网页内容。

    BeautifulSoup:用于解析HTML和XML文档,提取所需数据。

  2. 定义get_movie_info函数:

    def get_movie_info(url):

    该函数接受一个URL作为参数,用于获取并解析该URL对应的网页内容。

  3. 设置请求头:

    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,模拟浏览器访问,避免被网站识别为爬虫。

  4. 发送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设置响应内容的编码,确保中文等特殊字符能正确解析。

  5. 解析HTML内容:

    soup = BeautifulSoup(response.text, 'html.parser')

    使用BeautifulSoup解析HTML内容,生成一个可遍历的树形结构对象。

  6. 查找电影信息所在的标签:

    items = soup.find_all('div', class_='item')

    在解析后的HTML中查找所有class为item的div标签,这些标签包含了每部电影的信息。

  7. 遍历电影信息并提取名称和评分:

    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标签内。

    使用格式化字符串打印电影名称和评分。

  8. 异常处理:

    except Exception as e: print(f"发生错误: {e}")

    捕获并处理可能出现的异常,如网络请求失败、解析错误等。

  9. 主程序部分:

    if __name__ == "__main__": base_url = '
    https://movie.douban.com/top250'
    for start in range(0, 250, 25): url = f"{base_url}?start={start}" get_movie_info(url)

    当脚本作为主程序运行时,执行以下代码。

    base_url是豆瓣电影Top250的基础URL。

    通过循环生成不同页面的URL(每页显示25部电影,共10页)。

    调用get_movie_info函数,传入每个页面的URL,获取并打印电影信息。

总结:这段代码通过模拟浏览器访问豆瓣电影Top250页面,解析HTML内容,提取每部电影的名称和评分,并打印输出。它展示了如何使用requests和BeautifulSoup库进行简单的网页爬取和数据解析。