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

    聚焦爬虫

    聚焦爬虫:爬虫程序员写的针对某种内容的爬虫。
    面向主题爬虫,面向需求爬虫:会针对某种特定的内容去爬取信息,而且会保证信息和需求进可能相关。
    
  • 相关阅读:
    Leetcode 50.Pow(x,n) By Python
    Leetcode 347.前K个高频元素 By Python
    Leetcode 414.Fizz Buzz By Python
    Leetcode 237.删除链表中的节点 By Python
    Leetcode 20.有效的括号 By Python
    Leetcode 70.爬楼梯 By Python
    Leetcode 190.颠倒二进制位 By Python
    团体程序设计天梯赛 L1-034. 点赞
    Wannafly挑战赛9 C-列一列
    TZOJ Start
  • 原文地址:https://www.cnblogs.com/Python-368/p/12970141.html
Copyright © 2011-2022 走看看