python获取动态数据_python爬取动态数据实战---猫眼专业版-实时票房(二)

本文介绍如何使用Python获取和解析猫眼专业版的实时票房数据,通过urllib和json模块抓取并解码JSON格式的网页数据,然后使用pymysql将数据保存到MySQL数据库和txt文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习python进行简单的数据爬取(基于python 3.x)。再进行数据页面解析之后,使用scrapy框架进行爬取数据。没有实现自己预想的效果,着实是自己能力有限,无法灵活使用该框架。就使用自己的办法进行数据爬取。需要用到的模块有 urllib,json,pymysql,datatime,os

首先定义一个类:class MovieSpider(object):

在外部调用类的方法

if __name__ == "__main__":#数据目标地址

DataUrl = "http://piaofang.meituan.com/second-box"

#定义类对象

Spider =MovieSpider()#调用类方法

Spider.DownloadData(DataUrl)

定义下载数据的方法:

defDownloadData(self, url):

self.GetData(url)

打开数据页面,在这里使用urllib模块进行访问打开页面,返回html页面,内容是json格式进行编辑

defOpenPage(self, url):"""打开数据页面"""rep=urllib.request.Request(url)

response=urllib.request.urlopen(rep)#读取页面数据信息

html =response.read()return html

实现获取数据的方法:由于数据目标是以json格式进行保存,需要json模块进行解析获取数据

defGetData(self, url):"""获取数据"""

#将打开的页面数据信息进行解码UTF-8

html = self.OpenPage(url).decode("utf-8")#print(html)

#获取的得数据为json格式,使用json库来进行解析获取所需数据

HtmlJSON =json.loads(html)

DataJSON= HtmlJSON.get("data")

updateInfo= DataJSON.get("updateInfo")

ListJSON= DataJSON.get("list")#print(type(ListJSON))

#print(updateInfo[-9:])

#获取猫眼实时统计的时间-数据展示的时间为:北京时间 12:00:00 改为 年 月 日 时 分 秒

statisTime = datetime.datetime.now().strftime("%Y-%m-%d") + updateInfo[-9:]#print(statisTime)

for ItemList inListJSON:

MovieData=[]

MovieData.append(ItemList["movieName"]) #影片movieName

MovieData.append(ItemList["releaseInfo"]) #上映天数releaseInfo

MovieData.append(ItemList["sumBoxInfo"]) #累计票房sumBoxInfo

MovieData.append(ItemList["boxInfo"]) #综合票房boxInfo

MovieData.append(ItemList["boxRate"]) #票房占比boxRate

MovieData.append(ItemList["showInfo"]) #排片场次showInfo

MovieData.append(ItemList["showRate"]) #排片占比showRate

MovieData.append(ItemList["avgShowView"]) #场均人次avgShowView

MovieData.append(ItemList["avgSeatView"]) #上座率avgSeatView

MovieData.append(statisTime)#print(MovieData)

#self.SaveDataByDB(MovieData)

self.SaveDataByFile(MovieData)

View Code

解析html获取数据之后,使用数据库和文件形式进行保存,使用MYSQL数据保存,需要调用pymysql模块。

defSaveDataByDB(self, MovieData):"""通过MYSQL数据库保存数据"""

#连接数据库

conn = pymysql.connect(database="SpiderDataDB", host = "127.0.0.1", port = 3306, user = "root", passwd = "111111", charset="utf8")#设置游标

cursor =conn.cursor()

strSql= "insert into MaoYanMovieData values (0, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"

#执行插入语句

cursor.execute(strSql, MovieData)#提交事务

conn.commit()#关闭连接

cursor.close()

conn.close()

View Code

成功执行之后可以在数据库中查看到数据信息

使用txt文件格式进行保存数据,把数据保存在py文件同级目录下,需要用到os模块

defSaveDataByFile(self,MovieData):"""通过文件形式保存数据"""

#获取当前项目的工作目录

DirPath =os.getcwd()#print(DirPath)

#E:\PythonByVSCode

#将数据保存在py文件的同一个目录下

FilePath = DirPath + "\\SpiderProject\\MaoYanMovieSpider\\MovieData.txt"with open(FilePath,'a') as f:

f.write(','.join(MovieData))

f.write("\n")

View Code

执行成功之后,可以在py文件同级目录下找到txt文件

该文件中保存了所需要的数据信息,再写入文件时 使用了逗号进行数据种类区分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值