一、案例一:酷狗top50

分析:

1.Requests库用于请求网页获取网页数据,BeautifulSoup用于解析网页数据,time库的sleep()方法可以让程序暂停

2.添加User-Agent,用于伪装为浏览器,便于爬虫的稳定性。

3.定义get_info()函数,用于获取网页信息并输出信息。

4.程序的主入口利用列表的推导式构造23个URL,并依次调用get_info()函数

代码:

import requests

from bs4 import BeautifulSoup

import time #导入相应的库文件

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

def get_info(url):

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

soup = BeautifulSoup(wb_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().split('-')[0],

'song': title.get_text().split('-')[0], # 通过split获取歌手和歌曲信息

'time': time.get_text().strip()

}

print(data) # 获取爬虫信息并按字典格式打印

if __name__ == '__main__': # 程序主入口

urls = ['http://www.kugou.com/yy/rank/home/{}-8888.html'.format(str(i)) for i in range(1, 24)] # 构造多页URL

for url in urls:

get_info(url) # 循环调用get_info()函数

time.sleep(1) # 睡眠1秒

二、案例二:下载网易云top50

from bs4 import BeautifulSoup

import requests

import json

import os

import time

class Music:

def __init__(self, init_url, download):

self.init_url = init_url

self.download = download

def mkdir(self, path):

path = path.strip()

if not os.path.exists(path): # 判断此文件夹存不存在

print('创建 ', path, '文件夹')

os.makedirs(path)

return True

else:

print(path, '文件夹已存在,无需创建')

return False

def download_video(self, video_url, name):

path = self.download + "\" + name + '.mp3' # 拼接保存后的文件路径

# print(path)

headers = {

"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36",

}

header = {

"Origin": "http://music.163.com/",

"Referer": video_url, # 请求头必须添加referer

}

headers.update(header) # 更新头部信息

size = 0

start = time.time()

try:

result = requests.get(video_url, headers=headers, stream=True, verify=False)

# print('result', result)

with open(path, "wb") as f:

for chunk in result.iter_content(1024):

f.write(chunk)

f.flush() # 清空缓存

size = size + len(chunk)

print("已下载:%0.2f Mb" % (size / (1024 * 1024)))

except Exception as e:

print("url下载错误:%s" % video_url)

print(e)

stop = time.time()

print("下载完成,耗时:%0.2f秒" % (stop - start))

def spider(self):

r = requests.get(self.init_url).text

soupObj = BeautifulSoup(r, 'lxml')

song_ids = soupObj.find('textarea').text

# print(song_ids)

jobj = json.loads(song_ids)

list01 = []

for item in jobj:

dict01 = {}

# print(item['id']) # 歌曲id

# print(item['name']) # 歌曲名称

dict01['name'] = item['name']

dict01['id'] = item['id']

list01.append(dict01)

print(list01)

len_list = len(list01)

print("一共", len_list, "首歌曲")

self.mkdir(self.download)

print('开始切换文件夹')

os.chdir(self.download)

for i in list01:

name = i['name']

id = i['id']

song_url = "http://music.163.com/song/media/outer/url?id=" + str(id) + ".mp3"

print(song_url) # 最终下载的音乐链接

self.download_video(song_url, name) # 下载

len_list = len_list - 1

print("还剩", len_list, "首歌曲需要下载")

if __name__ == '__main__':

init_url = 'https://music.163.com/artist?id=30284835' # 枯木逢春

download = 'D:\Music\downloads' # 保存地址

s = Music(init_url, download)

s.spider()

