小朋友们好,大朋友们好!
好久不见了,猫妹很想念大家。
怎么样,大家春节过得快乐吗?
有没有放鞭炮啊?
放鞭炮,那叫一个刺激,那叫一个痛快,那叫一个放松!
有鞭炮才叫过年咧!
玩烟花爆竹一定要在大人的看护下进行,在高兴之余将风险降到最低,安全最重要。
有没有收到很多压岁钱?
这都是长辈对咱们的关爱,一定要对长辈好一些啊!
虽然是春节,猫妹我觉得猫爸也是手机不离手,有空就偷偷刷小视频看。
到底看什么呢?
搞得这么神秘!
有一次,被我以迅雷不及掩耳之势,将脑袋凑了过去,原来是一些漂亮小姐姐的视频。
Python有很多应用领域,比如科学计算、人工智能、爬虫等。
今天,咱们就简单了解下Python在爬虫领域的强势地位。
爬虫初体验:牛
如果没有安装requests库,先用pip install指令安装下requests库。
我们用这个库来下载视频。
建立一个video文件夹,用于存放下载的视频。
在video建立一个py文件,并将下面内容拷贝到该py文件中:
import requestsdef fire(page): url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'} for _ in range(page): response = requests.get(url=url, headers=headers) data = response.json() data_list = data['data']['data'] for d in data_list: video_url = d['resurl'] video_title = str(d['yyNum']) + '.mp4' video_content = requests.get(url=video_url, headers=headers).content with open('video\\' + video_title, mode='wb') as f: f.write(video_content) print('保存完成:', video_title)if __name__ == '__main__': fire(5) print('完成')
下载日志:
下载到的视频:
尝试播放一个文件试下:
什么是爬虫
在计算机领域上的爬虫,通常是指网络爬虫,英文名Spider(网络蜘蛛)。
通过互联网上一个个的网络节点,进行数据的提取、整合以及存储,从而获取我们想要的部分。
我们所处的计算机网络,如果可以上网,很多信息都可以获取得到,当然也可以查看和下载,用计算机将这些资源自动分析和下载下来,就是爬虫。
举个简单的例子,就像春节放的鞭炮。
包装上写着多少响,就代表有多少个小炮,比如10000响表示一共10000个小炮,它们通过导火索连接了起来。
如果这10000个小炮没有连起来,我们可以一个一个放。
一个一个放,如果10000个,要放到什么时候?
有了导火索,这10000个小炮就可以自动依次放了。
就像爬虫,如果不用爬虫技术,我们当然可以手动下载上面的小姐姐视频,但每次下一个,下得都没有看得快。
有了爬虫呢,分析了其中的关系,用代码模拟了手动访问网站的功能,并模拟了手动下载过程。
这样一来,分分钟给你下载很多视频,保证比你看得快。
手动下载
我们先看下不用爬虫技术,怎么下载视频的。
首先,有个保存了小姐姐视频信息的网站,这个可以通过多种途径获得,就像咱上面用到的这个网站。
咱们直接打开这个网站,可以看到如下信息:
这里面密密麻麻很多信息,视频的地址就在这里面。
刷下这个网站,这里面的数据会变化,也就是会有不同的视频地址。
下面的resurl也就是resource url,视频资源地址:
你可以打开试下,就是在线的视频,可以手动下载。
关键代码含义
我们用到了requests,它是大名鼎鼎的爬虫框架,需要导入它。
fire就是下载函数,需要将页面刷新多少次,参数就传入多少,参数越大,刷新下载的视频就越多。
url就是保存视频信息jason格式的网址。
res = requests.get(url,headers=headers,params,timeout)
参数说明如下:
- url:要抓取的 url 地址。
- headers:用于包装请求头信息。
- params:请求时携带的查询字符串参数。
- timeout:超时的时间,超过时间会抛出异常。
通过URL去向服务器发出请求,服务器再把相关内容封装成一个Response对象返回给我们,这是通过requests.get()实现的。
我们获取到的Response对象下有四个常用的方法(status_code、content、text、encoding)。
r=requests.get('https://www.baidu.com')r.status_coder.headers['content-type']r.encodingr.textr.jsonr.request.headers
headers可以在开发者模式下,手动刷新网站获取该网站的headers。
response.json()返回结果的JSON对象
如果结果是以JSON格式编写的,否则返回错误。
Python请求通常用于从特定资源URI中获取内容。每当我们通过Python向指定URI发出请求时,它都会返回一个响应对象。
for _ in range(page):有时循环不关心其中的计数值,我们可以用_。
response.content能把Response对象的内容以二进制数据的形式返回,适用于图片、音频、视频的下载。
video_url:视频的链接
video_title:视频保存到本地的名称
video_content:视频文件
免费群、收费群
猫妹和猫爸计划未来建立一个免费群,一个收费群。
你感兴趣吗?
好了,今天的分享就到这里,谢谢朋友们的阅读。
我是猫妹,咱们下次见!
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除