一 什么是爬虫

爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程。

二 爬虫的分类

@!!!
1.通用爬虫: @!!!简单来讲就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。

@!!! 2.聚焦爬虫: @!!!聚焦爬虫是根据指定的需求抓取网络上指定的数据。例如:获取豆瓣上电影的名称和影评,而不是获取整张页面中所有的数据值。

三 反爬虫

门户网站通过相应的策略和技术手段,防止爬虫程序进行网站数据的爬取。

四 反反爬虫

爬虫程序通过相应的策略和技术手段,破解门户网站的反爬虫手段,从而爬取到相应的数据。

五 HTTP协议

1 概念

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

2 特点

HTTP基于TCP/IP协议:http协议是基于TCP/IP协议之上的应用层协议。
HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP是基于请求-响应模式:HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并 返回。
HTTP是无状态保存:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

3 HTTP之URL

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。

比如这个URL:http://www.huolg.net:8080/news/index.asp?boardID=5&ID=24618&page=1#name

  • 协议部分:该URL的协议部分为“http:”;
  • 域名部分:该URL的域名部分为“www.huolg.net”;
  • 端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符;
  • 虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”
  • 文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。
  • 锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分。
  • 参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

4.HTTP之Request

常见的请求头(报文体):

q1.jpg

  • accept:浏览器通过这个头告诉服务器,他支持的数据类;
  • Accept-Charset:浏览器通过这个告诉服务器,他锁支持的字符集;
  • Accept-Encoding:浏览器通过这个告诉服务器,他支持的压缩格式;
  • Accept-Language:浏览器通过这个告诉服务器,他的预言环境;
  • Host:浏览器通过这个告诉服务器,像访问那台主机;
  • If-Modified-Since:浏览器通过这个头告诉服务器,缓存数据的时间;
  • Referer:浏览器通过这个头告诉服务器,客户机是从哪个页面来的(防盗链);
  • Connection:浏览器通过这个头告诉服务器,请求完后是断开连接还是维持连接;
  • X-Requested-With:XMLHttpResquest 代表通过ajax方式进行访问的;
  • User-Agent:请求载体的身份标识。

5 HTTP之Response

常见的响应头信息:

  • Location:服务器通过这个头,来告诉浏览器跳转到哪里;
  • Server:服务器通过这个头,告诉路浏览器服务器的型号;
  • Content-Encoding:服务器通过这个头,告诉浏览器数据压缩的格式;
  • Content-Length:服务器通过这个头,告诉浏览器会送数据的长度;
  • Content-Language:服务器通过这个头,告诉浏览器语言环境;
  • Content-Type:服务器通过这个头,告诉浏览器回送数据的类型;
  • Refresh:服务器通过这个头,告诉浏览器定时刷新;
  • Content-Disposition:服务器通过这个头,告诉浏览器以下载方式打开数据;
  • Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以块方式回送的;
  • Expires:-1 控制浏览器不要缓存;
  • Cache-Control:no-cache
  • Pragma: no-cache

响应状态码

q2.jpg

六 HTTPS协议

HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。

q3.jpg

七 爬虫基本流程

q4.jpg

文章目录