前言


这段时间正在学习python爬虫,今天分享一个关于酷狗音乐top500的爬虫


python库

标准库
time

第三方库
requests库
BeautifulSoup库

自建库
agent库(自己创建)

编译环境

python版本:3.5

工具:pycharm

agent库

使用python爬虫,我们有时候需要伪造成浏览器去发出请求,创建一个代理的库,每次编写爬虫脚本从中随机选取一个,方便快捷

agent模块

#伪造浏览器# -*-coding:utf-8 -*-import random# 返回一个随机的请求头 headers
def getheaders():# 各种PC端user_agent_list_2 = [# Opera"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60","Opera/8.0 (Windows NT 5.1; U; en)","Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50",# Firefox"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0","Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10",# Safari"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2",# chrome"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11","Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16",# 360"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36","Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",# 淘宝浏览器"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11",# 猎豹浏览器"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E; LBBROWSER)",# QQ浏览器"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",# sogou浏览器"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)",# maxthon浏览器"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.3.4000 Chrome/30.0.1599.101 Safari/537.36",# UC浏览器"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36",]#各种移动端user_agent_list_3 = [# IPhone"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",# IPod"Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",# IPAD"Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5","Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5",# Android"Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1","Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",# QQ浏览器 Android版本"MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",# Android Opera Mobile"Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; en-GB) Presto/2.8.149 Version/11.10",# Android Pad Moto Xoom"Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13",# BlackBerry"Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+",# WebOS HP Touchpad"Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0",# Nokia N97"Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124",# Windows Phone Mango"Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)",# UC浏览器"UCWEB7.0.2.37/28/999","NOKIA5700/ UCWEB7.0.2.37/28/999",# UCOpenwave"Openwave/ UCWEB7.0.2.37/28/999",# UC Opera"Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999"]# 一部分 PC端的user_agent_list_1 = ["Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1","Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5","Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3","Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24","Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"]user_agent_list = user_agent_list_1+user_agent_list_2+user_agent_list_3;UserAgent = random.choice(user_agent_list)headers = {'User-Agent': UserAgent}return headers

只需将agent.py文件放入经常进行脚本编译的工作目录下,即可调用

主程序

import requests
import agent    # 调用agent模块
from bs4 import BeautifulSoup   # 引用BeautifulSoup库中的bs4函数
import time# 文件爬取
def spider(url, data, count):try:r = requests.get(url, headers=agent.getheaders(), timeout=10)   # 发出请求,设置代理,与超时时间soup = BeautifulSoup(r.text, "html.parser")ranks = soup.select("span.pc_temp_num")titles = soup.select("div.pc_temp_songlist>ul>li>a")    # 注意获取到的内容是以列表的形式times = soup.select("span.pc_temp_tips_r>span")for rank_s, title_s, time_s in zip(ranks, titles, times):data.append([])count += 1data[count].append(rank_s.get_text().strip())  data[count].append(title_s.get_text().split("-")[0])data[count].append(title_s.get_text().split("-")[1])data[count].append(time_s.get_text().strip())print("排名:{}\t歌手:{}\t歌曲:{}\t时长:{}\t".format(data[count][0], data[count][1], data[count][2], data[count][3]))time.sleep(1)   # 设置睡眠时间,限制爬取网站数据速率,休眠一秒except():print("爬取失败")# 文件存储
def save(data):try:f = open("data.txt", "w+", encoding="utf-8")    # 将爬取的内容存储到本地文件中,“w+”检测是否有此文件,没有则创建for mess in data:for mes in mess:f.write(mes)f.write("\n")f.close()except:print("Data Error")def main():urls = ["https://www.kugou.com/yy/rank/home/{}-8888.html?from=rank".format(str(i)) for i in range(1, 24)]  #循环创建地址datas = []count = -1for url in urls:spider(url, datas, count)count += 22save(datas)if __name__ == "__main__":main()

爬虫会自动爬取榜单上歌手的排名,姓名,歌曲名称,歌曲时长等信息
爬取后存放在本地文件中,以下为我爬取的部分数据

后记

本文章将爬取的信息放入到了本地的txt文件中,而工作中我们常用excel来保存处理数据,这样更加方便快捷,下一篇我将使用一个python库实现文件保存入excel表中。
此外,一般网站主目录下"robots.txt"中有网站制定的规则,请遵循网站的规则,合理的使用爬虫,遵纪守法。

分享

一定要看

