第一章 爬虫基础

1.1HTTP原理

URI和URL

URI:统一资源标志符

URL:统一资源定位符

网站链接既是一个URL又是一个URI,通过其唯一指定了它的访问方式,其中包括访问协议https、

访问路径(/根目录)和资源名称,通过这个链接就可以从互联网上找到这个资源。

URL是URI子集,子集还包括URN(只命名资源而不定位资源,比如一本书的ISBN号标识一本书,没有指定哪里可以定位这本书)

超文本

网页源代码HTML就是超文本

HTTP和HTTPS

协议类型:URL(网站链接)开头会有http或https等等,它们就是协议类型

http一般可直接访问

https即使http的安全版,所以在我们平常访问此类网站会被提示该链接不是私密链接,所以我们在爬取这样的网站时需要设置忽略证书的选项,负责会报错

HTTP请求过程

我们在浏览器输入一个URL,即是向网站所在服务器发送一个请求,然后网站服务器接收请求后处理和解析,返回对应的响应(包括源代码等),接着传回浏览器(进行对源代码解析等工作)。

请求

有客户端向服务端发出,通常分为4部分:请求方法,请求网址,请求头,请求体

1.请求方法

GET和POST

GET:在浏览器中直接输入URL回车,发起了一个GET请求,请求参数会直接包含到URL里,例如搜索python就会将python写入URL里

数据可以在URL里看出来 1024字节

POST:大多以表单的方式,例如一个登陆表单包括账号和密码

数据不会在URL里,在请求体中 无字节限制

举例:

登录时需要用户名和密码,包含敏感信息,使用GET方法就会把信息暴露在URL中,所以使用POST方法

2.请求网址

统一资源定位符URL

3.请求头

请求头是请求的重要组成部分,写爬虫时,大部分情况都需要设定请求头

常用头信息:

客户端可接受的语言类型

客户端接受的内容编码

UA,特殊的字符串头,可以伪装成浏览器

还有等等信息

4.请求体

请求体一般承载内容为POST请求的表单数据,对于GET请求为空

响应

由服务器返回给客户端,有响应状态码,响应头,响应体组成

1.响应状态码

服务器响应状态

2.响应头

响应产生时间

响应内容编码

文档类型,返回数据类型等等

3.响应体

最重要的内容

请求网页,响应体委HTML编码;请求图片,响应体为图片二进制数据;爬虫解析的内容就是响应体。

爬虫时,我们主要通过响应体得到网页源代码、JSON数据等,然后从中提取

1.2网页基础

三大部分组成——HTML(骨架),CSS(皮肤),JavaScript(肌肉)

网页组成

HTML

超文本标记语言

例如img表示图片,video表示视频,段落用p表示等等

网页就是由各种标签嵌套组合而成

CSS

网页页面排版样式标准,是页面更加美观

JavaScript

与用户之间的交互

节点树及节点间关系

HTML中,所有标签定义的内容都是节点,构成一个HTML DOM树

选择器

CSS选择器会根据不同的节点设置不同的样式规则

#+id名     #container

.+class名  .wrapper

直接写标签名   h2

三种形式筛选:id,class,标签名筛选

嵌套选择

选择器之间加上空格表示嵌套关系,如果不加空格则表示并列关系

#container .wrapper p:表示选择id为container节点,选中其内部class为wrapper的节点,再进一步选中其内部的p节点。

div#container .wrapperp.text:表示选择id为container的div节点,然后选中其内部的class为wrapper的节点,然后再进一步选择其内部class为text的p节点

还有另外一种选择器就是XPath

1.3爬虫原理

访问一个网页后,继续获取后续网页,网站的数据就可以被抓取下来

爬虫概述

爬虫就是获取网页并提取和保存信息的自动化程序

1.获取网页

获取网页的源代码,关键部分就是构造一个请求并发送给服务器,然后接受响应并解析

2.提取信息

提取我们想想要的数据

最常用的方法就是正则表达式提取,还可根据网页节点属性,css选择器,XPath来提取网页信息的库有lxml,Beautiful Soup等

3.保存数据

简单保存为TXT文本或JSON文本

或者保存到数据库 MySQL MongoDB

4.自动化程序

我们写的程序

能抓怎样的数据

网页中我们看到各种各样的信息

JavaScript渲染页面

渲染出来的页面可能是个空壳,需要别的库来实现模拟渲染

1.4会话和cookies

在浏览网站过程中经常会出现需要登陆的情况,有些页面只有在登录后才可以访问,而且登录后可以访问很多次网站,但是有时候过段时间需要重新登录。还有一些网站在打开浏览器就登录了,而且很长时间都不失效。这就与上述标题相关。

静态网页和动态网页

动态网页是现在大部分网页的形式

无状态HTTP

HTTP的无状态是服务器不知道客户端是什么状态,当我们向服务器发送请求时,服务器解析并返回响应的过程,这个前后状态是不会被服务器记录的。

用于保持HTTP连接状态的分别是会话和cookies

会话:服务器端,用来保存用户的会话信息

cookies:客户端即浏览器端,浏览器在下次访问网页时会附带上cookies发送给服务器

可以理解为登录页面,cookies包含了登录凭证,下次请求携带cookies就不用重新输入账号密码。

因此在爬虫中,处理登录才能访问的页面,需要将登录成功后获取的cookies放在请求头里面,就不用模拟登录了。

cookies

会话维持:客户端第一次请求服务器时,服务器会返回一个响应头带有set-cookies字段给客户端,用来标记是哪一个客户,客户端浏览器会把cookies保存下来,在下一次请求该网站时,浏览器会携带cookies一起提交给服务器。cookies携带了会话信息,服务器检查该cookies就能找到相应的会话,再返回该会话中用户状态可以查看的网页内容,再交给浏览器解析。

会话cookie:把cookie放在浏览器内存里,浏览器关闭则失效

持久cookie:将cookie保存在客户端硬盘里,下次还可继续使用

两者区别就是cookie设置的失效时间不同

持久化登录网站就是把cookie有效时间和会话有效期设置的长,下次我们访问时,cookie仍然有效,不用重新登录,

1.5代理的基本原理

基本原理

代理就是在客户端和服务器端搭起的一座桥梁,本来是客户端直接发送请求给服务器端,有了代理以后,就是客户端-->代理-->服务器端。这时,服务器识别的IP就不是我们本机的IP,就实现了IP伪装。

代理的作用

1.访问平时不能访问的站点

2.访问一些单位或团体内部资源

3.提高访问速度

4.隐藏真实IP

爬虫代理

爬虫爬取速度过快可能会导致同一个IP访问频繁而被封锁,使用代理隐藏真实的IP,在爬虫中不断更换代理,就不会被封锁

代理分类

根据协议分

根据匿名程度分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值