回家很久了,实在熬不住,想起来爬点数据玩一玩,之前自己笔记本是win7加ubuntu16.04双系统,本打算在ubuntu里写代码的,可是回到家ubuntu打开一直是紫屏,百度知乎方法用了也没解决,厉害的兄弟可以教下我哦,过年有红包哦!!然后就还是在win7下开始写代码了(电脑太卡,一直不想装Python),今天爬的是豆瓣音乐top250,比较简单,主要是练练手。

代码import requestsimport refrom bs4 import BeautifulSoupimport timeimport pymongo

client = pymongo.MongoClient('localhost', 27017)

douban = client['douban']

musictop = douban['musictop']

headers = {    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

urls = ['https://music.douban.com/top250?start={}'.format(str(i)) for i in range(0,250,25)]def get_url_music(url):

wb_data = requests.get(url,headers=headers)

soup = BeautifulSoup(wb_data.text,'lxml')

music_hrefs = soup.select('a.nbg')    for music_href in music_hrefs:

get_music_info(music_href['href'])

time.sleep(2)def get_music_info(url):

wb_data = requests.get(url,headers=headers)

soup = BeautifulSoup(wb_data.text,'lxml')

names = soup.select('h1 > span')

authors = soup.select('span.pl > a')

styles = re.findall('流派: (.*?)
',wb_data.text,re.S)

times = re.findall('发行时间: (.*?)
',wb_data.text,re.S)

contents = soup.select('span.short > span')    if len(names) == 0:

name = '缺失'

else:

name = names[0].get_text()    if len(authors) == 0:

author = '佚名'

else:

author = authors[0].get_text()    if len(styles) == 0:

style = '未知'

else:

style = styles[0].split('\n')[0]    if len(times) == 0:

time = '未知'

else:

time = times[0].split('-')[0]    if len(contents) == 0:

content = '无'

else:

content = contents[0].get_text()

info = {        'name':name,        'author':author,        'style':style,        'time':time,        'content':content

}

musictop.insert_one(info)for url in urls:

get_url_music(url)

1加了请求头(本来没加,调试几次突然没数据了,加了请求头开始也没好,后来又好了,可能是网络原因)

2这次是进入信息页爬的数据(上次爬电影没采用这种方法,缺少了部分数据)

3数据的预处理用了很多if函数,厉害的兄弟有什么优化的方法。

数据分析

1部分数据可以见上图

2中国音乐作者还是很多的,哈哈。

3随着音乐设备和网络的普及,流行音乐的发展,可以看出2000年后作品越来越多,到2010年又积极下滑(经典就是经典,无法吐槽现在的音乐)

4风格大家可以看出流行,摇滚,民谣占了一大半。

5最后弄了一首周董的《不能说的秘密》做词云,想想小时候都是回忆啊。

问题import requestsimport refrom bs4 import BeautifulSoupimport timeimport pymysql

conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='test', port=3306, charset='utf8')

cursor = conn.cursor()

headers = {    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

urls = ['https://music.douban.com/top250?start={}'.format(str(i)) for i in range(0,225,25)]def get_url_music(url):

wb_data = requests.get(url,headers=headers)

soup = BeautifulSoup(wb_data.text,'lxml')

music_hrefs = soup.select('a.nbg')    for music_href in music_hrefs:

get_music_info(music_href['href'])

time.sleep(2)def get_music_info(url):

wb_data = requests.get(url,headers=headers)

soup = BeautifulSoup(wb_data.text,'lxml')

names = soup.select('h1 > span')

authors = soup.select('span.pl > a')

styles = re.findall('流派: (.*?)
',wb_data.text,re.S)

times = re.findall('发行时间: (.*?)
',wb_data.text,re.S)

contents = soup.select('span.short > span')    if len(names) == 0:

name = '缺失'

else:

name = names[0].get_text()    if len(authors) == 0:

author = '佚名'

else:

author = authors[0].get_text()    if len(styles) == 0:

style = '未知'

else:

style = styles[0].split('\n')[0]    if len(times) == 0:

time = '未知'

else:

time = times[0].split('-')[0]    if len(contents) == 0:

content = '无'

else:

content = contents[0].get_text()

info = {        'name':name,        'author':author,        'style':style,        'time':time,        'content':content

}

cursor.execute("use test")

cursor.execute("insert into doubanmusic250 (name,author,style,time,content) values(%s,%s,%s,%s,%s)", (name,author,style,time,content))

conn.commit()for url in urls:

get_url_music(url)

最近再学mysql,想用Python连接MySQL的,可是出错,附上代码,大牛们前来指导。代码出错图:

祝福

在这里住大家新年快乐,鸡年大吉。

作者:罗罗攀

链接:https://www.jianshu.com/p/1f40c00cc233

利用python爬取豆瓣音乐_python爬虫之豆瓣音乐top250相关推荐

  1. 利用python爬取租房信息_Python爬虫实战(1)-爬取“房天下”租房信息(超详细)

    #前言html 先看爬到的信息:python 今天主要用到了两个库:Requests和BeautifulSoup.因此我先简单的说一下这两个库的用法,提到的都是此文须要用到的.编程 #Requests ...

  2. python爬取cctalk视频_python爬虫urllib使用和进阶 | Python爬虫实战二

    python爬虫urllib使用和进阶 上节课已经介绍了爬虫的基本概念和基础内容,接下来就要开始内容的爬取了. 其实爬虫就是浏览器,只不过它是一个特殊的浏览器.爬取网页就是通过HTTP协议访问相应的网 ...

  3. python爬取控制台信息_python爬虫实战之爬取智联职位信息和博客文章信息

    1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author  ...

  4. python爬取网页停止_Python爬虫之爬取静态网页

    所谓网络爬虫,通俗的讲,就是通过向我们需要的URL发出http请求,获取该URL对应的http报文主体内容,之后提取该报文主体中我们所需要的信息.所以,想要学习python爬虫,需要具备一些http的 ...

  5. python爬取学校新闻_python爬虫爬取新闻的简单实现

    我们通常是使用爬虫爬取网站信息,其实网络爬虫是一种应用于搜索引擎的程序.使用python爬虫可以将一个网站的所有内容与链接进行阅读.例如我们每日都要获取新闻信息,利用python爬虫就可以帮助我们爬取 ...

  6. python爬取股票评论_Python爬虫股票评论,snowNLP简单分析股民用户情绪

    原标题:Python爬虫股票评论,snowNLP简单分析股民用户情绪 一.背景 股民是网络用户的一大群体,他们的网络情绪在一定程度上反映了该股票的情况,也反映了股市市场的波动情况.作为一只时间充裕的研 ...

  7. python爬取数据步骤_Python爬虫爬取数据的步骤

    爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多 ...

  8. python爬取多页_Python 爬虫 2 爬取多页网页

    本文内容: Requests.get 爬取多个页码的网页 例:爬取极客学院课程列表 爬虫步骤 打开目标网页,先查看网页源代码 get网页源码 找到想要的内容,找到规律,用正则表达式匹配,存储结果 Re ...

  9. python爬取新闻网站内容_python爬虫案例:抓取网易新闻

    此文属于入门级级别的爬虫,老司机们就不用看了. 本次主要是爬取网易新闻,包括新闻标题.作者.来源.发布时间.新闻正文. 首先我们打开163的网站,我们随意选择一个分类,这里我选的分类是国内新闻.然后鼠 ...

  10. python爬取小说基本信息_Python爬虫零基础实例---爬取小说吧小说内容到本地

    Python爬虫实例--爬取百度贴吧小说 写在前面本篇文章是我在简书上写的第一篇技术文章,作为一个理科生,能把仅剩的一点文笔拿出来献丑已是不易,希望大家能在指教我的同时给予我一点点鼓励,谢谢. 一.介 ...

最新文章

  1. 条件限制select into_SQL全部知识点(夺回控制台掌控权,转义符,SELECT特定列,AND,OR,查询数值,比较运算)...
  2. mysql数据库备份出错_mysql数据库备份成功,再还原却失败,什么原
  3. tornado post第3方_[33]python-Web-框架-Tornado
  4. wso2 esb_通过运行示例从WSO2 ESB开始
  5. Redhat7配置bond
  6. android studio创建一个类继承application_带你全方位了解Android中的Context
  7. Hudi on Flink 快速上手指南
  8. 工具系列————linux系统中安装fortran编译器(ifort)
  9. android手机鼠标,安卓手机变鼠标以及手机控制电脑图文教程
  10. 工程笔记阶段1-DAC正弦波实验
  11. 台式机与笔记本辐射谁大
  12. 大数据人工智能技术全攻略(一)
  13. C#获取本地IP地址
  14. [附源码]java+ssm计算机毕业设计个人所得税服务系统0dol2(源码+程序+数据库+部署)
  15. 考试系统服务器考试机,考试系统
  16. 计算机办公软件office的考试试题,中职计算机办公软件Word2010年最新考试试题.doc...
  17. 【VUE+Mapbox】mapbox地图在vue中展示所遇问题解决
  18. 基于AI的自然语言处理
  19. Python 调用百度翻译接口实现翻译
  20. echarts map地图geojson/json格式的简单使用

热门文章

  1. hexo文章插入音乐和视频
  2. Java项目增加第三方包org.json com.alibaba.fastjson.JSON
  3. T02 - 002、深圳市法本信息技术有限公司
  4. lv2:JavaScript(一)
  5. 彩虹云任务7.2的视频搭建教程+源码
  6. Matlab与Python高级用法【专栏总结】
  7. 苹果11怎么把计算机添加到快捷键,苹果11apple pay快捷键使用方法
  8. 电商宝一个月用户增长10万 创SaaS行业新纪录
  9. iOS 开发者账号添加新的管理成员用于上传APP
  10. 十三、机器学习四大神器之XGBoost、LightGBM、Catboost和NGBoost