本文是爬虫及可视化的练习项目,目标是爬取猫眼票房的全部数据并做可视化分析。
1、获取url
我们先打开猫眼票房http://piaofang.maoyan.com/dashboard?date=2019-10-22 ,查看当日票房信息,
但是在通过xpath对该url进行解析时发现获取不到数据。
于是按F12打开Chrome DevTool,按照如下步骤抓包
再打开获取到的url: http://pf.maoyan.com/second-box?beginDate=20191022
可以看到是json数据,并且url是以日期结尾的,也就是每日的票房数据都保存在对应日期的url中,这样我们就可以通过构造url来爬取每天的票房数据。
2、开始采集
先创建了两个函数,
一个用来获取制定年份的所有日期,例如,传入2019,返回['20190101', '20190102'...'20191230', '20191231']。
当然也可以传入多个年份的列表,如[2016,2017,2018'],返回 ['20160101','20160102', ...'20170101',...'20180101',...'20181231']
这里没有使用任何库,用笨方法手动构造了全年的日期列表。
def get_calendar(years): """ 传入年份(可用list传入多个年份),得到年份中的所有日期 :param years: 可传入list、int、str :return: 年份中全部日期的list,日期格式: "2019-09-30" """ mmdd = [] # 判断传入参数的格式,如果是list则排序,如果是str或int则转为list if isinstance(years, list): years.sort() else: years = [int(years)] # 先为每个月都加入31天,然后删掉2,4,6,9,11的31日和2月的30日,再判断闰年来删掉2月29日