爬虫技术栈点

爬虫相关

爬虫的概念

爬虫的工做原理

HTTP

  • HTTP工做原理
网络爬虫爬取过程能够理解为,模拟浏览器操做的过程。
浏览器的主要功能是向服务器发送请求,在浏览器窗口中展现你选择的网络资源,HTTP是一套计算机经过网络进行通讯的规则。
  • HTTP的请求与响应
HTTP通讯由两部分组成:客服端请求消息与服务端响应消息
  • 浏览器发送HTTP请求的过程
1.当用户在浏览器的地址栏中输入一个URL并按回车键以后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为两种"GET"和"POST"。

2.当咱们在浏览器输入URL https://www.baidu.com的时候,浏览器发送一个Request请求去获取https://www.baidu.com的html文件,服务器把Response文件发送给浏览器。
        
3.浏览器分析Response中的HTML,发现其中引用了不少其余文件,好比Image文件,CSS文件,JS文件,浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

4.当全部文件都下载成功后,网页会根据HTML语法解构,完整的显示出来了。URL:统一资源定位符,是用与完整地internet上网页和其余资源的地址的一种标识方法。
基本合适以下;
	1.scheme:协议(如:http,https,ftp)
    2.bost:服务器的IP地址或域名
    3.port:雾浮起的端口(若是是走协议默认端口,缺省端口80)
    4.path:访问资源的路径
    5.query-string:参数,发送给http服务器的数据
    6.anchor;锚(跳转到网页的指定锚点位置)

爬虫知识站

1.Python的基本语法知识(已经搞定)

2.如何爬取HTML页面:
    HTTP请求的处理,urllib,urllib2,requests
    处理后的请求能够模拟浏览器发送请求,获取服务器响应的文件
    
3.解析服务器响应的内容
	re,xpath,BeautifulSoup4(bs4),jsonpath,pyquery等
    使用某种描述性同样的来给咱们须要提取的数据定义一个匹配规则,
    符合这个规则的数据就会被匹配。
    
4.如何采集动态HTML,验证码的处理
	经过动态页面采集:Selenium + PhantomJS(无界面):模拟真实浏览器加载js,ajax等非静态页面数据。
     Tesseract:机器学习库,机器图像识别系统,能够处理 简单的验证码,复杂的验证码能够经过手动输入/专门的打码平台去处理。
    
5.Scrapy框架:(Scrapy,Pyspider)
	高定制性高性能(异步网络框架twisted),因此数据下载速度很是快,提供了数据存储数据下载还有提取规则等组件,规则就是xpath。
    
6.分布式策略:(中小型公司用不到这么大的,人员成本机器成本是否大与经济成本)
	scrapy-redis,在Scrpay的基础上添加了一套以以Redis数据库为核心的一套组件。
    让Scrapy框架支持分布式的功能,主要在Redis里面作请求指纹去重(若是爬整站,须要用分布式,不一样的线程爬虫要爬取不一样的页面,作到批量分布式去重),请求分配,数据临时存储。
    
    
7.爬虫————反爬虫————反反爬虫之间的斗争:
	(爬虫最后最难的不是复杂页面的获取,晦涩数据的采集,难的是跟网站后台人员斗智斗勇)
    最先反爬用的是User-Agent,(一秒钟多少点击),用代理,验证码,(不是全部都是12306的),动态数据加载,加密数据(数据加密有马脚,核心密钥会存在js脚本里面),不少到代理这一块就能够了。
    数据价值,是否值得去费劲作反爬虫。
    1.机器成本	+	人力成本  >  数据价值,就不反了,通常作到封IP就结束了。
    2.面子战争.....
    爬虫和反爬虫之间的斗争,不少时候是爬虫获胜!
    为何?只要是真实用户能够浏览的网页数据,爬虫就必定能爬下来。

根据使用场景对爬虫分类

通用爬虫

1.通用爬虫:搜索引擎用的爬虫系统。
1.1目标:就是尽量的把网上的全部页面下载下来,放到本地服务器里面造成备份
	 再对这些页面作相关处理(提取关键字,去掉广告),最后提供一个用户检索接口。(百度快照就是拿其余网页的数据,提取关键字,在本身数据库里面作备份)
#提供网页用户接口,可是通用引擎爬虫,最大的缺陷就是不能把图片,视频拿出来。
2.抓取流程:
    a.首先选取一部分已有的URL,把这些URL放到待爬取队列。
    b.从队列里取出这些URL,而后解析DNS获得主机IP,一个域名必定会对应一个ip地址,一个ip地址不必定有域名。而后取这个IP对应的服务器里下载HTML页面,保存到搜索引擎的本地服务器里。
	最后把这个爬取过的URL放入已爬取队列。
    c.分析这些网页内容,找到网页里其余的URL连接,继续执行第二步,直到爬取条件结束。
    顺便带一下:
浏览器打开百度百度后台发生了什么?要求从协议层的角度来讲,不是tcp,ip是http协议角度来讲:
    http,https,ftp这三个都是创建在TCP,IP协议基础上的,讲到前三个协议默认TCP,IP协议是成功的。
    若是在百度上回车敲一个电影,首先他会把电影地址发送到DNS服务商作解析,DNS就是把域名解析成IP的一种技术。
    #若是你在cmd命令太直接数据"ping www.baidu.com"他会给出ping地址"182.61.200.7",把这个ping放到浏览器上它也能到百度首页,每台机器的ping值不一样,这样就不通过DNS服务商作解析了。
   
3.搜索引擎是如何获取一个新网站的URL(三种方式):
	1.主动向搜索引擎提交这个网址。去(zhanzhnag.baidu.com/linksumit/url)提交,后台审核以后再去添加。
    2.在其余网站设置网站的外链,如(网站上的友情外链)
    3.搜索引擎会和DNS服务商进行合做,能够快速收录新的网站。(由于新网站必定会有人去提交)
    
4.通用爬虫并非万物皆可爬,它也须要遵照必定的规则:
	Robots协议:协议会指明通用爬虫能够爬取页面的权限。
    Robots.txt只是一个建议,并非全部爬虫都遵照,通常只有大型的搜索引擎爬虫才会遵照,
    我的写的爬虫就无论它了,防君子不防小人。若是被其余网站发现,能够会告侵权。
  
5.通用爬虫的工做流程:爬取网页	存储数据	内容处理	提供检索/排名服务

6.搜素引擎排名:
	1.PageRank值:根据网站的流量(点击量/浏览量/人其)统计,流量越高排名越靠前,网站也越值钱。
    2.竞价排名:谁给钱多,谁排名就越高。(可能查询,也可能不查询)
    
7.通用爬虫的缺点:
	1.只能提供文本相关的内容(HTML,WORD,PDF)等等,可是不能提供更多媒体文件(音乐,图片,视频)和二进制文件(程序啊,脚本啊)
    2.提供的结果千篇一概,不能针对不一样领域的人提供不一样的搜索结果。
    3.不能理解人类语义上的检索。
这样就诞生了聚焦爬虫

聚焦爬虫

聚焦爬虫:爬虫程序员写的针对某种内容的爬虫。
面向主题爬虫,面向需求爬虫:会针对某种特定的内容去爬取信息,并且会保证信息和需求进可能相关。
相关文章
相关标签/搜索