美文网首页
python爬虫入门

python爬虫入门

作者: Khada | 来源:发表于2019-02-25 09:14 被阅读0次

    什么是网络爬虫?

    网络爬虫(又被称为网页蜘蛛,网络机器人), 是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

    通俗的讲: 就是模拟客户端发起网络请求,接收请求的响应,按照一定的规则,自动的抓取互联网信息的程序。

    原则上只要浏览器能够做的事情,爬虫都能够实现

    网络爬虫介绍: https://baike.baidu.com/item/网络爬虫

    1.爬虫的基本原理:

    我们可以将互联网比喻为一张大网,网络爬虫我们想象为网上的蜘蛛,网页与网页之间的联系我们理解为节点,爬虫就相当于是访问网页,获取网页的信息,又通过节点可以爬取另一个网站,然后不停的通过一个个节点即访问一个个网页,这样网站的数据就可以被我们获取下来了。

    2.爬虫有什么用途?
     a. 搜索引擎
     b. 比价工具(慧慧购物助手)
     c. 大的资讯网站(jobbole,今日头条...)

    爬虫分两类:
    1.通用爬虫:通用爬虫是浏览器的重要组成部分,将互联网上所有的网页下载到本地,做了一个镜像备份,提取重要数据(过滤数据,分词,去广告....)

    一. 通用爬虫(搜索引擎)的缺点:
    (1.)需要循robot协议:Robots协议(也称为爬虫协议,机器人协议)的全称是“网络爬虫排除标准”(RobotsExclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
    (2.)搜索引擎返回的结果千篇一律没有很好的针对性,不能够特殊的用户群体返回对应的数据
    (3.)搜索引擎一般情况下获取的文本信息,处理图像,音频,视频多媒体还是有困难的,

    2.聚焦爬虫:是面向主题的爬虫,由需求产生,是一种定向的爬虫,在爬虫网页数据的时候,会对网页数据进行一些塞选,保证捉取和需求相关的数据,以后我们更多的就是实现聚焦爬虫

    做爬虫需要掌握的基本知识?
    1.python的基本语法
    2.前端知识
    3.数据持久化的知识
    4.了解基本的反爬虫的手段(header请求头,验证码,cookies,代理)
    5.静态页面和动态页面(ajax,js),selenium(获取页面源码是经过浏览器渲染之后的最终结果)
    6.多任务处理,爬虫框架,分布式爬虫....

    搜索引擎的爬取的url通过什么方式获取的??
    1.通过网站的外挂
    2.通过网页的url:(百度:http://zhanzhang.baidu.com/linksubmit/url)
    3.各大搜索引擎公司也会和DNS服务商合作

    如何实现一个爬虫?
    (1).找到目标url
    (2).根据url发起请求
    (3).解析响应结果:
    --- a.提取目标数据
    --- b.如何存在新的url,进一步提取(会执行1-3这个循环)
    (4).爬虫结束:所有符合条件的url请求全部获取完毕,以为着爬虫结束

    网站的三大特性:
    1.每一个资源都一个url(统一资源定位符),是唯一的
    2.网页都是使用HTML(超文本)文本展示数据的
    3.通过HTTP/HTTPS(超文本传输协议),获取和传递HTML

    大数据时代:数据如何产生?
    1.大的公司大的企业:通过用户产生的数据
    2.大的数据平台:通过收集或者和其他企业或者公司合作
    3.国家政府/大的机构:通过省县乡或者其他方式统计汇总产生的
    4.数据咨询公司:通过收集或者和其他企业或者公司合作,会根据数据做分析对比形成报表,给你做数据参考
    5.最终假如以上方式都不能满足的时候,我们就需要一个爬虫工程师,去专门做数据的提取

    为什么要使用python做爬虫?
    PHP,java,c/c++,python......

    PHP:可以用来做爬虫,但是对多任务的支持不是太好,爬虫是对象要求比较高的,所以说PHP天生不是干这个事情的

    JAVA :生态圈很完善,并且用途非常广范(后端,移动端....),java做爬虫是python最大的竞争对手,但是java代码量比较大,重构的成本比较高.

    c/c++:肯定是可以完成爬虫这件事的,并且运行的效果是非常高的,但是学习的门槛非常高,各个模块可能需要你自己封装和定制.(能使用c/c++的人一般比较nb)

    python:语法简介,代码优美,可读性高,并且对各模块的支持比较好,有很多强大的三方包,对多任务的处理也比较好,urllib,requests都能够很好的帮助我们实现一个爬虫项目,解析的库也非常多(lxml,bs4,pyquery...),并且还有强大的scrapy爬虫框架和scrapy_redis分布式爬虫框架.并且python作为一门胶水语言,对于其他语言的调度也是非常方便的.

    HTTP:超文本传输协议,主要使用来将html文本传输到本地浏览器

    https:作用和http一致,只是多了ssl(安全套接字),保证数据传输的安全性
    1.建立一个安全有效的数据传输通道,保证数据的安全性,
    2.保证网站的真实性和有效性

    ** url组成部分:**
    1.scheme:协议
    2.host:指的是域或者ip
    3.port:端口
    4.path:资源路径
    5.query-string:请求的参数
    6.anchor:锚点,主要是实现页面的定位作用

    请求头:
    User-Agent:模拟浏览器加载
    Cookies:携带cookies第一可以维持会话,告诉浏览器用户的身份信息
    Refere:告诉浏览器,当前请求,是从哪个页面发起的.

    常见的状态码:
    2xx:表示服务器成功接收请求并已完成整个处理过程。
    200:OK 请求成功

    3xx:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、 常用
    301: 永久重定向
    302:临时重定向(所请求的页面已经临时转移至新的url)

    4xx:客户端的请求有错误.
    400:错误请求,服务器无法解析请求
    401:未授权,没有进行身份验证
    403:服务器拒绝访问
    404:服务器无法找到被请求的网页
    408:请求超时

    5xx:服务器端出现错误
    500:服务器内部错误
    501:服务器不具备完成请求的功能
    503:服务器不可用

    BNS:将我们的域名转化为ip的一种技术

    作者:天王的
    链接:https://www.jianshu.com/p/cb5a27279f57
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    相关文章

      网友评论

          本文标题:python爬虫入门

          本文链接:https://www.haomeiwen.com/subject/nbcwyqtx.html