你要偷偷的学Python,然后惊呆所有人(第七天)

我要偷偷的学Python,然后惊呆所有人(第七天) 标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言 前言 前期回顾:我要偷偷的学Python,然后惊呆所有人(第六天) 前一天说了,我们今天要进入到爬虫的学习,对,今天我们开始爬 本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python,这里也要感谢齐锋学长送来的支持。 本系列文默认各位会百度,学习‘模块’这个模块的话,还是建议大家有自己的编辑器和编译器的,上一篇已经给大家做了推荐啦? 我要的不多,点个关注就好啦 然.. 阅读详情

文章目录

  • 前言
  • 欢迎来到我们的圈子
  • 初见爬虫
  • 为什么是爬虫
  • 通用爬虫架构
  • 爬虫的工作步骤
  • 优秀爬虫的特性
  • 1.高性能
  • 2.可扩展性
  • 3.健壮性
  • 4.友好性
  • 爬虫初体验
  • requests.get()
  • Response对象常用的四个属性

前言

前期回顾:你要偷偷的学Python,然后惊呆所有人(第六天)

前一天说了,我们今天要进入到爬虫的学习,对,今天我们开始爬

img

本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python。
本系列文默认各位会百度,学习‘模块’这个模块的话,还是建议大家有自己的编辑器和编译器的,上一篇已经给大家做了推荐啦?

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

如果是小白的话,可以看一下下面这一段:

欢迎来到我们的圈子

img
如果大家在学习中遇到困难,想找一个python学习交流环境,可以微信扫描下方优快云官方认证二维码加入我们的==

在这里插入图片描述

初见爬虫

我也不是啥大佬,所以也不会一上来就一大堆特别高大上的爬虫技巧呈现出来,我们一步一步来吧。

网络爬虫,也叫网络蜘蛛(Web Spider)。它根据网页地址(URL)爬取网页内容,而网页地址(URL)就是我们在浏览器中输入的网站链接。比如:https://www.baidu.com/,它就是一个URL。

为什么是爬虫

通用搜索引擎的处理对象是互联网网页,目前互联网网页的数量已达百亿,所以搜索引擎首先面临的问题是:如何能够设计出高效的下载系统,以将如此海量的网页数据传送到本地,在本地形成互联网网页的镜像备份。

网络爬虫能够起到这样的作用,完成此项艰巨的任务,它是搜索引擎系统中很关键也很基础的构件。

举个很常见的栗子吧:百度。 百度这家公司会源源不断地把千千万万个网站爬取下来,存储在自己的服务器上。你在百度搜索的本质就是在它的服务器上搜索信息,你搜索到的结果是一些超链接,在超链接跳转之后你就可以访问其它网站了。

通用爬虫架构

img

好,上面这张图能看明白吗?如果不能的话,我们来再看些用户访问网站的流程图:

img

这是一个人机交互的流程,那么我们再来看看爬虫在这个闭环里面能够取代掉哪些工作:

img

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

爬虫的工作步骤

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

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

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

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

这就是爬虫的工作原理啦,无论之后的学习内容怎样变化,其核心都是爬虫原理。

本章旨在直截了当的认识爬虫,所以过多的不必要的概念就不引伸了。

优秀爬虫的特性

话说优秀的代码好像都是这些特性。 不过有人能说出优秀架构的特性吗?让我眼前一亮,惊呼一声:“大佬,带我”

1.高性能

这里的性能主要是指爬虫下载网页的抓取速度,常见的评价方式是以爬虫每秒能够下载的网页数量作为性能指标,单位时间能够下载的网页数量越多,爬虫的性能越高。

要提高爬虫的性能,在设计时程序访问磁盘的操作方法(磁盘IO)及具体实现时数据结构的选择很关键,比如对于待抓取URL队列和已抓取URL队列,因为URL数量非常大,不同实现方式性能表现迥异,所以高效的数据结构对于爬虫性能影响很大。

2.可扩展性

即使单个爬虫的性能很高,要将所有网页都下载到本地,仍然需要相当长的时间周期,为了能够尽可能缩短抓取周期,爬虫系统应该有很好地可扩展性,即很容易通过增加抓取服务器和爬虫数量来达到此目的。

目前实用的大型网络爬虫一定是分布式运行的,即多台服务器专做抓取。每台服务器部署多个爬虫,每个爬虫多线程运行,通过多种方式增加并发性。

对于巨型的搜索引擎服务商来说,可能还要在全球范围、不同地域分别部署数据中心,爬虫也被分配到不同的数据中心,这样对于提高爬虫系统的整体性能是很有帮助的。

