爬虫入门教程 —— 1

爬虫入门教程 -1

很想作一些爬虫的基础性的教程,来与你们共同分享个人一些小经验, 我将以我认为的方式为你们讲解网络爬虫,若是你没有编程基础,对网络爬虫有兴趣,开始可能稍微有一些小难度,不过我但愿能给你带来一些帮助。对我来讲一样也是相互学习。。html

工具 : 1 你们须要在电脑上安装Python3.x版本  咱们以Python3 为例子讲解。安装方式百度一下按照步骤作就能够,安                            装时候遇到的问题也能够百度的到,你遇到的这些问题小白都遇到过,特别的正常web

            2 关于IDE(集成开发环境)的选择 我建议你们使用pycham   至于什么是IDE。就是咱们写代码的地方,它提供了  代码高                   亮,代码报错,代码的搜索等等很是方便的功能。ajax

            3  我用的操做系统是liunx ,你们可使用windowschrome

            4  你可能用的是IE浏览器 ,看到这里我但愿你能安装chrome 或者火狐浏览器数据库

本套教程主要用的编程语言是Python  编程

第一节 认识网络爬虫windows

本节我主要是带领你们了解认识网络爬虫浏览器

什么是网络爬虫?

网络爬虫安全

除了百度百科所讲,通俗来说,我平时浏览的页面大都是HTML页面,包括咱们平时浏览的新闻,门户网站等都是将文字内容镶嵌在HTML代码中的,好比腾讯新闻的这篇文章:服务器

html例子

 

爬虫要作的能够简单理解为利 用程序来获取咱们须要的网络上的内容,包括文字,视频,图片等信息 称之为   数据。

你可能会说 真low 老子分分钟复制粘贴好几篇,辣鸡---##---。您说的有道理可是,你想若是是10w篇呢,甚至100w呢,你还分分钟复制粘贴吗,程序能够作到将这写数据下载下来或者是保存到数据库中这些--------- 

为何要作网络爬虫?

数据  你感受重要不重要?  "大数据时代",获取数据方式有哪些? 

企业产生的数据百度搜索指数腾讯公司业绩数据阿里巴巴集团财务及运营数据新浪微博微指数等...

数据平台购买数据数据堂国云数据市场贵阳大数据交易所 等等

 

爬取网络数据若是数据市场上没有须要的数据,或者价格过高不肯意购买,那么能够利用爬虫技术,抓取网站上的数据。

 

咱们对于爬虫其实咱们常常与它打交道,百度 谷歌,雅虎,等就是大爬虫, 他们有个响当当的名字------搜索引擎

搜索引擎能够说是爬虫的至高境界---  你修炼到这个境界今年是不可能了,固然明年也不愿可能。

你可能要问了,那百度为何搜索的时候搜不到数据,都是官网,打开才能够进去,像搜索引擎不会像我的写的爬虫程序同样无脑,由于他们要遵循一个 协议: 如标注为nofollow的连接,或者是Robots协议。

这些协议注明了那些页面是爬虫能够访问的,哪些是不能够访问的。如:

 

淘宝网:https://www.taobao.com/robots.txt

腾讯网: http://www.qq.com/robots.txt

 

搜索引擎经过爬虫爬取到的网页,将数据存入原始页面数据库。其中的页面数据与用户浏览器获得的HTML是彻底同样的。

搜索引擎蜘蛛在抓取页面时,也作必定的重复内容检测,一旦遇到访问权重很低的网站上有大量抄袭、采集或者复制的内容,极可能就再也不爬行。

别激动 咱们作的是小爬虫,也称聚焦爬虫,即你想爬哪些数据,找到网址,分析规则而后写程序取抓取数据,固然不一样网站的难易程度是不同的。

 

首先你要知道 当你点击一下百度,发生了什么,能把你想要的数据返回到你的电脑屏幕上

简单来讲这段过程发生了如下四个步骤:

  1. 浏览器经过 DNS服务器 查找域名对应的 IP地址;

  2. 向 IP地址 对应的 Web服务器 发送请求;

  3. Web服务器 响应请求,发回 HTML页面;

  4. 浏览器解析 HTML内容,并显示出来。

HTTP和HTTPS

HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。

SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络链接进行加密,保障在Internet上数据传输的安全。

  • HTTP的端口号为80
  • HTTPS的端口号为443

HTTP工做原理

网络爬虫抓取过程能够理解为模拟浏览器操做的过程

浏览器的主要功能是向服务器发出请求,在浏览器窗口中展现您选择的网络资源,HTTP是一套计算机经过网络进行通讯的规则

 

浏览器发送HTTP请求的过程:

  1. 当用户在浏览器的地址栏中输入一个URL地址并按回车键以后,浏览器会向HTTP服务器发送HTTP请求。  HTTP请求主要分为 Get 和 Post 两种方法。

  2. 当咱们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。

  3. 浏览器分析Response中的 HTML,发现其中引用了不少其余文件,好比Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件等。

  4. 当全部的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。

        URL(Uniform / Universal Resource Locator的缩写):统一资源定位符,是用于完整地描述Internet上

HTTP请求主要分为GetPost两类:

  • 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点击能够按大小排列 这个后边仍是挺方便的

其余的咱们后边在作详细的讲解,你们能够先找个网页尝试一下。(其中有不明白的 能够自行百度)

第一节课程到这里也就结束了 ,今天先带你们认识爬虫,作一个简单的了解,明天开始咱们开始下一章了,对于Python基础不了解的同窗,能够看廖雪峰老师的讲解   百度 廖雪峰Python

 

 

在这套教程中咱们将逐步共同窗习:

 

1. Python基础语法学习(基础知识)    #  这个咱们暂时不讲

2. 对HTML页面的内容抓取(Crawl)

3. 对HTML页面的数据解析(Parse)

4. 动态HTML的处理/验证码的处理 

5. Scrapy框架