Python网络爬虫近期电影票房或热度信息爬取!

爬虫练习(四)—电影票房爬取与可视化 目标: 1、从网站上爬取电影名,电影票房 2、用条形图进行可视化 思路: 1、找网站接口 由上可见每个电影都有一个4位代码号 2、拆分动作(找出存放电影代码的列表-抓网页-存列表-可视化) 代码: 1、存电影代码的列表 html_code=getFilm('http://58921.com/alltime') #抓取存放电影代码的网页 soup2=bs(html_code,'html.pars... 阅读详情

目标意义

为了理解动态网站中一些数据如何获取,做一个简单的分析。

说明

Python资源共享群:484031800

 

思路,原始代码来源于: https://book.douban.com/subject/27061630/。

构造-下载器

构造分下载器,下载原始网页,用于原始网页的获取,动态网页中,js部分的响应获取。

通过浏览器模仿,合理制作请求头,获取网页信息即可。

代码如下:

import requests
import chardet
class HtmlDownloader(object):
    def download(self,url):
        if url is None:
            return None
        user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'
        headers={'User-Agent':user_agent}
        r=requests.get(url,headers=headers)
        if r.status_code is 200:
            r.encoding=chardet.detect(r.content)['encoding']
            return r.text
        return None

构造-解析器

解析器解析数据使用。

获取的票房信息,电影名称等,使用解析器完成。

被解析的动态数据来源于js部分的代码。

js地址的获取则通过F12控制台-->网络-->JS,然后 观察 ,得到。

地址如正上映的电影:

http://service.library.mtime.com/Movie.api?Ajax_CallBack=true&Ajax_CallBackType=Mtime.Library.Services&Ajax_CallBackMethod=GetMovieOverviewRating&Ajax_CrossDomain=1&Ajax_RequestUrl=http://movie.mtime.com/257982/&t=201907121611461266&Ajax_CallBackArgument0=257982

返回信息中,解析出json格式的部分,通过json的一些方法,获取其中的票房等信息。

其中,json解析工具地址如: https://www.json.cn/

未上映的电影是同理的。

这些数据的解析有差异,所以定制了函数分支,处理解析过程中可能遇到的不同情景。

代码如下:

import re
import json
class HtmlParser(object):
    def parser_url(self,page_url,response):
        pattern=re.compile(r'(http://movie.mtime.com/(\d+)/)')
        urls=pattern.findall(response)
        if urls != None:
            return list(set(urls))#Duplicate removal
        else:
            return None
        
    def parser_json(self,url,response):
        #parsing json. input page_url as js url and response for parsing
        pattern=re.compile(r'=(.*?);')
        result=pattern.findall(response)[0]
        if result != None:
            value=json.loads(result)
            isRelease=value.get('value').get('isRelease')
            if isRelease:
                isRelease=1
                return self.parser_json_release(value,url)
            else:
                isRelease=0
                return self.parser_json_notRelease(value,url)
        return None
    def parser_json_release(self,value,url):
        isRelease=1
        movieTitle=value.get('value').get('movieTitle')
        RatingFinal=value.get('value').get('movieRating').get('RatingFinal')
        try:
            TotalBoxOffice=value.get('value').get('boxOffice').get('TotalBoxOffice')
            TotalBoxOfficeUnit=value.get('value').get('boxOffice').get('TotalBoxOfficeUnit')
        except:
            TotalBoxOffice="None"
            TotalBoxOfficeUnit="None"
        return isRelease,movieTitle,RatingFinal,TotalBoxOffice,TotalBoxOfficeUnit,url
        
    def parser_json_notRelease(self,value,url):
        isRelease=0
        movieTitle=value.get('value').get('movieTitle')
        try:
            RatingFinal=Ranking=value.get('value').get('hotValue').get('Ranking')
        except:
            RatingFinal=-1
        TotalBoxOffice='None'
        TotalBoxOfficeUnit='None'
        return isRelease,movieTitle,RatingFinal,TotalBoxOffice,TotalBoxOfficeUnit,url

构造-存储器

存储方案为Sqlite,所以在解析器中isRelease部分,使用了0和1进行的存储。

存储需要连接sqlite3,创建数据库,获取执行数据库语句的方法,插入数据等。

按照原作者思路,存储时,先暂时存储到内存中,条数大于10以后,将内存中的数据插入到sqlite数据库中。

代码如下:

