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

我们第一个程序只爬取了一个页面的数据,而现在我们需要爬取多个页面的数据,即跨页面爬虫。这就需要我们观察网页URL来构造一个列表利用for循环,分次抓取了。接下来看代码:

#导入requests库
import requests
#导入BeautSoup库
from bs4 import BeautifulSoup
#定义请求头,请求头可以使爬虫伪装成浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}
#定义连接网络的列表
url_list = ['http://www.kugou.com/yy/rank/home/{0}-8888.html'.format(str(i)) for i in range(1,24)]for url in url_list:# 利用requests模块连接网络,它可以打开并读取从网络获取的对象html = requests.get(url, headers=headers)#BeautifulSoup通过定位HTML标签来格式化和组织复杂的网络信息soup = BeautifulSoup(html.text, 'lxml')#将歌曲名称,作者存放到列表里面rank_list = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > span.pc_temp_num')#将歌曲名称存放到列表里面name_list = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > a')#将歌曲时间存放到列表里面time_list = soup.select('#rankWrap > div.pc_temp_songlist > ul > li > span.pc_temp_tips_r > span')#将名次,歌名,时间依次打印出来for rank, name, time in zip(rank_list,name_list,time_list):#get_txet()是为了提取文字,去除其他字符。strip()是为了去除空白字符print(rank.get_text().strip(), name.get_text().strip(), time.get_text().strip())

现在我们来分析一下代码:

酷狗一个网页只有22个数据,由于要抓取Top500的数据,所以总共要抓取23页。但是酷狗不支持手动翻页。不过我们可以仔细观察一下酷狗的网页链接http://www.kugou.com/yy/rank/home/2-8888.html,当我们将数字  1  改为数字  2  之后,即可进入页面2,由此我们推断出,通过更改http://www.kugou.com/yy/rank/home/{ } - 8888.html链接即  { }  里面的数字就可以访问不同的页面。我们可以利用format()来进行填充。关于format函数可以参考博文Python字符串格式化--format()方法。在 { }里面填充字符串  1-23(注意,需要用str()函数将 数字 i 转换为字符串,因为网页链接是字符串类型,如果为数字,访问会出问题)

1.首先导入requests库以及BeautifulSoup库,编写headers(关于headers的获取请参考我上一篇博文)

2.利用  format()构造一个链接字符串列表:{0}表示填充的参数是format()里面第一个参数,{6}表示填充的是format()里面第七个参数,由于我们只需要填充一个参数,所以用{0}即可,也可以使用 { };


.format(str(i)) for i in range(1,24)

这一句使用了列表生成式,例 [  i  for  i  in range(10)  ]  ,意思是生成一个区间在 [ 0 ,  10 ) 的列表。而  i for in  range( 1 ,24)的意思是 生成一个 区间在 [ 1 ,  24)的列表。而str( i ) 把生成的数字  int  i  转换为字符 str i  。再利用format()填充到网络连接的 { 0 } 处。这样就可以构造所有的网络连接

http://www.kugou.com/yy/rank/home/1-8888.html
http://www.kugou.com/yy/rank/home/2-8888.html
http://www.kugou.com/yy/rank/home/3-8888.html
http://www.kugou.com/yy/rank/home/4-8888.html
http://www.kugou.com/yy/rank/home/5-8888.html
http://www.kugou.com/yy/rank/home/6-8888.html
http://www.kugou.com/yy/rank/home/7-8888.html
http://www.kugou.com/yy/rank/home/8-8888.html
http://www.kugou.com/yy/rank/home/9-8888.html
http://www.kugou.com/yy/rank/home/10-8888.html
http://www.kugou.com/yy/rank/home/11-8888.html
http://www.kugou.com/yy/rank/home/12-8888.html
http://www.kugou.com/yy/rank/home/13-8888.html
http://www.kugou.com/yy/rank/home/14-8888.html
http://www.kugou.com/yy/rank/home/15-8888.html
http://www.kugou.com/yy/rank/home/16-8888.html
http://www.kugou.com/yy/rank/home/17-8888.html
http://www.kugou.com/yy/rank/home/18-8888.html
http://www.kugou.com/yy/rank/home/19-8888.html
http://www.kugou.com/yy/rank/home/20-8888.html
http://www.kugou.com/yy/rank/home/21-8888.html
http://www.kugou.com/yy/rank/home/22-8888.html
http://www.kugou.com/yy/rank/home/23-8888.html

