网页音频抓取软件(你要偷偷学Python,然后把所有人都吓晕了(第7天) )

优采云 发布时间: 2022-04-16 23:01

  网页音频抓取软件(你要偷偷学Python,然后把所有人都吓晕了(第7天)

)

  

  标题无意冒犯,我只是觉得这个广告很有趣

  文章目录

  前言

  初评:你要偷偷学Python,然后惊呆大家(第6天)

  前天说的,今天我们要学爬虫,对,今天就开始爬

  

  本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python。

本系列文默认各位会百度,学习‘模块’这个模块的话,还是建议大家有自己的编辑器和编译器的,上一篇已经给大家做了推荐啦?

本系列也会着重培养各位的自主动手能力,毕竟我不可能把所有知识点都给你讲到,所以自己解决需求的能力就尤为重要,所以我在文中埋得坑请不要把它们看成坑,那是我留给你们的锻炼机会,请各显神通,自行解决。

1234567

  如果您是新手,请查看以下段落:

  欢迎加入我们的圈子

  

  我成立了一个 Python 学习问答小组。有兴趣的朋友可以了解一下:关注小编私信“01”进入裙子领取python学习资料,会节省很多时间,减少遇到的很多问题。

  第一次爬虫

  我不是什么大人物,所以不会一上来就展示很多特殊的爬虫技能。让我们一步一步来。

  网络爬虫,也称为网络蜘蛛。它根据网页地址(URL)抓取网页的内容,网页地址(URL)就是我们在浏览器中输入的网站链接。例如: ,它是一个 URL。

  为什么爬行动物

  一般搜索引擎的处理对象是互联网页面。目前,互联网页面数量已达数百亿。因此,搜索引擎面临的第一个问题就是:如何设计一个高效的下载系统,将如此海量的网页数据传输到本地。互联网网页的镜像备份在本地形成。

  网络爬虫可以发挥这样的作用,完成这项艰巨的任务。它是搜索引擎系统中一个非常关键和基本的组件。

  举一个很常见的栗子:百度。

  百度公司会不断爬取上千个网站,存储在自己的服务器上。你在百度上搜索的本质是在其服务器上搜索信息。您搜索的结果是一些超链接。超链接跳转后,可以访问其他网站。

  常见爬虫架构

  

  好的,你能看懂上图吗?如果没有,让我们看一些用户访问 网站 的流程图:

  

  这是一个人机交互的过程,那么我们来看看爬虫在这个闭环中可以替代哪些任务:

  

  是的,非常符合我们“人工智能”的特点,解放了我们的双手。

  爬虫的工作步骤

  第1步:获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。

第2步:解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。

第3步:提取数据。爬虫程序再从中提取出我们需要的数据。

第4步:储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。

1234567

  这就是爬虫的工作原理。以后无论学习内容如何变化,核心都是爬虫的原理。

  本章的目的是直接了解爬虫,太多不必要的概念就不展开了。

  好的爬行动物的特征

  换句话说,好的代码似乎具有这些特征。

  但是谁能说出一个好的架构的特征呢?让我眼前一亮,惊呼道:“老大,带我去”

  1.高性能

  这里的性能主要是指爬虫下载的网页的爬取速度。一种常见的评估方法是爬虫每秒可以下载的网页数量作为性能指标。单位时间内可以下载的页面越多,爬虫的性能就越高。

  为了提高爬虫的性能,程序访问磁盘的操作方式(磁盘IO)和具体实现时数据结构的选择很关键,比如要爬取的URL队列和已经被爬取的URL队列。爬取了,因为url的数量非常多。不同的实现执行起来非常不同,因此高效的数据结构对爬虫性能有很大的影响。

  2.可扩展性

  即使单个爬虫的性能很高,将所有网页下载到本地仍然需要很长时间。为了尽可能地缩短爬取周期,爬虫系统应该具有良好的可扩展性,即很容易增加 Crawl 的服务器和爬虫的数量来实现这一点。

  目前,实用的大型网络爬虫必须是分布式运行的,即多台服务器专用于爬虫。每台服务器部署多个爬虫,每个爬虫运行在多个线程中,以多种方式增加并发。

  对于大型搜索引擎服务商来说,数据中心也可能会部署在全球、不同区域,爬虫也被分配到不同的数据中心,这对于提升爬虫系统的整体性能非常有帮助。

  3.稳健性

  当爬虫想要访问各种类型的网站服务器时,可能会遇到很多异常情况:比如网页的HTML编码不规范,被爬的服务器突然崩溃,甚至爬进陷阱。爬虫能够正确处理各种异常情况是非常重要的,否则它可能会时不时停止工作,这是难以忍受的。

  从另一个角度来说,假设爬虫程序在爬取过程中死掉了,或者爬虫所在的服务器宕机了,一个健壮的爬虫应该能够:当再次启动爬虫时,可以恢复内容和数据之前爬取的结构,不必每次都从头开始做所有的工作,这也是爬虫健壮性的体现。

  4.友善

  爬虫的友好性包括两层含义:一是保护网站的部分隐私;另一种是减少爬取的网站的网络负载。爬虫爬取的对象是各种类型的网站。对于网站的拥有者来说,有些内容不想被所有人搜索到,所以需要设置一个协议来告知爬虫哪些内容不是。允许爬行。目前,实现这一目标的主流方法有两种:爬虫禁止协议和网页禁止标记。

  这将在后面详细解释。

  爬虫初体验

  网络爬虫的第一步是根据URL获取网页的HTML信息。在 Python3 中,可以使用 urllib.request 和 requests 完成网页抓取。

   urllib库是python内置的,无需我们额外安装,只要安装了Python就可以使用这个库。

