对爬虫的认识

网页的三大特性:
    1.每个网页都有自己的网页来进行定位。
    2.网页使用HTML来描述页面。
    3.网页都使用HTTP/HTTPS协议来传输HTML数据。
爬虫的设计思路:
    1.首先确定爬去网页url地址。
    2.通过HTTP/HTTPS协议来获取对应的HTML页面。
    3.提取HTML页面里用的数据。
        a.如果是需要的数据就保存起来。
        b.如果页面里有其他的url,那就继续执行第二步。
为什么选择python做爬虫?
    PHP对多线程,异步支持不够好,并发能力差。
    Java网络爬虫生态圈也很完善,是python爬虫最大的对手,但是Java语言本身很笨重,代码量大,
        重构比较高,牵一发而动全身。
    C/C++ 运行效率和性能很强,但是学习成本很高,代码成型慢。
    python 语法优美,开发效率高,支持的模块多,相关的HTTP请求模块和HTML解析模块丰富,还有
        强大的Scrapy-redis分布式策略,而且调用其他接口方便(胶水语言)。
    HTTP请求的处理:
        爬虫模块urllib,urllib2,requests
        ,获取服务器响应的文件。
    解析服务器响应的内容
        re,xpath,BeautifulSoup4(bs4),jsonpath,pyquery等。
        使用某种描述性一样来给我们需要提取的数据定义一个匹配规则,符合这个规则的数据就会被匹配。
    如何采集动态HTML,验证码的处理:
        通用的动态页面采集:Selenium+PhantomJs(无界面模拟浏览器):模拟真实浏览器加载。
        Tesseract:机器学习库,机器图像识别系统,可以处理简单的验证码,复杂的可以通过手动输入。
    Scrapy框架:(Scrapy,Pyspider)
        高定制性高性能(异步网络框架twisted),所以数据下载速度非常快,提供了数据存储,数据下载,
        提取规则等组件。
    分布式策略:依赖于scrapy-redis的存在
        scrapy-redis, 在Scrapy基础上添加了一套以Redis数据库为核心的一套组件。
        让Scrapy框架支持分布式功能,主要在Redis里请求指纹去重,请求分配,数据临时存储。
    爬虫---反爬虫---反反爬虫:
        其实爬虫做到最后,最头疼的不是复杂的页面,也不是晦涩的数据,而是网站另一边的反爬虫人员。
        User-Agent,代理,验证码,动态数据加载,加密数据。
        数据的价值是否值得去费劲做反爬虫。
            机器成本+人力成本 > 数据价值,就不反了,一般做到封IP就结束了。
        爬虫和反爬虫,最后一定是爬虫获胜。
        因为只要真实用户可以浏览的网页数据,爬虫一定能爬下来。
通用爬虫 聚焦爬虫
    通用爬虫:搜索引擎用的爬虫。
        目标:就是尽可能的把互联网上所有的网页下载下来,放在本地服务器里形成备份,再对这些网页做相关
            处理(提取关键字,去掉广告),最后提供一个用
        抓取流程:
            a.首先选取一部分url,把这些url放在待爬取的队列。
            b.取出待爬取得url,然后解析DNS得到主机IP,再取IP对应服务器里下载HTML页面,保存到搜索服务器,
                之后把这个爬过的url放入以爬取得队列。
            c.分析这些网页内容,找出网页里其他得url连接,继续执行第二部,直到爬取结束。
        搜索引擎如何获取一个新网站的url:
            1.主动向搜索引擎提交网址:http://zhanzhang.baidu.com/
            2.在其他网站里设置网站得链接。
            3.搜索引擎会和DNS服务商进行合作,可以快速收录新得网站。
        通用爬虫并不是万物皆可爬,需要遵守规则:遵守Robots协议,协议指明了通用爬虫可以爬取得权限。
        robots.txt只是一个建以,并不是所有得爬虫都遵守,一般只有大型得搜索引擎爬虫遵守,个人就不管了。
        在搜索引擎得排名:
            1.PageRank值:根据网站得流量统计,流量越高,排名越靠前,越值钱。
            2.竞价排名:谁给钱多,谁排名高。
        缺点:只能提供和文本相关得内容(HTML,word,PDF)但是不能提供多媒体(图片,视频)和二进制文
            件(程序,脚本)
            搜索结果千篇一律,不能针对向得提供不同的搜索结果。
            不能理解人类语义上的检索
            
        DNS:就是把域名解析成IP的一种技术。
    聚焦爬虫:爬虫程序员写的针对某内容爬虫。
        解决了通用爬虫的缺点
        面向主题爬虫,面向需求爬虫。
HTTP和HTTPS
    HTTP协议:是一种发布和接收HTML页面的方法。
    HTTPS简单的讲是HTTP的安全版,在HTTP下加入SSL层。
    SSL(安全套接层)主要用于web的安全传输协议,在传输层对网络进行加密,保障Internet上传数据的安全。
    HTTP: 的端口 80
    HTTPS:的端口 443
    HTTP工作原理:
        网络爬取过程可以理解为,模拟浏览器操作的过程
        浏览器的主要功能是向服务器发起请求,在浏览器窗口展示您选择的网络资源,HTTP是一套计算机网络进行
            通信的规则
urllib2在python3中被改为urllib.request

posted @ 2018-06-15 16:34  liang哥哥  阅读(228)  评论(0)    收藏  举报