zoukankan      html  css  js  c++  java
  • 爬虫技术栈点

    爬虫相关

    爬虫的概念

    爬虫的工作原理

    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.不能理解人类语义上的检索。
    这样就诞生了聚焦爬虫
    

    聚焦爬虫

    聚焦爬虫:爬虫程序员写的针对某种内容的爬虫。
    面向主题爬虫,面向需求爬虫:会针对某种特定的内容去爬取信息,而且会保证信息和需求进可能相关。
    
  • 相关阅读:
    在 Cocos2d-x 中添加自己的微博链接
    关于屏幕适配
    [抽象工厂模式]在游戏开发中的应用
    字符串排列组合
    子矩阵最大和
    网易游戏编程题第二题
    动态规划,最大子段和
    C++的四种显示类型转换
    多线程编程
    预处理等等
  • 原文地址:https://www.cnblogs.com/Python-368/p/12970141.html
Copyright © 2011-2022 走看看