3.健壮性

爬虫要访问各种类型的网站服务器,可能会遇到很多种非正常情况:比如网页HTML编码不规范、 被抓取服务器突然死机,甚至爬到陷阱里边去了等。爬虫对各种异常情况能否正确处理非常重要,否则可能会不定期停止工作,这是无法忍受的。

从另外一个角度来讲,假设爬虫程序在抓取过程中死掉,或者爬虫所在的服务器宕机,健壮的爬虫应能做到:再次启动爬虫时,能够恢复之前抓取的内容和数据结构,而不是每次都需要把所有工作完全从头做起,这也是爬虫健壮性的一种体现。

4.友好性

爬虫的友好性包含两方面的含义:一是保护网站的部分私密性;另一是减少被抓取网站的网络负载。爬虫抓取的对象是各类型的网站,对于网站所有者来说,有些内容并不希望被所有人搜到,所以需要设定协议,来告知爬虫哪些内容是不允许抓取的。目前有两种主流的方法可达到此目的:爬虫禁抓协议和网页禁抓标记。

这一点后面会再详细说明。

爬虫初体验

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

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

requests库的基础方法如下:

img

requests.get()

看一段伪代码:

import requests
#引入requests库
res = requests.get('URL')
#requests.get是在调用requests库中的get()方法,
#它向服务器发送了一个请求,括号里的参数是你需要的数据所在的网址,然后服务器对请求作出了响应。
#我们把这个响应返回的结果赋值在变量res上。
123456

刚刚我还在群里跟他们说,学习Python最重要的是打基础,从数据类型,数据结构开始。 那我们就来看看这爬虫获取数据的返回值是个什么数据类型。

先随便找个网址吧,要不就开头那个小乌龟的网址吧: 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

网址是长了点哈,不过可以实验的。

import requests 
res = requests.get('URL') 
print(type(res))
#打印变量res的数据类型
1234

结果:<class ‘requests.models.Response’>

Response对象常用的四个属性

img

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

img

接着的属性是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

大家也可以自己去爬一爬网站里面的小照片。 有的朋友会问:那我要怎么知道我的小照片网址呢? 其实也好办:右击小照片,新建标签页打开,网址不就有了吗。

再不行,你直接把这篇文章上的小照片拖一下嘛,拖到新窗口去,网址就有了。

好,今天的实操大概就在这里了。

讲完了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把编码定义成和目标数据一致的类型即可。

我要偷偷的学Python,然后惊呆所有人(第四天) 标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言什么是模块?跟我一起动手导入自己的模块第一步:新建一个模块第二步:调用模块调用模块不同方法。`if __name__ == '__main__'`csv模块操作Excel图表我要用什么模块?这个模块里有哪些东西?使用csv模块读写 前言 前期回顾:我要偷偷学Python,然后惊呆所有人(第三天) 上面这篇里面写了python的一些知识基础,主要是Python对于文件的读写操作,可能是字数比较少吧,每次.. 阅读详情

相关推荐

