python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中


Posted in Python onAugust 24, 2019

爬取TOP500的音乐信息,包括排名情况、歌曲名、歌曲时间。

网页版酷狗不能手动翻页进行下一步的浏览,仔细观察第一页的URL:

http://www.kugou.com/yy/rank/home/1-8888.html

这里尝试将1改为2,再进行浏览,恰好是第二页的信息,再改为3,恰好是第三页的信息,多次尝试发现不同的数字即为不同的页面。因此只需更改home/后面的数字即可。由于每页显示的为22首歌曲,所以总共需要23个URL。

import requests
from bs4 import BeautifulSoup
from time import sleep
import pymongo
#连接数据库
client = pymongo.MongoClient(‘localhost',27017)
mydb = client[‘yourdb']
#创建数据库
musicTop = mydb[‘musicTop']

#使用header是用于伪装为浏览器,让爬虫更稳定
Headers = {
‘User-Agent': ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36'
}
#定义获取信息的函数
def get_info(url):
wd_data = requests.get(url,headers=Headers)
soup = BeautifulSoup(wd_data.text,‘lxml')
#获取排名情况
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,title,time in zip(ranks,titles,times):
data = {
‘rank':rank.get_text().strip(),
‘singer':title.get_text(),
‘song':title.get_text(),
‘time':time.get_text().strip()
}
musicTop.insert_one(data) #存入数据库中
if name == ‘main':
urls = [‘http://www.kugou.com/yy/rank/home/{}-8888.html'.format(number) for number in range(1,24)]
for url in urls:
get_info(url)
sleep(2)

运行后,爬取的数据在mongoDB数据库中显示如下:

python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

以上这篇python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
python自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
python文件操作相关知识点总结整理
Feb 22 Python
Django forms组件的使用教程
Oct 08 Python
Django实现一对多表模型的跨表查询方法
Dec 18 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
django的403/404/500错误自定义页面的配置方式
May 21 Python
Python flask路由间传递变量实例详解
Jun 03 Python
Python中qutip用法示例详解
Oct 02 Python
python Matplotlib基础--如何添加文本和标注
Jan 26 Python
基于PyQt5制作一个群发邮件工具
Apr 08 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 #Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 #Python
简单分析python的类变量、实例变量
Aug 23 #Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 #Python
python-Web-flask-视图内容和模板知识点西宁街
Aug 23 #Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 #Python
python3 selenium自动化 下拉框定位的例子
Aug 23 #Python
You might like
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
深入理解javascript中的this
2021/02/08 Javascript
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
python使用super()出现错误解决办法
2017/08/14 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
python输出带颜色字体实例方法
2019/09/01 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
怎样写留学自荐信
2013/11/11 职场文书
团工委书记自荐书范文
2013/12/17 职场文书
《称象》教学反思
2014/04/25 职场文书
担保贷款承诺书
2015/04/30 职场文书
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL