美文网首页
Scrapy和相关知识

Scrapy和相关知识

作者: 优秀的人A | 来源:发表于2019-01-25 12:38 被阅读8次

    爬虫背景知识:
    大数据的时代?数据怎么来的呢?

    企业产生的数据:大的公司会根据用户的行为记录数据,数据会被大公司利用
    ,可以用来做数据的分析

    数据平台的数据:

    政府和机构的数据:

    数据咨询平台的数据:

    • 爬虫:以上平台或者机构不能够提供我们需要的数据,
      这时就需要爬虫工程师,根据需求从互联网上抓取数据?

    什么是爬虫?
    就是一段自动抓取互联网数据的程序或脚本

    网页的三大特性?:
    1.每一个网页都有自己唯一的URL地址(统一资源定位符)
    2.网页都是通过HTML(超文本)来展示数据的
    3.网页是通过http/https(超文本传输协议)来传输html的

    爬虫最基本的步骤?:
    1.寻找目标url,发起请求
    2.获取请求的响应结果,分析响应结果
    3.从响应结果中提取数据
    a.第一部分,从网页中提取的目标数据
    b.如果存在新的url地址,则提取,继续发起请求
    爬虫结束:所有的目标url全部请求完毕,爬虫结束

    • 数据的用途:
      1.可以爬取数据,写自己的网站
      2.搜索引擎
      3.购物助手
      4.日常数据的基本分析(知乎数据冰山专栏)
      做爬虫并不只有python可以完成:
      java php c/c++ switch ...
      java:是python写爬虫的最大的竞争对手,java的发展周期
      长,生态圈都比较完善,也有很多第三方库的支持,java的代
      码量比较大,开发的成本比较高,后期维护也比较繁琐.(以后可以去学习了解)
      php:php曾经被叫做世界上最好的语言(一般用来后端的),
      也可以用来写爬虫,但是对多任务的支持不太好,爬虫对效
      率要求比较高,所有一般不适用php写爬虫
      c/c++:比较偏向于底层的语言,代码的运行效率高,学习的
      门楷非常高,代码成型比较慢.
      python:代码简单易懂,并且第三方的库也有很多,python
      自带的urllib网络请求模块,requests网络请求模块,网络
      解析库xpath,BeautifulSoup4,pyquery等等,还有成熟
      高效稳定的爬虫框架scrapy(pyspider)等等,并且还支持
      分布式爬虫(scrapy-redis)框架

    爬虫的分类(通用爬虫,聚焦爬虫):

    • 通用爬虫:是搜索引擎的重要组成部分
      作用和目的:尽可能全的将互联网上所有的网页下载到
      本地,通过分词,去噪等进行预处理,处理后进行数据的持久化(
      镜像备份),然后提取检索系统
      获取数据的步骤):
      a.获取一些种子url,放入待爬取队列
      b.从待爬取队列中取出url发起请求,将获取的响应结果
      进行处理,之后存入本地,然后将已爬取的url,放入已爬
      取队列
      c.从响应结果中获取外链(url),将url放入待爬取队列中
      DNS服务:将域名转换为ip的技术

    搜索引擎如何获取新网站的url:
    1.向搜索引擎直接提交url地址(https://ziyuan.baidu.com/linksubmit/url)
    2.通过网页的外链
    3.跟DNS服务商合作,新网站注册的域对应的网
    站将会迅速被搜索引擎抓取
    搜索引擎的排名:
    1.根据用户的访问量和网站的流量进行的排名
    2.竞价排名:根据价钱进行网站的排名
    搜索引擎需要遵守robot协议:
    是一个规范,网站通过robot协议告诉搜索引擎哪些页面可以爬取,
    哪些页面不可以爬取
    https://www.taobao.com/robots.txt
    User-agent: Baiduspider(搜索引擎爬虫名称)
    Allow: /article (允许爬取的url)
    Disallow: /product/ (不允许爬取的url)
    搜索引擎的缺点:
    1.只能够获取简单的文件数据,大型的二进制数据(音频,视频)
    都不能够获取
    2.搜索引擎搜索的结果千篇一律,没有办法根据特定的用户,特定的需求
    获取特定的数据
    3.搜索引擎搜索结果99%并没用
    由于搜索引擎的缺点,产生了聚焦爬虫
    聚焦爬虫:是面向主题,面向需求的爬虫,只获取跟
    需求相关的数据

    • OSI七层协议的目的:实现不同的系统互联之间的数据通讯,
      实现数据的传输.
    • 七层协议:

    应用层 表示层 会话程 传输层 网络层 数据链路层 物理层
    应用层:http/https
    传输层:TCP/UDP
    TCP:网络传输协议,面向连接的,长连接,传输的是数据流
    ,确保数据的安全性和完整性,但是数据传输的效率低
    UDP:网络传输协议,是非面向连接的,短连接,传输的是数据包,
    传输数据是不安全的,可能会造成数据的丢失,传输速度非常快

    • http(超文本传输协议,端口号是80):

    实现从网络传输草文本数据到本地浏览器的传送协议

    https(端口号是443):是http的安全版本,在http的基础上添加了一个
    SSL(安全套接字层)层,用于web端的安全传送,在传输层
    对网络连接进行加密,
    1.构建了一个安全的数据传输通道.
    2.保证网站的真实性和有效性
    https协议需要有一个证书(CA证书):由专门的证书机构颁发的,
    也可以自己生成,但是访问的时候会提示连接不安全

    • http的工作原理:

    URL介绍:
    URI:统一资源标志符
    URN:统一资源名称
    URL:统一资源定位符
    URI是URN和URL的父类

    • URL的组成部分:
      https://baike.baidu.com/item/OSI/5520?fr=aladdin
      https://book.qidian.com/info/1004608738
      https://book.qidian.com/info/1004608738#Catalog
      scheme:指的是协议(https/http)
      host:值得是服务器的ip或者域名
      port:指的是端口号
      path:资源路径
      query_string:url地址后面的查询参数
      anchor(锚点):可以指定要跳转的位置
      请求的方式都是基于http1.1的版本
      get:只是用于从服务器获取数据,再url连接后面
      可能会跟一些查询参数
      post:向服务器端提交数据,数据会放在请求体中,
      一般用于添加或者修改数据
      delete:用来删除数据
      put:更新整个资源(用来做数据的更新)
      patch:(更新资源)(局部数据的更新)

    • 对比:get和post请求的区别

    1.使用场景:get从服务器端获取数据,post请求向服务器端提交数据
    2.安全性:get请求参数只拼接在url地址上,post请求会将参数放在
    请求体中,(注意:不要误认为只要url地址后面添加了参数就是一个get请求)
    3.get请求的url是有长度限制的,post的请求体中可以添加很多字段

    • 常见的请求头参数:

    User-Agent:这个是设置浏览器
    (设置这个参数模拟浏览器请求对方服务器)
    Cookie:保存在客户端中,保存的是用户信息
    Referer:告诉服务器,当前请求是从哪个界面跳转过来的(防盗链)
    Accept:可以接受的数据类型....

    • Cookie和Session:目的保持会话

    http请求是无状态的,每一次请求断开后,下一次请求就
    认为是一个新的请求,为了维持请求状态就用到了Cookie
    和Session
    Cookie:保存在客户端的,记录信息确定用户的身份
    Session:保存在服务端的,同样是记录信息确定用户身份

    • 常见的请求状态码:

    200:请求成功
    3xx:重定向
    301:永久重定向
    302:临时重定向
    4xx:客户端请求错误
    400:请求错误,服务器无法解析
    401:未授权,没有进行身份验证
    403:服务器拒绝访问
    404:访问的页面不存在
    405:请求方式不允许
    408:请求超时 5xx:服务端错误
    500:服务端内部错误
    501:服务器暂时不具备完成请求的功能
    503:服务器不可用

    相关文章

      网友评论

          本文标题:Scrapy和相关知识

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