3.构造完所有的网络连接之后就可以使用  for 循环不断的打印出每个页面的内容了。先利用 requests 来模仿浏览器访问目标网页,获取原网页内容;接着利用 BeautifulSoup 解析网页内容(你可以试着打印出BeautifulSoup解析之后的网页,观察一下是什么结构);然后利用select()来查找我们需要的内容(关于如何写入select的查找条件请参考我上一篇博文Python爬虫入门——2. 1 我的第一个爬虫程序),分别为排名列表,名称列表,时间列表。

4.最后利用  for  循环打印以上内容即可

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

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

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

  2. 使用scrapy 爬取酷狗音乐歌手及歌曲名并存入mongodb中

    备注还没来得及写,共爬取八千多的歌手,每名歌手平均三十首歌曲算,大概二十多万首歌曲 run.py 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 ...

  3. Python网络爬虫实战14:爬取酷狗音乐中top500的歌曲

    1.  网页源码 2.  代码实例 # coding:utf-8 # 第一步:导入相关库 import requests # 用于请求网页获取网页数据 from bs4 import Beautifu ...

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

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

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

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

  6. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  7. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  8. 爬虫训练(三):爬取酷狗音乐

    今天趁机一鼓作气,把简单爬虫内容一次学习完毕,最后以爬取酷狗音乐排行榜歌曲作为结束,然后对此次学习做一个整理和总结.而且前两篇有些混乱,这里把内容做一次阶段性总结. 一.安装包 爬虫三大包:reque ...

  9. Python爬取酷狗音乐-详解(多图预警)

    目录 1.前言 2.分析一下 1. 2. 3. 3.代码解释 4.完整代码 5.结语 1.前言 前面发布了一篇关于QQ音乐爬取的教程,但对于我们这种文艺青年来说,一个平台的歌曲怎么够我们听的,也是因为 ...

最新文章

  1. iOS开发之 - 好玩的富文本
  2. 二.安全NA之ASA基础
  3. 经验总结03-dwr
  4. JSch - Java Secure Channel : java 代码实现服务器远程操作
  5. linux的一些基本命令
  6. CVPR 2021 图像生成最新进展,论文分享会回放
  7. “云计算和大数据”重点专项2017年度项目安排公示
  8. 教你摆脱低级程序猿 项目中cocopads的安装使用
  9. pygame系列文章
  10. listView的最简单的使用方法
  11. 施耐德 m340 编程手册_M251M340在自动化立体仓储的应用
  12. Cadence Allegro贴片封装
  13. html中怎么让照片变模糊,CSS改变图片由模糊到清晰
  14. python求解一元二次方程考虑复数_Python学习笔记:求解一元二次方程
  15. WordNet介绍,一个开放知识图谱
  16. 计算机视频的压缩方式,如何在电脑上对视频进行压缩?一分钟教你学会视频压缩方法...
  17. 小米误删userdata分区,userdata分区无法还原,安卓误删分区,且能进twrp,刷机卡米的情况,重新分区教程
  18. AMD CEO辞职令业内震惊:邓元鋆有点尴尬
  19. 一位架构师用服务打动客户的故事之四
  20. Photoshop如何改变背景底色并调整照片尺寸和图像大小

热门文章

  1. ES5、ES6和ES2015有什么区别?
  2. 华为云计算HCIE之oceanstor仿真器的使用操作
  3. 【PyTorch】1入门——Tensor、自动微分、神经网络、PyTorch 图像分类
  4. Day 09 - Amazon Linux 2 上解决跨来源资源共用 (CORS) 与开机自动启动 uwsgi
  5. 特殊人群康复新途径:虚拟现实技术来帮忙
  6. 博客的写作魅力——如何写出非专业人士和科学家能读懂的博客?
  7. 数学笔记31——幂级数和泰勒级数
  8. web前端培训机构出来的能找到工作吗?30道Web前端面试题收藏版
  9. html小说阅读页面,html页面布局
  10. 使用OpenCV-Python为照片添加不同滤镜(每天一个python小项目)