import sqlite3
class DataOutput(object):
    def __init__(self):
        self.cx=sqlite3.connect("MTime.db")
        self.create_table('MTime')
        self.datas=[]
    
    def create_table(self,table_name):
        values='''
        id integer primary key autoincrement,
        isRelease boolean not null,
        movieTitle varchar(50) not null,
        RatingFinal_HotValue real not null default 0.0,
        TotalBoxOffice varchar(20),
        TotalBoxOfficeUnit varchar(10),
        sourceUrl varchar(300)
        '''
        self.cx.execute('create table if not exists %s(%s)' %(table_name,values))
        
    def store_data(self,data):
        if data is None:
            return
        self.datas.append(data)
        if len(self.datas)>10:
            self.output_db('MTime')
            
    def output_db(self,table_name):
        for data in self.datas:
            cmd="insert into %s (isRelease,movieTitle,RatingFinal_HotValue,TotalBoxOffice,TotalBoxOfficeUnit,sourceUrl) values %s" %(table_name,data)
            self.cx.execute(cmd)
            self.datas.remove(data)
        self.cx.commit()
        
    def output_end(self):
        if len(self.datas)>0:
            self.output_db('MTime')
        self.cx.close()

主函数部分

创建以上对象作为初始化

然后获取根路径。从根路径下找到百余条电影网址信息。

对每个电影网址信息一一解析,然后存储。

import HtmlDownloader
import HtmlParser
import DataOutput
import time
class Spider(object):
    def __init__(self):
        self.downloader=HtmlDownloader.HtmlDownloader()
        self.parser=HtmlParser.HtmlParser()
        self.output=DataOutput.DataOutput()
    
    def crawl(self,root_url):
        content=self.downloader.download(root_url)
        urls=self.parser.parser_url(root_url, content)
        for url in urls:
            print('.')
            t=time.strftime("%Y%m%d%H%M%S1266",time.localtime())
            rank_url='http://service.library.mtime.com/Movie.api'\
            '?Ajax_CallBack=true'\
            '&Ajax_CallBackType=Mtime.Library.Services'\
            '&Ajax_CallBackMethod=GetMovieOverviewRating'\
            '&Ajax_CrossDomain=1'\
            '&Ajax_RequestUrl=%s'\
            '&t=%s'\
            '&Ajax_CallBackArgument0=%s' %(url[0],t,url[1])
            rank_content=self.downloader.download(rank_url)
            try:
                data=self.parser.parser_json(rank_url, rank_content)
            except:
                print(rank_url)
            self.output.store_data(data)
        self.output.output_end()
        print('ed')
if __name__=='__main__':
    spider=Spider()
    spider.crawl('http://theater.mtime.com/China_Beijing/')

当前效果

如下:

 

 

 

python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示_python爬虫票房信息(1) 该函数主要是对正在上映的电影进行数据分析,包含在映电影的票房、场次、人次、上座率五个柱形统计图,影片票房占比、场次占比、人次占比三个饼状统计图,影片地域分布票房、场次、人次三个层叠柱形图。这一函数主要抓取的是近十年来中国电影市场每年票房冠军影片的票房数据,还抓取了近十年国内电影市场的票房和上映影片数量等相关数据,具体代码块功能参照recently函数。这一函数主要是读取历史电影数据进行建模,建模完成后,读取需要预测的在映电影数据,对其进行票房预测并返回。该函数主要是为在映电影的排片数据创建数据表格。 阅读详情

相关推荐

【爬虫学习】实战篇1:猫眼电影票房爬虫

使用python自带的urllib库编写一个小程序,我们只需启动小程序,就可以实时爬取猫眼的电影票房数据,并自动将数据生成一个excel保存至本地文件夹。接下来,我将尽可能详细地介绍爬虫编写的步骤,希望大家可以跟着我一步步操作,全部编写完成之后,我们可以展开想象的翅膀,触类旁通,使用相同的技巧去获取自己需要的公开数据吧!

weixin_42044009的博客 4833

Python数据分析案例30——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

针对中国高票房电影,演示了从数据爬虫获取,到清洗整理,再到计算和可视化分析的全流程。

weixin_46277779的博客 2万+

*【艺恩娱数】Python爬虫+数据分析可视化中国影院票房*¶

这个里面的影院名称,省份,城市,票房,场次,人次,平均票价,天数,场均人次这些数据都是我们需要的。

weixin_45841831的博客 2128

python 爬取腾讯全网影视榜 - 电影 top50 名字以及相应地址保存

目标网站: https://v.qq.com/x/hotlist/search/?channel=1 对网站发送请求 import requests url = 'https://v.qq.com/x/hotlist/search/?channel=1' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64...

qq_45074943的博客 3486

电影票房数据抓取:基于Python的票房数据分析与爬虫实现

通过本文的介绍,我们展示了如何使用Python爬虫技术抓取电影票房数据,并进行数据存储、清洗、分析和可视化。通过使用RequestsSelenium等工具,我们可以抓取静态和动态网页数据,并通过Pandas进行数据处理和分析。最后,通过数据可视化,我们能够更直观地展示票房数据的趋势和分布,为电影行业的决策提供依据。通过学习本篇博客,您应该已经掌握了如何构建一个完整的票房数据抓取与分析系统,并能够应用到实际的电影数据分析中。

