|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
爬虫背景:昨天论坛以为兄弟让分析幻音歌单的网页,我在公司查看了一下,发现页面并不复杂,于是给了个答案,得了最佳。
。。。
这不是重点,重点是,我也是第一次看到这个二次元音乐网站,突然发现上面的歌单挺好听的
于是,觉得下班自己爬一份歌单出来
。。。
。。。——————————————————————————————————————————分割线
于是,爬虫来了
我这个爬虫分为2个部分,主要的部分是爬虫文件spider,另一部分是存储数据的部分(这个部分一个人爱好,我有时候懒得写这个部分就直接存到CSV中,不过这次是为了熟悉一下Excel库的用法,就用Excel来存储的,之后可能改为数据库,这个部分的代码就免了,因为没必要)
主爬虫代码如下(其中有几句是用来存储信息的,大家自己去看吧,代码很简单,因为这个网站的信息都是json,很好整理)
大家可以把这个思路拿过去,然后换成多线程啊(我之所以没用多线程是怕封IP,因为要请求1500次,为什么是1500次可以自己去看看)
- '''
- 幻音网歌单信息爬虫
- '''
- import requests
- import json
- import time
- from Savedata import myExcel #这个是导入我存数据的文件
- class myspider(object):
- def __init__(self):
- self.headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
- " (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36"}
- self.myexcel = myExcel()
- self.line = 1
- # 提取所有歌单的信息
- def get_playlists(self,url):
- req = requests.get(url,headers=self.headers)
- req.encoding = "utf-8"
- infos = json.loads(req.text)
- big_lists = infos["genres"]
- for each in big_lists:
- small_lists = each["playlists"]
- for anylist in small_lists:
- link = "http://www.huanmusic.com/playlist/{}".format(anylist["_id"])
- anylist["link"] = link
- # 由于请求歌单的信息可能失败,因此使用try语句
- try:
- the_data = self.get_one_playlist(link)
- anylist["collect"] = the_data[0]
- anylist["create_date"] = the_data[1]
- except:
- anylist["collect"] = "miss"
- anylist["create_date"] = "miss"
- print(anylist)
- self.myexcel.save_data(self.line,anylist) #保存信息
- self.line += 1
- self.myexcel.save_excel()
- print("歌单信息保存完毕!")
- # 获取单个歌单的基本信息,主要是获取创建时间和收藏数,返回一个元祖
- def get_one_playlist(self,list_url):
- headers = {
- "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
- " Chrome/57.0.2987.110 Safari/537.36",
- "Host":"www.huanmusic.com"
- }
- req = requests.post(list_url,headers=headers,timeout=5)
- data = json.loads(req.text)
- collect = data["collect"]
- create_date = data["create_date"]
- return (collect,create_date)
- if __name__ == '__main__':
- url = "http://net.huanmusic.com/g_v1_20170713"
- t = time.time()
- spider = myspider()
- spider.get_playlists(url)
- tt = time.time()
- print("耗时:{:.2f}秒".format(float(tt-t)))
复制代码
关于爬到 的信息,我存到了Excel里面,总计本来是有1500个歌单的信息的,
我删除了重复性之后剩下1050个左右
看看成果吧
附件是歌单表格,喜欢二次元音乐的可以下载按照表格的信息去选择自己喜欢的歌单(可以按照Popular和收藏2个参数)
|
评分
-
参与人数 1 | 荣誉 +10 |
鱼币 +10 |
贡献 +8 |
收起
理由
|
小甲鱼
| + 10 |
+ 10 |
+ 8 |
感谢楼主无私奉献! |
查看全部评分
|