我要偷偷的学Python,然后惊呆所有人(第二天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言编程学习的瓶颈函数其实没那么可怕初始函数定义一个函数函数规则示例2:示例3:示例4:示例5:全局变量和局部变量 前言 前期回顾:我要偷偷学Python,然后惊呆所有人(第一天) 上面这篇里面写了python的一些知识基础,从数据类型到四则运算,再到分支、循环。 那么今天,我们就看一下比较抽象的函数和类,如果对基础还不是很熟练的话可以再扎实一下基础,毕竟万丈高楼平地起嘛,基础不老实是很危险的。 本系列文..

看,未来的博客 3万+

【我要偷偷学Python,然后惊呆所有人】专栏导航

文章目录全文导读我要偷偷的学Python,然后惊呆所有人Python爬虫自学系列Python数据分析打开我的Python收藏夹系列Python其他部分 全文导读 “我要偷偷学Python,然后惊呆所有人”系列完更已经有一段时间了,但是我一直觉得缺少一点啥。 直到看了橡皮檫大佬的爬虫百例教程,我知道,我的这个专栏却一份目录、 本专栏尽可能包含从Python小白入门,到爬虫数据采集、数据清洗、数据存储、数据分析、数据可视化等一系列内容, 帮助各位初学Python初学的小伙伴不至于从入门到出门。 此外,我们还有.

看,未来的博客 3052

我要偷偷的学Python,然后惊呆所有人(第八天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言欢迎来到我们的圈子HTML基础HTML是什么?查看网页的HTML代码我们看了个啥玩意儿啊?标签和元素HTML基本结构HTML属性爬取网页文本网页数据解析 前言 前期回顾:我要偷偷学Python(第七天) 上一篇呢,我们初见爬虫,其实近距离接触之后,发现也不是学不会的嘛,虽然我们只是爬取了小图片,爬网页还比较吃力,一下用例过猛把人家的源代码都给爬过来了。 那怎么办呢?我们看别人的爬虫效果,好像没有那么凌..

看,未来的博客 6716

我要偷偷的学Python,然后惊呆所有人(第十二天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言欢迎来到我们的圈子并发与串行 前言 前期回顾:我要偷偷学Python(第十二天) 第十二篇的项目还在持续更新中,哎,日理万机虽然谈不上,但是也是手忙脚乱。这不,自动表单生成是写完了,但是学校网络实在是受不了啊,2G,测试不了,就只能一直搁置在那边了。 明天就可以去测试了,明天出学校去逛逛。 今天的内容,可能很多小伙伴会没有听过,今天要讲多线程的概念,以及协程的使用。后面看看能不能讲一下scrapy框架..

看,未来的博客 2万+

我要偷偷的学Python,然后惊呆所有人(第六天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 前言 前期回顾:我要偷偷学Python,然后惊呆所有人(第五天) 本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python,这里也要感谢齐锋学长送来的支持。 本系列文默认各位会百度,学习‘模块’这个模块的话,还是建议大家有自己的编辑器和编译器的,上一篇已经给大家做了推荐啦? 我要的不多,点个关注就好啦 然后呢,本系列的目录嘛,说实话我个人比较倾向于那两本 Primer Plus,..

看,未来的博客 6728

我要偷偷的学Python,然后惊呆所有人(第一天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 好,切入正题 文章目录前言Python语言概览Python语言的起源 前言 本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python,这里也要感谢齐锋学长送来的支持。 本系列文默认各位会百度,会用在线编译器,因为我是突击学Python的,之前的编译环境都删了,但是吧,我发现在线编译是真的爽,浪费那时间去搭那环境干啥,学好了Python,会差那点请人搭环境的钱吗? 我要的不多,点个..

看,未来的博客 4万+

我要偷偷的学Python,然后惊呆所有人(第十四天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言欢迎来到我们的圈子XpathXpath基本语法截取路径表达式路径表达式栗子选取节点后面的下标选取未知节点,通配符实例选取若干路径学习案例:抓取百度贴吧->王者荣耀吧的评论 前言 前期回顾:我要偷偷学Python(第十四天) 第十四天告诉大家我们将进入一个漫长的练习阶段,不过不用慌,今天我们来看别人口中“永远滴神” – Xpath 我也不知道为什么被称作永远滴神,但是我知道肯定不是因为它难。 插..

看,未来的博客 9005

我要偷偷的学Python,然后惊呆所有人(第五天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 前言 前期回顾:我要偷偷学Python,然后惊呆所有人(第四天) 在第四天的时候,我们接触了Python的模块调用,这也是Python能够火起来的一大优势。我们还实践了csv模块。 不过冷静下来想想,这样的速度会不会有点过于快了,昨天我和几个学长兼好友彻夜长谈,觉得这样速成的话势必会遗漏掉不少的知识点,而且也有不少小伙伴来问我Python相关的问题,于是我们就打算建一个Python的学习答疑群,大家有问题的话都可..

看,未来的博客 8390

我要偷偷的学Python,然后惊呆所有人(第十一天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言欢迎来到我们的圈子绕过登录验证的小饼干:cookies and session声明什么是cookies?什么是session?是如何实现“记住我的登录状态”的功能post请求实操第一步 前言 前期回顾:我要偷偷学Python(第十天) 上一篇呢,上一篇不是很好,我自己有数,身体抱恙。所以,这一篇我准备了不少有意思的东西(坏笑),嘿嘿,快来跟我动手操作。 我行,你也行!!! 插播一条推送:(如果是小白..

看,未来的博客 6674

我要偷偷的学Python,然后惊呆所有人(第三天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 好,切入正题 文章目录前言“你的如意金箍棒”已到货,请签收文件读写计算机编码表读取文件第一步:打开文件绝对路径 and 相对路径 注意点第二步:读取文件第三步:关闭文件写入文件小练习 前言 本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python,这里也要感谢齐锋学长送来的支持。也要感谢大家的支持,前两篇访问、收藏、点赞、评论量都“居高临下”,感谢感谢,还有的朋友迫不及待等第三篇..

看,未来的博客 1万+

我要偷偷的学Python,然后惊呆所有人(第十三天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言欢迎来到我们的圈子摊牌啦,《偷偷学Python》系列即将进入一段漫长的XXX《Python百战穿山甲》(一):翻译软件设计图 前言 前期回顾:我要偷偷学Python(第十三天) 又一篇爆款啊。 插播一条推送:(如果是小白的话,可以看一下下面这一段) 欢迎来到我们的圈子 我建了一个Python学习答疑群,有兴趣的朋友可以了解一下:这是个什么群 群里已经有一千多个小伙伴了哦!!! 直通群的传送门:传送门 ..

看,未来的博客 8410

室友偷偷学python,然后惊呆所有人

室友偷偷学python,然后惊呆所有人 是的,没技术只能说一声牛逼!

guoxuying的博客 231

我要偷偷的学Python,然后惊呆所有人(第九天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录前言欢迎来到我们的圈子 前言 前期回顾:我要偷偷学Python(第八天) 上一篇呢,上一篇我们了解了一下网页的基本结构,并且通过对网页的分析抓取了一点数据出来。 但是我们就这么满足了吗?这显然是不可能的,你见过哪个爬虫就爬几个字嘛。 所以今天,我们来一次性爬上一大波数据!!! 我行,你也行!!! 插播一条推送:(如果是小白的话,可以看一下下面这一段) 欢迎来到我们的圈子 我建了一个Python学习答疑群..

看,未来的博客 1万+

python求e^x_你要偷偷的学Python,然后惊呆所有人

文章目录前言欢迎来到我们的圈子爬虫百战穿山甲(二):Xpath爬取2021年腾讯校招网需求分析目标网站页面分析Xpath分析放码过来前言前期回顾:你要偷偷学Python(第十四天)第十四天讲了Xpath,是真的好用啊。于是我就去亲自练习了一下,抓取“2021腾讯校招网”数据,并进行整理。这篇属于一套新系列,挂在“偷偷学Python”系列下,写完之后会整理出来。名字想好了,就叫“爬虫百战穿山甲”。插...

weixin_39614546的博客 680

我要偷偷的学Python,然后惊呆所有人(第十天)

文章目录前言欢迎来到我们的圈子小爬虫踢到钢板了任务需求需求分析1.2.3.方案一:方案二:数据类型正则表达式什么是正则表达式?基础语法普通字符演示 前言 前期回顾:我要偷偷学Python(第九天) 依旧是这段啊 本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python,这里也要感谢齐锋学长送来的支持。 本系列文默认各位会百度,学习‘模块’这个模块的话,还是建议大家有自己的编辑器和编译器的,上一篇已经给大家做了推荐啦? 我要的不多,点个关注就好啦 然后呢,本系列的目录嘛,说实

看,未来的博客 1万+

我要偷偷的学Python,然后惊呆所有人(最后一天)

文章目录前言函数的不定长参数lambda函数创建包生成器什么是生成器为什么要有生成器如何创造一个生成器把一个列表推导式的[]改成()yield关键字生成器的工作原理代码示例装饰器嵌套函数 前言 时隔20天,也该给这个系列画上一个句号啦。 后期我会对这个系列进行一个整合,预计会整理为13篇,不用担心,是原地整理,一般不会删博客。 这一篇不是爬虫相关,是我重新梳理了Python中的相关知识之后,发现了一些和C++异同之处,觉得应该再整理一份。 函数的不定长参数 有的时候,你会需要一个函数去处理比它预设时更多.

看,未来的博客 1万+

学python的亲身经历_你要偷偷的学Python,然后惊呆所有人

文章目录前言欢迎来到我们的圈子初见爬虫为什么是爬虫通用爬虫架构爬虫的工作步骤优秀爬虫的特性1.高性能2.可扩展性3.健壮性4.友好性爬虫初体验requests.get()Response对象常用的四个属性我国有一部完整的法律前言前期回顾:你要偷偷的学Python,然后惊呆所有人(第六天)前一天说了,我们今天要进入到爬虫的学习,对,今天我们开始爬本系列文默认各位有一定的C或C++基础,因为我是学了点...

weixin_39850699的博客 233

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6536
上一篇: 零基础小白学Python,从爬虫入手简单易懂好操作!
下一篇: 良心整理!学习Python数据分析的正确姿势
智泊AI官方
博客等级 码龄6年 8637粉丝 2667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值