Python爬虫面试题(一)

一、HTTP与HTTPS的区别?

  • 概念:

    • HTTP:超文本传输协议,是互联网应用最广泛的一种网络协议,所有的www文件都必须遵守这
      个标准,是一个客户端与服务器端请求和应答的标准(TCP),用于从www服务器传输超文本到本地
      浏览器的传输协议。
    • HTTPS:安全套接字层超文本传输协议,以安全为目标的HTTP通道,简单的说就是HTTP安全版,
      即在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就是SSL。
  • 区别:

    • HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,
      为了保证这些隐私数据加密传输,网景公司设计了SSL(Sercure Socket Layer)协议用于对HTTP协议传
      输的数据进行加密,从而诞生了HTTPS。具体的区别如下:
    • 1、HTTPS更加安全:HTTPS协议是有SSL+HTTP协议构成的可进行传输、身份认证的网络协议,要比
      HTTP协议的信息明文传输更安全。
    • 2、HTTPS需要申请证书:HTTPS协议需要到CA声请证书
    • 3、端口不同:HTTP使用的是常见的80端口,而HTTPS连接使用的是443端口。
    • 4、安全性不同:HTTP的连接很简单,是无状态的,而HTTPS+SSL协议构建的可进行加密传输、身份
      认证的网络协议,要比HTTP协议更安全。

二、Python中的异常实现机制,try–except–finally/raise/assert

  • 在python的异常中,有一个万能异常:Exception,他可以捕获任意异常

  • try–except–finally:此语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理,
    如果不想在发生异常时结束程序,只需要在try语句中捕获异常即可

  • raise:语句抛出一个指定的异常,我们可以使用类或实例参数调用raise语句引发异常。

  • assert断言:是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。可以理解assert断言
    语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。

三、HTTP请求的无状态性

  • 无状态指:每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,
    它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况

  • web应用是有状态的。所以我们加入了cookies、session等机制去实现由状态的web应用。所以我们可以这么理解:
    Web应用=http协议+session、cookies等状态机制+其他辅助的机制。

四、GET和POST的区别?

  • GET把参数包含在URL中,POST通过request body传递参数。
  • GET和POST是什么?HTTP协议中的两种发送请求的方法。
  • HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
  • HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。
  • 区别:
    • (1) get是从服务器上获取数据,post是向服 务器传送数据。Get请求返回request-URL 所指出的任意信息
      POST请求用来发送电子邮件、新闻或发送 能由交互用户填写的表格。这是唯一需要 在请求中发送body的请求。
      使用post请 求时需要在报文首部content-length字段 中指出body的长度

    • (2) get是把参数数据队列加到提交表单的 ACTION属性所指的URL中,值和表单内 各个字段一一对应,在URL中可以看到。
      Post是通过HTTP post机制,将表单内各 个字段与其内容放置在HTML HEADER内 一起  传送到ACTION属性所指的URL地址,
      用户看不到这个过程

    • (3) 对应get方式,服务器端用 request.queryString获取变量的值,对于 post方式服务器端用request.form获取提 交的数据

    • (4) Get传送的数据量小,不能大于2KB。Post 传送的数据量较大,一般被默认为不受限 制。但理论上,IIS4中最大量为80KB,
      IIS5 中为100KB。用IIS过滤器的只接受get参 数,所以一般大型搜索引擎都是用get方   式

    • (5) Get安全性非常低,post安全性相对较高。 如果这些数据是中文数据而且是非敏感 数据,那么get;
      如果用户输入的数据不 是中文字符而且包含敏感数据,那么还是 使用post为好

五、网络请求状态码分别表示什么意思?

1xx:通知
2xx: 成功
3xx: 重定向
4xx: 请求错误
5xx: 服务器错误

六、python中json库中的load、loads、dump、dumps的区别与用法

1、json.dumps(i):
将Python类型装换成字符串类型
  json中的dumps方法是用来将特定格式的数据进行字符串化的操作,比如列表字典都可以进行字符串化操作然后写入json的file;而且如果是要写入json文件就必须要进行dumps操作;

2、json.dump():
基于文件的转换,功能跟dumps功能相同
  和dumps差一个s,功能作用大致上是一样,也是讲数据转换成str格式,最终包括了讲数据写入json文件的一个操作步骤,json.dump(data, file-open,ascii=False),可以包含三个属性,第三个ascii是用来避免出现unicode写入的乱码的;

3、json.load():
基于文件的转换,功能跟loads功能相同
  load()函数用于从json文件中读取数据,json.load(file-open)即可,这样可以还原在json文件中的原本的数据格式,诸如列表或者字典;file在open的时候最好是注意用encoding=‘utf-8’的编码,这样出来的数据就是原来的数据,而不会出现乱码;

4、json.loads():
将字符串转换成Python类型(list,dict)
  loads用来将字符型数据转换成原来的数据格式,诸如列表和字典,就是原本是什么格式就还原成什么格式。
总之,带有s的方法都是不涉及文件操作的,没有带s的方法都是涉及到文件的操作的。平常使用的时候就经常混淆这些。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值