2201_76125261的博客 1075

解决在封装自定义IP时加入ila,或者其他ip核时出错的情况

在查阅很多资料后,明白了这个应该是软件bug,但是最终还是解决了问题 我们只需要删除

weixin_42553916的博客 3604

python网络爬虫(11)近期电影票房或热度信息爬取

目标意义 为了理解动态网站中一些数据如何获取,做一个简单的分析。 说明 思路,原始代码来源于:https://book.douban.com/subject/27061630/。 构造-下载器 构造分下载器,下载原始网页,用于原始网页的获取,动态网页中,js部分的响应获取。 通过浏览器模仿,合理制作请求头,获取网页信息即可。 代码如下: import requests imp...

weixin_30249203的博客 793

Unity中USD场景导入与工业级协作实战指南

USD(Universal Scene Description)是一种面向复杂三维场景的结构化数据模型,其核心在于分层描述、变体管理与非破坏性组合,本质是支持多团队并行协作的场景协议。它不同于传统模型格式,强调运行时可编辑性与版本可控性,技术价值体现在跨软件资产一致性、零拷贝动态叠加及内存中实时合成。典型应用场景包括建筑BIM实时漫游、汽车多配置仿真、影视级灯光材质协同等工业管线。在Unity中,USD已深度集成于URP/HDRP管线,通过原生USD Importer、Runtime与Exporter三组件

weixin_32073537的博客 302

【Python数据分析案例】——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

可以看到,我国高票房的电影,从2010年开始高速增长,到2017年到达峰值,著名的《战狼2》就是2017年上映的,然后2018和2019略微下降,2020年断崖下跌,,为什么,懂得懂得,疫情原因嘛。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。对数据进行一定的清洗,我们看到上映日期里面的数据有“上映”两个字,我们要去掉,然后把它变成时间格式,票房,票价,人次都要变成数值型数据。

白帽阿叁的博客 4049

Yolov26 在 Rk3588 上的 Rknn Onnx 部署实践(c++)

本文介绍了YOLOv26在RK3588平台的C++推理部署方案。重点包括:1)扩展Ultralytics导出格式,新增RKNN_ONNX专用导出选项;2)重构Detect Head结构,使其更适合RKNN推理;3)提供C++侧后处理实现建议。该方案保留了Ultralytics训练生态,通过优化模型结构输出,将解码等操作移至C++端,充分发挥Rockchip NPU性能。适用于RK3588/RK356x等平台,需配合rknn-toolkit2使用,为YOLOv26的嵌入式部署提供完整解决方案。

qq_64366203的博客 2178

别再只会用QTcpSocket了!手把手教你用QSslSocket为你的Qt网络应用加上SSL/TLS加密(附完整代码示例)

本文详细介绍了如何将Qt网络应用从QTcpSocket迁移到QSslSocket,实现SSL/TLS加密传输。通过对比API差异、解析核心机制和提供完整代码示例,帮助开发者快速掌握安全网络编程技巧,有效防范数据窃听和中间人攻击等安全风险。

weixin_30654583的博客 401

使用python爬取中国电影票房数据并写入csv文件

环境 PyCharm 2021.1.2 x64 爬取的目标网页 一、代码 import requests from bs4 import BeautifulSoup url = "http://58921.com/alltime/wangpiao"#目标网页 response = requests.get(url) #print(response.text) response.encoding = "utf-8" text = response.text bs = BeautifulSoup(text,'l

weixin_47700137的博客 4970

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 777

Python实战:基于Billboard榜单数据的音乐趋势分析与可视化

数据可视化是数据分析领域的基础技术,它通过图形化手段将复杂数据转化为直观图表,帮助人们快速识别模式、趋势和异常。其核心原理在于利用人类视觉系统对形状、颜色和空间的强大感知能力,将多维数据映射到视觉元素上。在技术价值层面,数据可视化不仅是结果展示工具,更是探索性数据分析的重要手段,能驱动假设生成和决策支持。在应用场景上,它广泛用于商业智能、金融市场分析、社交媒体监控以及流行文化趋势追踪等领域。例如,在音乐产业中,结合Python的pandas和matplotlib等库,可以对Billboard Hot 100

weixin_33910137的博客 313

STM32步进电机控制三大方案:GPIO/定时器/PWM深度对比

步进电机控制是嵌入式运动控制的基础技术,其核心在于精确生成脉冲(PUL)、方向(DIR)和使能(EN)三路数字信号。原理上,脉冲频率决定转速,脉冲数量决定位置,方向电平决定转向,而使能时序保障驱动器可靠启停。该技术具有高定位精度、开环稳定性与低成本优势,广泛应用于3D打印机、CNC设备、自动化产线等场景。在STM32平台实现时,需兼顾硬件隔离设计(如6N137光耦)、HAL库抽象封装及实时性约束。本文围绕GPIO模拟、定时器中断与PWM比较输出三种主流方法,系统剖析其时序机制、CPU开销、抗干扰能力与工业适