python爬虫爬取酷狗top5001相关推荐

  1. Python爬虫爬取酷狗音乐TOP500

    Python大作业 内容简介: 用Python来爬取酷狗音乐TOP500的歌曲信息,统计这500首歌曲中出现的所有歌手,并做可视化处理生成词云 实验代码: import time import req ...

  2. Python爬虫 爬取酷狗TOP500的数据

    根据书籍<从零开始学Python网络爬虫>P41,综合案例2-爬取酷狗TOP500的数据修改而来. 使用模块requests和模块BeautifukSoup进行爬取. 不得不说,酷狗拿来跑 ...

  3. python爬虫——爬取酷狗音乐top500(BeautifulSoup使用方法)

    酷狗音乐Top500 酷狗top500http://www.kugou.com/yy/rank/home/1-8888.html?from=rank 进入,并按F12打开开发者工具(本文以火狐浏览器为 ...

  4. python爬虫-爬取酷狗音乐top榜

    酷狗音乐top500榜单就是我们今天需要爬取的对象,作为新手入门的代码,只需要将信息爬取下来即可,十分简单,不需要保存到数据库或保存到文件,仅当普通练习. https://www.kugou.com/ ...

  5. python爬虫爬取酷狗音乐

    老规矩,代码先行 # -*- codeing = utf-8 -*- # @Time : 2021/2/25 13:17 # @Author : 老七疯狂吸氧 # @file 酷狗音乐.py # @S ...

  6. Python爬虫之爬取酷狗音乐歌曲

    Python爬虫之爬取酷狗音乐歌曲 1.安装第三方库 在Python的语言库中, 分为Python标准库和Python的第三方库. Python标准库是在你安装Python的时候已经包含在了安装目录下 ...

  7. Python爬虫入门——2. 2爬取酷狗音乐top1-500歌曲信息

    有了第一个程序的基础,我们现在来爬取酷狗音乐top500的歌曲信息.连接http://www.kugou.com/yy/rank/home/1-8888.html 我们第一个程序只爬取了一个页面的数据 ...

  8. Python疫起学习·万丈高楼平地起Day09(精简版|浓缩就是精华)爬虫知识附上案例爬取北京地区短租房信息、爬取酷狗TOP500的数据以及爬取网易云音乐热歌榜单

    爬虫知识 Requests库 部分运行结果如下: 有时爬虫需要加入请求头来伪装成浏览器,以便更好地抓取数据.在Chrome浏览器中按F12键打开Chrome开发者工具,刷新网页后找到User-Agen ...

  9. Python爬虫案例:爬取酷狗音乐全排行榜歌曲

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本次目标 爬取酷狗音乐全站排行榜歌曲 目标地址 https://www.ku ...

最新文章

  1. windows10 中 安装 ffmpeg
  2. 云服务商正在杀死开源商业模式
  3. 第二讲 命令源码文件
  4. apache spark_Apache Spark:更改架构之前必须解决的5个陷阱
  5. 一般java,【面试题】java一般
  6. Mysql - 解决Access denied for user ''@'localhost' to database 'mysql'问题
  7. 微信公开课讲师黄咪咪:熟读规则,玩转小游戏
  8. Unicode-GBK映射表下载。
  9. Ukey双因素身份认证步骤 安当加密
  10. SAP ABAP 字符串替换
  11. python回归分析
  12. Android 谷歌拼音输入法最新发布
  13. 大数据Hadoop、Hive、Kafka、Hbase、Spark等框架面经
  14. ssm:Unable to process Jar entry
  15. 小程序开发效率提升(持续更新)
  16. apollo github的说明介绍
  17. 线性代数:第四章 向量组的线性相关性(1)向量组的线性相关性 向量组的秩
  18. MySQL 自动故障转移工具--mysqlfailover
  19. 基于视觉的Web页面分页算法VIPS的实现源代码下载
  20. vue+elementUI三级复选框 checkbox (角色管理)

热门文章

  1. 成都各大商圈酒店主要客群及受到疫情影响程度浅析
  2. EMC经典问答85问(1-5问)
  3. 【路径规划】基于PSO的路径规划问题【Matlab代码#7】
  4. 计算机项目化教学,计算机教学中项目化教学应用计算机教学论文计算机论文
  5. yapi连接mongodb集群
  6. 输入一个字符串并判断英文字母个数、中文字母个数
  7. Mac 10.12安装截图工具Jietu
  8. C# 里氏转换(父类转换成子类)( is as )
  9. oracle net config失败,安装配置时失败,[INS-20802] Oracle Net Configuration Assistant 失败。...
  10. MAC 命令行 查看硬盘和文件夹大小(占用空间)