python爬虫案例-python爬虫案例
一、案例一:酷狗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爬虫案例相关推荐
- python 获取用户ip_Python爬虫教程:你还在苦苦拉票吗?刷票小程序案例原理剖析!...
你还在苦苦拉票吗? 前言 剖析投票原理 处理思路 具体实战 主要流程 具体细节python 代码实例python 具体细节java 代码实现java 总结 点击此处,获取海量Python学习资料! 前 ...
- python爬虫案例-Python爬虫案例集合
原标题:Python爬虫案例集合 urllib2 urllib2是Python中用来抓取网页的库,urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用) 在python2.x里 ...
- python爬虫数据可视化_适用于Python入门者的爬虫和数据可视化案例
本篇文章适用于Python小白的教程篇,如果有哪里不足欢迎指出来,希望对你帮助. 本篇文章用到的模块: requests,re,os,jieba,glob,json,lxml,pyecharts,he ...
- python爬虫入门 - 代码、案例集合
python爬虫入门 - 代码.案例集合 资源案例 · 统计 · 如下: 10个Python爬虫入门实例 以上就是关于"python爬虫入门 - 代码.案例集合"的全部内容.
- python爬虫应用实例_Python爬虫进阶必备 | 一个典型的 AES 加密在爬虫中的应用案例...
一个典型的AES案例 AES 的案例之前有推荐大家关于 AES 加密的案例文章,不少朋友问我加密解决了有什么用? 最大的用途当然就是不用模拟请求,大大提高了爬取效率. 可能之前举例都是使用的 AES ...
- python爬虫教程-Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门!
原标题:Python教父|廖雪峰老师官方爬虫教程,13个案例带你全面入门! Python简直就是万能的,你用Python都做过哪些事? 用网页看各大网站的VIP视频,用python下载? 用Pytho ...
- python爬虫实战——猫眼电影案例
python爬虫实战--猫眼电影案例 ·背景 笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信 ...
- Python爬虫之Js逆向案例(2)-某乎搜索
Python爬虫之Js逆向案例(2)-知乎搜索 声明:某乎加密逆向分析仅用于研究和学习 大家好,今天继续分享关于某乎关键词搜索接口为案例的Js逆向实战.如果你是一名新手,而且还没有来得及看上一篇< ...
- Python爬虫之Js逆向案例(12)-知乎答案批量获取保存到CSV文件
声明:知乎答案批量获取分析仅用于研究和学习,如有侵权,可联系删除 大家好,本期分享的内容是一个关于批量获取知乎答案的案例,本案例的重点是教大家在写爬虫时如何更规范的去编写自己的爬虫.场景是这样的,最近 ...
- Python爬虫---爬虫介绍,实战案例
目录标题 1.爬虫介绍 1.1 爬虫的合法性 1.2 网络爬虫的尺寸 1.3 robots.txt协议 1.4 http&https协议 1.5 requests模块 1.5.1 reques ...
最新文章
- 想要学习却又无从下手?新手程序员如何自我提升
- 保证高可用Java服务化系统高效运行的必备工具箱
- WinForm组件开发:构造ImageButton控件
- [css]我要用css画幅画(四)
- form转json:jquery.serializeJSON
- (二)Linux下的crontab定时执行任务命令详解
- 积跬步-java任职要求
- gcc编译c文件的简单操作
- linux常用翻页,20150823-Linux常用命令
- NOI.AC #31. MST
- 小米立 Flag:要做年轻人的第一个深度学习框架
- vsftpd虚拟用户整理
- dos命令如何查看计算机信息,电脑DOS命令查看进程详细信息方法图解
- SmartDrv的前世今生——PrimoCache_2.2.0汉化
- 2021英一Text4精读、背景和语法分析(网络中立是生是死?难下定论)
- 「Android高级工程师」BAT大厂面试基础题集合-下-Github标星6-5K
- Mybatis-plus学习-最全细致讲解
- 展会中,你做得够好么?
- Eventide 2022假日活动
- 计算机统计模式的符号,科学计算器的统计的符号有哪些?