【代码片段】使用python爬取豆瓣电影TOP250

简介: 使用python爬取豆瓣电影TOP250

使用python爬取豆瓣电影TOP250

import os
import re
import time
import json
import requests

from bs4 import BeautifulSoup

# 爬取分页数据
def douban_page(page_url):
    response = requests.get(page_url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, "html.parser")

        grid_view = soup.find(class_="grid_view")
        grid_view_items = grid_view.find_all("li")

        page_list = []
        for item in grid_view_items:
            # 大部分电影标题栏有两个title标签和一个other标签
            # 但部分电影只有一个title标签,比如top2《霸王别姬》
            titles = item.find_all(class_="title")
            name = titles[0].get_text().strip() # 电影名称
            if len(titles) >= 2:
                alias = titles[1].get_text().strip(" / ") # 电影别名
            else:
                alias = ""

            # 提取电影年份、地区、类型等信息
            p_elem = item.find(class_="bd").find("p", class_="")
                        p_strs = re.findall(r'(.*?)', p_elem.prettify(), re.S)
            p_str = p_strs[0].strip("\n") # 出去两边换行符

            p_items = p_str.split(" / ") # 电影年份、地区、类型分割为列表

            film_year = p_items[0].strip()     # 年份
            film_district = p_items[1]         # 地区
            film_genre = p_items[2].split() # 分类

            # 获取描述(不是全部电影都有描述,比如top239《功夫》,top254《奇迹男孩》)
            quote_elem = item.find(class_="quote")
            if quote_elem:
                description = quote_elem.find(class_="inq").get_text()
            else:
                description = ""

            page_list.append({
                "name": name,
                "alias": alias,
                "year": film_year,
                "genre": film_genre,
                "district": film_district,
                "sort": item.em.text, # 排序
                "link": item.a["href"], # 详情地址
                "score": item.find(class_="rating_num").get_text(), # 评分
                "description": description # 描述(评价)
            })

        return page_list
    return []

# 开始爬取,计算分页
def douban_begin():
    page_number = 1 # 起始页
    page_limit = 25 # 每页显示条数

    film_list = []
    while page_number <= 10:
        page_offset = (page_number - 1) * page_limit # 计算当前页起始条数
        page_url = "https://movie.douban.com/top250?start=%s" % page_offset
        page_list = douban_page(page_url)

        # 把分页结果放入列表
        for item in page_list:
            film_list.append(item)

        page_number += 1
        time.sleep(2) # 休眠2秒防止频繁执行

    return film_list

if __name__ == "__main__":
    film_list = douban_begin()

    # 数据以文件形式保存到本地
    fileObj = open("json/douban_film.json", "w")
    fileObj.write(json.dumps(film_list))
    fileObj.close()
    exit()

注:爬取页面之前需要先分析页面,找到自己需要的数据信息。该代码只是把爬取结果放到了本地文件,可以根据自己的需求存到数据库等合适的位置。
最后:豆瓣会封禁IP,请谨慎操作。

相关文章
|
7月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
8月前
|
数据采集 存储 JSON
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
|
11月前
|
数据采集 Web App开发 前端开发
Python+Selenium爬虫:豆瓣登录反反爬策略解析
Python+Selenium爬虫:豆瓣登录反反爬策略解析
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
883 1
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能电影制作与剪辑
使用Python实现深度学习模型:智能电影制作与剪辑
552 5
|
XML 程序员 数据格式
豆瓣评分8.6!Python社区出版的Python故事教程,太强了!
Python 是活力四射的语言,是不断发展中的语言。就连使用 Python 多年的行者也不敢说对 Python 的方方面面都了解并可以自由运用,想必读者可能更加无法快速掌握所有重点技巧了。 今天给小伙伴们分享的这份手册是用互动的开发故事来探讨Pyfhonic开发的故事书籍,是一本Python语言详解书籍,由Python的行者根据自身经验组织而成,是为从来没有听说过Python的其他语言程序员准备的一份实用的导学性质的书,笔者试图将优化后的学习体验,通过故事的方式传达给读者。对于零基础的小白来说更建议入门后再来品读。
212 11
|
数据采集 存储 机器学习/深度学习
豆瓣评分7.6!Python大牛教你如何采集网络数据
网络数据采集大有所为。在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。你在浏览器上看到的内容,大部分都可以通过编写Python 程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。 今天给小伙伴们分享的这份手册采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。
豆瓣评分9.4!最适合Python入门后进阶的Python食谱!
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
|
算法 数据挖掘 数据处理
豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。 近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只使用Python这一种语言去构建以数据为中心的应用程序。 作为一个科学计算平台,Python的成功源于能够轻松的集成C、C++以及Fortran代码。大部分现代计算机环境都利用了一些Fortran和C库来是西安线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。

推荐镜像

更多
下一篇
开通oss服务