除了百度百科所讲,通俗来说,我平时浏览的页面大都是HTML页面,包括咱们平时浏览的新闻,门户网站等都是将文字内容镶嵌在HTML代码中的,好比腾讯新闻的这篇文章:css
爬虫要作的能够简单理解为利 用程序来获取咱们须要的网络上的内容,包括文字,视频,图片等信息 称之为 数据。html
首先你要知道 当你点击一下百度,发生了什么,能把你想要的数据返回到你的电脑屏幕上ajax
简单来讲这段过程发生了如下四个步骤:正则表达式
浏览器经过 DNS服务器 查找域名对应的 IP地址;数据库
向 IP地址 对应的 Web服务器 发送请求;浏览器
Web服务器 响应请求,发回 HTML页面;安全
浏览器解析 HTML内容,并显示出来。服务器
HTTP协议
(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。网络
HTTPS
(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。post
SSL
(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络链接进行加密,保障在Internet上数据传输的安全。
HTTP
的端口号为80
,HTTPS
的端口号为443
HTTP工做原理
网络爬虫抓取过程能够理解为模拟浏览器操做的过程
。
浏览器的主要功能是向服务器发出请求,在浏览器窗口中展现您选择的网络资源,HTTP是一套计算机经过网络进行通讯的规则
当用户在浏览器的地址栏中输入一个URL地址并按回车键以后,浏览器会向HTTP服务器发送HTTP请求。 HTTP请求主要分为 Get
和 Post
两种方法。
当咱们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
浏览器分析Response中的 HTML,发现其中引用了不少其余文件,好比Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件等。
当全部的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。
URL
(Uniform / Universal Resource Locator的缩写):统一资源定位符,是用于完整地描述Internet上
Get
和Post
两类:GET是从服务器上获取指定页面信息,POST是向服务器提交数据并获取页面信息。
GET请求参数都显示在URL上,服务器根据该请求所包含URL中的参数来产生响应内容。 "Get" 请求的参数 是URL的一部分。
POST请求参数在请求体当中,消息长度没有限制并且以隐式的方式进行发送,一般用来向HTTP服务器提交量比较大的数据(好比请求中包含许多参数或者文件上传操做等)。 "POST"请求的参数 不在URL中,而在请求体中。
get请求的参数都在网址里面包含,因此咱们有时候看到一个网址特别长,后边带了一坨东西。post请求通常是用于表单提交,将帐号密码以post的方式发送。
当你任意点开客户端与服务期的一次信息交互,你会看到它访问客户端携带的参数也就是头部信息:request headers (经常使用) 以及客户端的回应response headers
前边说过了,咱们鼠标每点击一次,就是对服务器发送了一次请求,等待服务器给你响应
当咱们打开一个网页,右键点击选择查看源代码是能够查看源代码的,点击审查元素 和检查元素,就能够对客户端与服务器之间的信息交流进行查看如图:
第一个箭头指向的位置 —点击一下,而后点击文章相应位置,它会指向代码中内容的位置,能够帮助咱们查看数据在网页中的结构和位置
第二给箭头是网络 — 点击network ,从新刷新页面,你会看到客户端和服务器之间的数据来往,也是咱们从此用的最多的
第三个箭头 是 —all是全部的数据来往,xhr通常ajax加载的数据会在这里面找到,js是js的一些请求,里面也有咱们要的数据,少数
下边方框里面 分别是 name status(状态码) type size 等 了解一下便可,状态 200是正常,其余异常状态码能够百度,size点击能够按大小排列 这个后边仍是挺方便的
问:为何我抓到的和浏览器看到的不同?
答:网页经过浏览器的解析,加载CSS与JS等文件对网页进行解析渲染,达到咱们看到绚丽的网页,而咱们抓到的文件只是一些代码,css文件没法调用,使得样式不能表现出来,那么网页就会出现错位等等问题。
问:怎样解决JavaScript渲染的问题?
答:分析Ajax请求、Selenium/WebDriver、Splash、PyV八、Ghost.py等库
如图片、视频、音频等等直接保存成特定格式便可。