学习记录:

哈喽,没几天就要要开学咯,嘿嘿~~

一、目标网址分析

艺恩娱数 , 进入网址,现在想要对这些内容进行获取,并保存在本地。

 我们右键网页源代码:

 发现是上图这样。。。那就先来到下图,看能不能找到数据:

 刷新一下找找,在这里就我们想要的数据了。

 继续,我们在返回给我们的数据复制出来看看:

 下面json数据:

 再就是,post请求和参数的添加

 参数:

 好了,下面是代码部分:

二、代码实现

"""
2022年

CSDN:抄代码抄错的小牛马
"""
import json
import requests
import pandas as pd

url = 'https://ys.endata.cn/enlib-api/api/home/getrank_mainland.do'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36',
    'Referer': 'https://star.endata.com.cn/Star/Search',
    'Cookie': 'gr_user_id=e02d77a6-c15e-4077-8d85-4e171ed25f7b; a92bf18a95cb2b3c_gr_session_id=68a47e59-b9c5-4c7c-a3a6-c0274bc4f477; a92bf18a95cb2b3c_gr_session_id_68a47e59-b9c5-4c7c-a3a6-c0274bc4f477=true; Hm_lvt_3dd500c95a0505fd002b19136f7a4543=1644111159,1644111330,1644112175,1644112389; Hm_lpvt_3dd500c95a0505fd002b19136f7a4543=1644112474'
}
data = {
    'r': 0.7693057458600729,
    'top': 100,
    'type': 0
}

resp = requests.post(url=url, headers=headers, data=data).text

打印数据看看: 上面data参数中的 top 是票房前多少的排名,可以修改自己想要的榜单数据。

 现在就可以去处理数据了:反序列化把json数据转为Python对象,并取到我们想要的数据所处在的列表

dict_list = json.loads(resp)  
mov_list = dict_list['data']['table0']

 再,提取数据:

name = [mov_list["MovieName"] for mov_list in mov_list]
print(name)
time = [mov_list["ReleaseTime"] for mov_list in mov_list]
max_price = [mov_list["BoxOffice"] for mov_list in mov_list]
avg_people = [mov_list["AvgAudienceCount"] for mov_list in mov_list]
avg_price = [mov_list["AvgBoxOffice"] for mov_list in mov_list]

每次提取后,可以打印出来检查看看:

 现在,就可以来保存数据了:


down_load = pd.DataFrame({'电影名称': name, '上映时将': time, '累计票房(万)': max_price,
                          '场均人次': avg_people, '平均票价': avg_price})
down_load.to_csv('d:/艺恩票房.csv')

总代码:

"""
2022年

CSDN:抄代码抄错的小牛马
"""
import json
import requests
import pandas as pd

url = 'https://ys.endata.cn/enlib-api/api/home/getrank_mainland.do'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36',
    'Referer': 'https://star.endata.com.cn/Star/Search',
}

data = {
    'r': 0.7693057458600729,
    'top': 100,
    'type': 0
}
resp = requests.post(url=url, headers=headers, data=data).text
dict_list = json.loads(resp)
mov_list = dict_list['data']['table0']

name = [mov_list["MovieName"] for mov_list in mov_list]
time = [mov_list["ReleaseTime"] for mov_list in mov_list]
max_price = [mov_list["BoxOffice"] for mov_list in mov_list]
avg_people = [mov_list["AvgAudienceCount"] for mov_list in mov_list]
avg_price = [mov_list["AvgBoxOffice"] for mov_list in mov_list]

down_load = pd.DataFrame({'电影名称': name, '上映时将': time, '累计票房(万)': max_price,
                          '场均人次': avg_people, '平均票价': avg_price})
down_load.to_csv('d:/艺恩票房.csv')

运行看看:

 

哦可~~~


 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