zoukankan      html  css  js  c++  java
  • python爬虫1 简介

    一、“大数据时代”,数据获取的方式:

    1. 企业生产的用户数据:大型互联网公司有海量用户,所以他们积累数据有天然的优势
    有数据意识的中小型企业,也开始积累的数据
    2. 数据管理咨询公司:通常这样的公司有很庞大的数据采集团队,一般会通过市场调研、
    问卷调查、固定的样本监测,和各行各业的公司进行合作、专家对话(数据积累很多年,得到的科研成果)
    3. 政府/机构提供的公开数据:政府通过各地政府统计上报的数据进行合并;机构都是权威的
    第三方网站
    4. 第三方数据平台购买数据 
    5. 爬虫爬取数据

    二、什么是爬虫?
    抓取网页数据的程序

    三、如何抓取网页数据?
    网页三大特征:
    1. 每个网页都有自己唯一的URL(统一资源定位符)来进行定位
    2. 网页都使用HTML(超文本标记语言)来描述页面信息
    3. 网页都是用HTTP/HTTPS(超文本传输协议)来传输HTML数据

    爬虫的设计思路
    1. 首先确定需要爬取的网页URL地址
    2. 通过HTTP/HTTPS协议来获取对应的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. python基本语法知识
    2. 如何抓取HTML页面
        HTTP请求的处理,urllib、urllib2、requests
        处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件
    3. 解析服务器响应的内容
        re、xpath、BeautifuiSoup4(bs4)、jsonpath、pyquery等
        使用某种描述性语言来给我们需要提取的数据定义一个匹配规则,
        符合这个规则的数据就会被匹配
    4. 如何采集动态HTML、验证码的处理
        通用的动态页面采集:Selenium + PhantomJS(无界面),模拟真实浏览器加载js、ajax等非静态页面数据
        Tesseract: 机器学习库,机器识别系统,可以处理简单的验证码,复杂的验证码可以通过手动输入/专门的打码平台

    5. Scrapy框架:(ScrapyPyspider)
        高性能高定制性(异步网络框架twisted),所以数据下载速度非常快
        提供了数据存储、数据下载、提取规则等组件
    6. 分布式策略:
        scrapy-redis,在scrapy的基础上添加以redis数据库为核心的一套组件
        让scrapy框架支持分布式的功能,主要在Redis里做请求指纹去重、请求分配、数据临时存储
    7. 爬虫、反爬虫、反反爬虫之间的斗争
        爬虫做到最后,最头疼的不是复杂的页面,也不是晦涩的数据,而是网站另一边的反爬虫人员
        User-Agent、代理、验证码、动态数据加载、加密数据
        数据价值,是否值得去费劲做反爬虫
        机器成本+人力成本>数据价值,就不反了,一般做到封IP就结束了
        只要是真实用户可以浏览的网页数据,爬虫就一定能爬下来


    六、通用爬虫 聚焦爬虫
    1.通用爬虫 搜索引擎用的爬虫系统
    目标:把互联网上所有的网页下载下来,放到本地服务器里形成备份
        再对这些网页做相关处理(提取关键字、去掉广告),最后提供
        一个用户检索接口
    抓取流程:
        a).首先选取一部分已有的URL,把这些URL放到待爬取队列
        b).从队列里去除这些URL,然后解析DNS得到主机IP,去这个IP对应的服务器里下载HTML页面,
            保存到搜索引擎的本地服务器,之后把爬过的URL放入已爬取队列
        c).分析这些网页内容,找出网页里其他的URL连接,继续执行第二步,直到爬取条件结束
    搜索引擎如何获取一个新网站的URL:
        1. 主动向搜索引擎提交网址 http://zhanzhang.baidu.com/linksubmit
        2. 在其他网站设置网站的外链
        3. 搜索引擎会和DNS服务商进行合作,可以快速收录新的网站
        DNS:就是把域名解析成IP的一种技术
    通用爬虫并不是万物皆可爬,需要遵守规则:
        robots协议:协议会知名通用爬虫可以爬取网页的权限
        robots.txt并不是所有爬虫都遵守,一般只有大型的搜索引擎爬虫遵守
        个人写的爬虫,就不管了
    通用爬虫的工作流程:爬取网页→存储数据→内容处理→提供检索/排名服务

    搜索引擎排名 
        1. PageRank值:根据网站的流量(点击量/浏览量/人气)统计,流量越高,排名越靠前
        2. 竞价排名: 谁给钱多,谁排名就高

    通用爬虫的缺点:
        1.只能提供文本相关的内容(HTML、Word、PDF)等,
        但不能提供多媒体(音乐、图片、视频)和二进制文件(程序、脚本等)
        2. 提供的结果千篇一律,不能针对不同背景领域的人提供不同的搜索结果
        3. 不能理解人类语义上的检索

    聚焦爬虫:爬虫程序员写的针对某种内容的爬虫
    面向主题爬虫、面向需求爬虫:会针对特定的内容去爬取信息,而且会保证

  • 相关阅读:
    react之redux的使用笔记
    react之jsx的使用
    react之第一个组件的定义及使用
    npm
    webpack热加载
    react使用笔记及生命周期
    移动开发的常见问题
    javascript常用的方法
    cordova local notification plugin
    jqmobi 转换语言
  • 原文地址:https://www.cnblogs.com/wangjinliang1991/p/9898891.html
Copyright © 2011-2022 走看看