图片来自风变科技
一, 什么是爬虫?
网络爬虫又名网络蜘蛛(web crawler→spider),是一种自动浏览万维网的网络机器人,其目的为编纂网络索引。
二,为什么需要爬虫?
对于公司,通过网络爬虫编纂网络索引,或者更新自己家的网站内容。中外杰出代表:百度,谷歌。
对于个人,每个个体需求不同,根据自己的需求使用爬虫。
三,浏览器工作原理
正常情况下,浏览器的交流对象涉及三方:用户,浏览器,服务器。用户在浏览器中输入需求,浏览器向服务器发送请求,服务器将用户所需内容 以计算机语言返回给浏览器,浏览器解析数据并返回给用户。
crawler-l0-7-0-2019115 (1).png
四,爬虫的工作原理
爬虫的工作和浏览器的工作类似,只是在细节方面有些不同。
当我们决定去某个网页后,爬虫会模拟浏览器向服务器发送请求,待服务器响应后,爬虫会帮我们把内容解析然后根据我们设定的规则批量提取相关数据,最后批量的存储数据。
crawler-l0-7-1-0-2019115.png
爬虫的工作总共可以分为四步:
0):获取数据;
1):解析数据;
2):提取数据;
3):存储数据。
五,爬虫获取数据的手段
主要通过强大的requests库实现获取数据的目的:requests库可以帮我们下载网页源代码,文字,图片,甚至音频。
requests库使用方法:
import requests #引入requests库
res = requests.get('URL') #url即是网址(任意一个网页,在顶部地址栏中双击鼠标选中的部分即是url),调用requests库中的get()方法。
Response对象的常用属性
Python是一门面向对象编程的语言,而在爬虫中,理解数据是什么对象是非常、特别、以及极其重要的一件事。因为只有知道了数据是什么对象,我们才知道对象有什么属性和方法可供我们操作。
Response对象常用属性有四个:
1):response.status_code # 检查请求是否正确响应。通过print(变量.status_code)用来检验请求是否正确响应,不同的响应会有不同的状态码,听起来很像健康码,哈哈哈。
CLeWOrD_cLenfWDnvN64aUYuqaAwOrD_z3n5GnHwtJkMEULI (1).png
2):response.content # 它能把Response对象的内容以二进制数据的形式返回,适用于图片、音频、视频的下载。
3): response.text # 它把Response对象的内容以字符串的形式返回,适用于文字、网页源代码的下载。
4):response.encoding # 它能帮我们定义Response对象的编码。我们该在什么时候用res.encoding呢?当目标数据本身的编码方式是未知的。用requests.get()发送请求后,我们会取得一个Response对象,其中,requests库会对数据的编码类型做出自己的判断。但是!这个判断有可能准确,也可能不准确。
六,爬虫伦理
robots协议是互联网爬虫的一项公认的道德规范,它的全称是“网络爬虫排除标准”(robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的,哪些不可以。
通常情况下,服务器不太会在意小爬虫,但是,服务器会拒绝频率很高的大型爬虫和恶意爬虫,因为这会给服务器带来极大的压力或伤害。
我们使用robots协议的场景通常是:看到想获取的内容后,检查一下网站是否允许爬取。因此我们只需要能找到、简单读懂robots协议就足够了。
互联网并非法外之地,和爬虫相关的法律也在建立和完善之中,目前通用的伦理规范就是robots协议,我们在爬取网络中的信息时,应该有意识地去遵守这个协议。
网友评论