zoukankan      html  css  js  c++  java
  • 爬虫 (1)- 简介与概念

    一、"大数据时代",数据获取的方式

    1. 企业生产的用户数据:大型互联网公司有海量用户,所以他们积累数据有天然的优势。

    有数据意识的中小型企业,也开始积累的数据。

    2. 数据管理咨询公司:通常这样的公司有很庞大的数据采集团队,一般会通过市场调研、问卷调查、固定的样本检测,

    和各行各业的公司进行合作、专家对话(数据积累很多年了,最后得出科研结果)来采集数据。

    3. 政府/机构提供的公开数据:政府通过各地政府统计上报的数据进行合并;机构都是权威的第三方网站。

    4. 第三方数据平台购买数据:通过各个数据交易平台来购买各行各业需要的数据,根据获取难度不同,价格也会不同。

    5. 爬虫爬取数据:如果市场上没有我们需要的数据,或者价格太高不愿意买,那么就可以招/做一个爬虫工程师,从互联网上定向采集数据。

    二、什么是爬虫?

    爬虫:就是抓取网页数据的程序。

    三、爬虫怎么抓取网页数据:

    网页三大特征:

    1. 网页都有自己唯一的URL(统一资源定位符)来进行定位

    2. 网页都使用HTML (超文本标记语言)来描述页面信息。

    3. 网页都使用HTTP/HTTPS(超文本传输协议)协议来传输HTML数据。

    爬虫的设计思路:

    1. 首先确定需要爬取的网页URL地址。

    2. 通过HTTP/HTTP协议来获取对应的HTML页面。

    3. 提取HTML页面里有用的数据:

        a. 如果是需要的数据,就保存起来。

        b. 如果是页面里的其他URL,那就继续执行第二步。

    四、为什么选择Python做爬虫?

    可以做爬虫的语言有很多,如 PHP、Java、C/C++、Python等等...

    PHP 虽然是世界上最好的语言,但是他天生不是干这个的,而且对多线程、异步支持不够好,并发处理能力很弱。

                爬虫是工具性程序,对速度和效率要求比较高。

    Java 的网络爬虫生态圈也很完善,是Python爬虫最大的对手。但是Java语言本身很笨重,代码量很大。

        重构成本比较高,任何修改都会导致代码的大量变动。爬虫经常需要修改部分采集代码。

    C/C++ 运行效率和性能几乎最强,但是学习成本很高,代码成型比较慢。

            能用C/C++做爬虫,只能说是能力的表现,但是不是正确的选择。

    Python 语法优美、代码简洁、开发效率高、支持的模块多,相关的HTTP请求模块和HTML解析模块非常丰富。

            还有强大的爬虫Scrapy,以及成熟高效的 scrapy-redis分布式策略。

            而且,调用其他借口也非常方便(胶水语言)

    五、根据使用场景:分为 通用爬虫  聚焦爬虫

    通用爬虫:搜索引擎用的爬虫系统。

    1目标:就是尽可能把互联网上所有的网页下载下来,放到本地服务器里形成备份,

            再对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。

    2抓取流程:

        a) 首选选取一部分已有的URL,把这些URL放到待爬取队列。

        b) 从队列里取出这些URL,然后解析DNS得到主机IP,然后去这个IP对应的服务器里下载HTML页面,保存到搜索引擎的本地服务器。

            之后把这个爬过的URL放入已爬取队列。

        c) 分析这些网页内容,找出网页里其他的URL连接,继续执行第二步,直到爬取条件结束。

    3 搜索引擎如何获取一个新网站的URL:

        1. 主动向搜索引擎提交网址:http://zhanzhang.baidu.com/linksubmit/url

        2. 在其他网站里设置网站的外链。

        3. 搜索引擎会和DNS服务商进行合作,可以快速收录新的网站。

        DNS:就是把域名解析成IP的一种技术。

    4 通用爬虫并不是万物皆可爬,它也需要遵守规则:

    Robots协议:协议会指明通用爬虫可以爬取网页的权限。

    Robots.txt 只是一个建议。并不是所有爬虫都遵守,一般只有大型的搜索引擎爬虫才会遵守。

        咱们个人写的爬虫,就不管了。

    5 通用爬虫工作流程:爬取网页 - 存储数据 - 内容处理 - 提供检索/排名服务

    6 搜索引擎排名:

        1. PageRank值:根据网站的流量(点击量/浏览量/人气)统计,流量越高,网站也越值钱,排名越靠前。

        2. 竞价排名:谁给钱多,谁排名就高。

    7 通用爬虫的缺点:

        1. 只能提供和文本相关的内容(HTML、Word、PDF)等等,但是不能提供多媒体文件(音乐、图片、视频)和二进制文件(程序、脚本)等等。

        2. 提供的结果千篇一律,不能针对不同背景领域的人提供不同的搜索结果。

        3. 不能理解人类语义上的检索。

    聚焦爬虫:爬虫程序员写的针对某种内容的爬虫。


    面向主题爬虫,面向需求爬虫:会针对某种特定的内容去爬取信息,而且会保证信息和需求尽可能相关。


    Python自带的模块:/usr/lib/python2.7/urllib2.py
    Python的第三方模块: /usr/local/lib/python2.7/site-packages

    urllib2 默认的 User-Agent:Python-urllib/2.7

    User-Agent: 是爬虫和反爬虫斗争的第一步,养成好习惯,发送请求带User-Agent


    response 是服务器响应的类文件,除了支持文件操作的方法外,还支持以下常用的方法:

    # 返回 HTTP的响应码,成功返回200,4服务器页面出错,5服务器问题
    print response.getcode()

    # 返回 返回实际数据的实际URL,防止重定向问题
    print response.geturl()

    # 返回 服务器响应的HTTP报头
    print response.info()


    User-Agent 历史:

    Mosaic 世界上第一个浏览器:美国国家计算机应用中心

    Netscape 网景:Netscape(支持框架),慢慢开始流行....(第一款支持框架的浏览器)

    Microsoft 微软:Internet Explorer(也支持框架)

    第一次浏览器大战:网景公司失败..消失

    Mozilla 基金组织:Firefox 火狐 - (Gecko内核)(第一款浏览器内核)

    User-Agent 决定用户的浏览器,为了获取更好的HTML页面效果。

    IE开了个好头,大家都开就给自己披着了个 Mozilla 的外皮

    Microsoft公司:IE(Trident)

    Opera公司:Opera(Presto)

    Mozilla基金会:Firefox(Gecko)

    Linux组织:KHTML (like Gecko)

    Apple公司:Webkit(like KHTML)

    Google公司:Chrome(like webkit)

    其他浏览器都是IE/Chrome内核

     

     

    urllib 的 urlencode() 接收的参数是一个字典:


    Get 和 Post请求的区别:

    Get : 请求的url会附带查询参数,
    POST:请求的url不带参数

    对于Get请求:查询参数在QueryString里保存
    对于Post请求:查询参数在Form表单里保存


    做爬虫最需要关注的不是页面信息,而是页面信息的数据来源。

    AJAX 方式加载的页面,数据来源一定是JSON

    拿到JSON,就是拿到了网页的数据

  • 相关阅读:
    吃推荐3个最近去了的好地方
    30岁生日
    今天开始试用Briglow Hair Cream
    WPF中如何在文本外面加虚线外框
    对账算法改进
    如何退出正在Sleep的线程
    关于framework4.5的相关介绍
    恐怖的报警邮件
    对帐引擎2个月后的监控数据
    wcf rest服务启用gzip压缩
  • 原文地址:https://www.cnblogs.com/shifu204/p/9661891.html
Copyright © 2011-2022 走看看