一、爬虫介绍
1.什么是爬虫?
通俗的讲: 就是模拟客户端发起网络请求,接收请求的响应,按照一定的规则,自动的抓取互联网信息的程序。
原则上只要浏览器能够做的事情,爬虫都能够实现。
2.为什么要做爬虫?
都说现在是‘大数据时代’,那么数据从何而来?如果需要的数据市场上没有,或者不愿意购买,那么可以选择招/做一名爬虫工程师,自己动手丰衣足食。
二、爬虫的分类
1.通用爬虫
通用网络爬虫 是 捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。
2.聚焦爬虫
聚焦爬虫,是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于: 聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
协议:七层协议
目的:OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输
应用层:用户的应用程序提供网络服务
表示层:主要功能是定义数据格式及加密即对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解,并按照一定的格式传送给会话层
会话层:会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话.
传输层:tcp/udp
网路层:路由器
数据链路层:网桥,交换机
物理层:网卡,网线,集线器,中继器,调制解调器
urllib模块的使用
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。
1.request: 它是最基本的HTTP请求模块,可以用来模拟发送请求,就像在浏览器中输入网址,然后敲击回车键一样,使用的时候只需要给库方法传入相关的URL和相关的参数即可
2.error: 异常处理模块,如果出现请求错误,我们可以使用这个模块来捕获异常,然后进行重试或者其他操作,保证程序不会意外终止
3.parse: 这是一个工具模块,提供了许多url的处理方法,比如拆分,解析,合并等等
urlopen方法的使用
url:设置目标url
data:如果设置该参数,则请求默认为post请求
timeout:用于设置超时时间,单位为秒
context:必须是一个ssl.SSLContext类型,用来指定SSL设置,忽略未认证的CA证书
Request
url 参数是请求链接,这个是必传参数,其他的都是可选参数。
data 参数跟 urlopen() 中的 data 参数用法相同。
headers 是一个字典。它除了在 Request 中添加,还可以通过调用 Reques t实例的 add_header() 方法来添加请求头。
unverifiable 参数表示这个请求是否是无法验证的,默认值是False。意思就是说用户没有足够权限来选择接收这个请求的结果。例如我们请求一个HTML文档中的图片,但是我们没有自动抓取图像的权限,我们就要将 unverifiable 的值设置成 True。(这个参数我们不需要设置)
method 参数指的是发起的 HTTP 请求的方式
User-Agent
浏览器 就是互联网世界上公认被允许的身份,如果我们希望我们的爬虫程序更像一个真实用户,那我们第一步,就是需要伪装成一个被公认的浏览器。用不同的浏览器在发送请求的时候,会有不同的User-Agent头
请求方法
GET方式
GET请求一般用于我们向服务器获取数据
POST方式
上面我们说了Request请求对象的里有data参数,它就是用在POST里的,我们要传送的数据就是这个参数data,data是一个字典,里面要匹配键值对。
总结
GET方式是直接以链接形式访问,链接中包含了所有的参数,服务器端用Request.QueryString获取变量的值。如果包含了密码的话是一种不安全的选择,不过你可以直观地看到自己提交了什么内容。
POST则不会在网址上显示所有的参数,服务器端用Request.Form获取提交的数据,在Form提交的时候。但是HTML代码里如果不指定 method 属性,则默认为GET请求,Form中提交的数据将会附加在url之后,以?分开与url分开。