requests库是第三方库,需要我们自己安装。

12

  requests库的基本方法如下:

  

  请求.get()

  看一段伪代码:

  import requests

#引入requests库

res = requests.get('URL')

#requests.get是在调用requests库中的get()方法,

#它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。

#我们把这个响应返回的结果赋值在变量res上。

123456

  我刚才在群里跟他们说,学Python最重要的是打好基础,从数据类型和数据结构开始。

  那么我们来看看爬虫获取数据的返回值的数据类型。

  随便找个网站,或者从小乌龟的网站入手:

  %3A%2F%%2Flarge%2F006m97Kgly1g5voen881dj30ag0aawfo.jpg

  网址有点长,但可以试验一下。

  import requests

res = requests.get('URL')

print(type(res))

#打印变量res的数据类型

1234

  结果:

  Response对象常用的四个属性

  

  首先是我们的status_code,这是一个很常用的属性,用来检查请求是否成功,可以打印出它的返回值。

  下一个属性是response.content,可以以二进制数据的形式返回Response对象的内容,适用于图片、音频、视频的下载。你可以通过看一个例子来理解它。

  来吧,让那只小乌龟下来:

  import requests

res = requests.get('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1604032500192&di=67b6cdd3eb1722f845fd0cc39625b386&imgtype=0&src=http%3A%2F%2Fwx1.sinaimg.cn%2Flarge%2F006m97Kgly1g5voen881dj30ag0aawfo.jpg')

#发出请求,并把返回的结果放在变量res中

pic=res.content

#把Reponse对象的内容以二进制数据的形式返回

photo = open('乌龟.jpg','wb')

#新建了一个文件ppt.jpg,这里的文件没加路径,它会被保存在程序运行的当前目录下。

#图片内容需要以二进制wb读写。你在学习open()函数时接触过它。

photo.write(pic)

#获取pic的二进制内容

photo.close()

#关闭文件

123456789101112

  网站里的小照片也可以自己爬。

  有的朋友会问:那我怎么知道我的小照片的网址呢?

  其实很容易处理:在小照片上点右键,打开一个新标签,没有网址。

  如果不行,把这个文章上的小照片拖到新窗口,URL就在那里了。

  好了,今天的练习大概就到这里了。

  说完response.content,继续看response.text。该属性可以以字符串的形式返回Response对象的内容,适用于下载文本和网页源代码。

  看清楚,是源代码。

  来,找个网站,比如我的文章网站,来体验一下:

  import requests

#引用requests库

res = requests.get('https://mp.toutiao.com/profile_v4/graphic/publish?pgc_id=6889211245900071428')

novel=res.text

#把Response对象的内容以字符串的形式返回

k = open('《第七天》.txt','a+')

#创建一个名为《第七天》的txt文档,指针放在文件末尾,追加内容

k.write(novel)

#写进文件中

k.close()

#关闭文档

1234567891011

  接下来我们看最后一个属性:response.encoding,它帮助我们定义了Response对象的编码。

  首先,不知道目标数据本身的编码是什么。用 requests.get() 发送请求后,我们会得到一个 Response 对象,其中 requests 库会自行判断数据的编码类型。但!这个判断可能准确也可能不准确。

  如果判断准确,我们打印出来的response.text的内容是正常的,没有乱码,所以我们不需要res.encoding;如果判断不准确,会出现一堆乱码,那么我们可以查看目标数据的编码,然后使用 res.encoding 定义编码为与目标数据相同的类型。

  我有点累了,所以让我们再提一点。

  我国有完整的法律

  事实上,我国关于爬行动物的法律还在完善中,所以还是尽快爬吧。

  一般情况下,服务器不关心小型爬虫,但是服务器会拒绝大型爬虫和高频次的恶意爬虫,因为这会给服务器带来很大的压力或损害。

  但是,一般情况下,服务器是欢迎搜索引擎的(刚才说了,谷歌和百度的核心技术之一就是爬虫)。当然,这是有条件的,这些条件会写在机器人协议中。

  机器人协议是互联网爬虫公认的道德准则。它的全称是“机器人排除协议”。该协议用于告诉爬虫哪些页面可以爬取,哪些页面不能爬取。

  如何查看网站的robots协议,很简单,在网站的域名后面加上/robots.txt即可。

  协议中最常用的英文是Allow和Disallow,Allow表示可以访问,Disallow表示禁止访问。

  工具在你手中,你如何使用它是你的选择。当你在爬网站数据的时候,别忘了看看网站的Robots协议是否允许你爬。

  同时,限制爬虫的速度也是我们应该做的,感谢提供数据的服务器,避免对其施加太大压力,维护良好的互联网秩序。

  以上就是我们今天要讲的内容。下一次,我们将分析那些网页并在网页中得到我们想要的东西。

  

  最后,还有一件事,如果你想学习Python,可以联系阿淼。这里是我自己整理的一套完整的python学习资料和路线。想要这些资料的可以关注阿淼,私信“01”领取。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线