weixin_35755640的博客 88

QT+QGIS跨平台编译(基于Qt,采用一套代码、一套框架,完成QGIS第三方库、核心库、应用程序的跨平台编译)

QT+QGIS跨平台编译。 基于Qt,采用一套代码、一套框架,完成QGIS第三方库、核心库、应用程序的跨平台编译。

LuckyHanMo的博客 4382

python爬虫实例——中国电影票房

带你一步步实现电影票房的爬取

weixin_44690846的博客 2万+

手把手教您解决 AdGuard Home DNS重写功能失效的问题

AdGuard Home 设置了 DNS 重写,规则明明没问题,客户端却死活解析不到内网 IP?🤯 别急着重装!🚫 本文手把手教你如何解决软路由 DNS 解析“玄学”故障!🛠️🚀

XiaoqiangClub的博客 929

Python爬取猫眼电影票房 + 数据可视化

通过造一个content字符串,包含请求方法、时间戳、User-Agent、index等信息,并对其进行MD5加密得到sign。接着我们就可以对于猫眼电影票房数据进行爬取了,比如上座率、场均人次、票房占比、电影名称、上映时间、综合票房、排片场次和排片占比等。接着我们想要进行数据抓包,就要看网站的具体内容,通过按F12,我们可以看到详细信息。所以我们需要对User-Agent与signKey分别进行解密。通过DataFrame输出到控制台我们可以看到爬取成功。对猫眼电影票房进行爬取,首先我们打开。

ZShiJ的博客 8712

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python爬虫电影数据分析-python+爬虫

基于python+爬虫实现的电影数据分析执行爬取后立即分析

wanglindda的博客 985

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【爬虫逆向】Python逆向采集猫眼电影票房数据

12 莫斯科行动 上映55天 1.2% 1.2 0.7% 6.62亿 3323 1.0%14 吾爱敦煌 上映6天 0.7% 0.7 0.6% 624.6万 4580 1.4%18 古庙迷杀 上映6天 0.6% 0.6 0.2% 102.4万 3455 1.1%

weixin_45841831的博客 2600

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

小白爬虫学习之电影票房排名

在本次的学习中,使用了requests进行网络爬虫,并使用画图工具绘制了饼状图和折线图,对之前学过的知识也有了进一步的巩固。

weixin_56544805的博客 539

python爬虫(电影排行榜)

print(data.sort_values(by='AvgAudienceCount', ascending=False)[['年份', 'MovieName', 'AvgAudienceCount']].head(10))csvwriter.writerow(('排名', '电影名称', '上映时间', '总票房(万)', '平均票价', '平均场次'))data['年份'] = data['ReleaseTime'].apply(lambda x: x.split('-')[0])

2301_76842366的博客 1019

【Python】爬虫实战02:电影市场票房情况分析与可视化

在信息爆炸的时代,数据分析已成为各行各业的重要工具。特别是在电影行业,票房数据不仅反映了电影的市场表现,也是电影产业健康发展的关键指标。为了更好地理解和分析中国大陆电影市场的票房情况,本代码提供了一个自动化数据抓取和分析的解决方案。通过实时获取票房数据,我们可以对电影市场的趋势和动态有更深入的了解。本代码是一个基于Python的数据抓取和分析脚本,它通过访问艺恩娱数提供的API接口,获取中国大陆电影票房排行榜的数据。该脚本首先使用requests库发起网络请求,抓取票房数据,并将其保存到CSV文件中。

Young_Pro的博客 2040

python电影票房爬虫+可视化系统 Flask框架 MySQL数据库

python电影票房爬虫+可视化系统 Flask框架 MySQL数据库

公众号:源码之屋,十多年程序猿资深互联网人,目前专注于Python/Java/大数据项目解决方案制定,提供各行业各编程语言的全套开发服务,喜爱code,喜爱分享,生命不止,编码不息! 1846

Python爬虫入门案例(二)电影票房数据库爬取(request+XPath+csv)

大家学完第一个案例爬取豆瓣电影数据之后,对爬虫的基本概念以及流程有了大体的了解。其实我个人认为,爬虫的流程都是一样的,只不过方法不同而已。 今天我们就来学习第二个案例,爬取电影票房数据库中的电影数据信息。 网站地址:http://58921.com/ 下面就开始爬取。大概分为三步; 一:获取网页响应 二:获取网页所需内容 三:保存数据 1.获取相应。获取相应的方式与第一个案例一致,直接上代码。 ...

自律 6043
上一篇: 厉害了!用Python爬取无线网络,走遍天下都能连!
下一篇: 10 个简单小窍门带你提高Python数据分析速度!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值