python爬虫案例-python爬虫案例相关推荐

  1. python 获取用户ip_Python爬虫教程:你还在苦苦拉票吗?刷票小程序案例原理剖析!...

    你还在苦苦拉票吗? 前言 剖析投票原理 处理思路 具体实战 主要流程 具体细节python 代码实例python 具体细节java 代码实现java 总结 点击此处,获取海量Python学习资料! 前 ...

  2. python爬虫案例-Python爬虫案例集合

    原标题:Python爬虫案例集合 urllib2 urllib2是Python中用来抓取网页的库,urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用) 在python2.x里 ...

  3. python爬虫数据可视化_适用于Python入门者的爬虫和数据可视化案例

    本篇文章适用于Python小白的教程篇,如果有哪里不足欢迎指出来,希望对你帮助. 本篇文章用到的模块: requests,re,os,jieba,glob,json,lxml,pyecharts,he ...

  4. python爬虫入门 - 代码、案例集合

    python爬虫入门 - 代码.案例集合 资源案例 · 统计 · 如下: 10个Python爬虫入门实例 以上就是关于"python爬虫入门 - 代码.案例集合"的全部内容.

  5. python爬虫应用实例_Python爬虫进阶必备 | 一个典型的 AES 加密在爬虫中的应用案例...

    一个典型的AES案例 AES 的案例之前有推荐大家关于 AES 加密的案例文章,不少朋友问我加密解决了有什么用? 最大的用途当然就是不用模拟请求,大大提高了爬取效率. 可能之前举例都是使用的 AES ...

  6. python爬虫教程-Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门!

    原标题:Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门! Python简直就是万能的,你用Python都做过哪些事? 用网页看各大网站的VIP视频,用python下载? 用Pytho ...

  7. python爬虫实战——猫眼电影案例

    python爬虫实战--猫眼电影案例 ·背景   笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信 ...

  8. Python爬虫之Js逆向案例(2)-某乎搜索

    Python爬虫之Js逆向案例(2)-知乎搜索 声明:某乎加密逆向分析仅用于研究和学习 大家好,今天继续分享关于某乎关键词搜索接口为案例的Js逆向实战.如果你是一名新手,而且还没有来得及看上一篇< ...

  9. Python爬虫之Js逆向案例(12)-知乎答案批量获取保存到CSV文件

    声明:知乎答案批量获取分析仅用于研究和学习,如有侵权,可联系删除 大家好,本期分享的内容是一个关于批量获取知乎答案的案例,本案例的重点是教大家在写爬虫时如何更规范的去编写自己的爬虫.场景是这样的,最近 ...

  10. Python爬虫---爬虫介绍,实战案例

    目录标题 1.爬虫介绍 1.1 爬虫的合法性 1.2 网络爬虫的尺寸 1.3 robots.txt协议 1.4 http&https协议 1.5 requests模块 1.5.1 reques ...

最新文章

  1. 想要学习却又无从下手?新手程序员如何自我提升
  2. 保证高可用Java服务化系统高效运行的必备工具箱
  3. WinForm组件开发:构造ImageButton控件
  4. [css]我要用css画幅画(四)
  5. form转json:jquery.serializeJSON
  6. (二)Linux下的crontab定时执行任务命令详解
  7. 积跬步-java任职要求
  8. gcc编译c文件的简单操作
  9. linux常用翻页,20150823-Linux常用命令
  10. NOI.AC #31. MST
  11. 小米立 Flag:要做年轻人的第一个深度学习框架
  12. vsftpd虚拟用户整理
  13. dos命令如何查看计算机信息,电脑DOS命令查看进程详细信息方法图解
  14. SmartDrv的前世今生——PrimoCache_2.2.0汉化
  15. 2021英一Text4精读、背景和语法分析(网络中立是生是死?难下定论)
  16. 「Android高级工程师」BAT大厂面试基础题集合-下-Github标星6-5K
  17. Mybatis-plus学习-最全细致讲解
  18. 展会中,你做得够好么?
  19. Eventide 2022假日活动
  20. 计算机统计模式的符号,科学计算器的统计的符号有哪些?

热门文章

  1. linux_tomcat
  2. 20180315 代码错题(1)
  3. mac下安装nginx
  4. 理解数据成员指针、函数成员指针
  5. 团队项目技术规格说明书---客户端
  6. iphone 使用ZBar 条码扫描
  7. 易语言基础编程知识〖E语言手册〗
  8. python冒泡排序算法时间复杂度为nlogn_Python版算法专题-1、冒泡排序
  9. python语言程序设计基础网课-宜昌2020年_高校邦_Python程序设计基础【实境编程】...
  10. 开课吧python学费-分享一个小白也能月赚2万的新技能