美文网首页python网络爬虫与信息提取
2019-08-09 Python网络爬虫与信息提取(2) HT

2019-08-09 Python网络爬虫与信息提取(2) HT

作者: 小孟在充电 | 来源:发表于2019-08-10 00:15 被阅读0次

    HTTP协议

    HTTP协议,即超文本传输协议(Hypertext transfer protocol)。
    HTTP协议永远都是客户端发起请求,服务器回送响应

    HTTP协议的主要特点可概括如下:
    1、支持客户/服务器模式。支持基本认证和安全认证。
    2、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
    3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
    4、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。
    5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

    HTTP协议是采用URL作为定位网络资源的标识。
    URL格式: protocol :// hostname[:port] / path / [;parameters][?query]#fragment

    名称 说明
    protocol 协议,常用的协议是http
    hostname 主机地址,可以是域名,也可以是IP地址
    port 端口,http协议默认端口是:80端口,如果不写默认就是:80端口
    path 路径,网络资源在服务器中的指定路径
    parameter 参数,如果要向服务器传入参数,在这部分输入
    query 查询字符串,如果需要从服务器那里查询内容,在这里编辑
    fragment 片段,网页中可能会分为不同的片段,如果想访问网页后直接到达指定位置,可以在这部分设置

    HTTP协议对于资源的操作

    方法 说明
    GET 请求获取URL位置的资源
    HEAD 请求获取URL位置资源的响应消息报告,即获取该资源的头部信息
    POST 请求向URL位置的资源后附加新的数据
    PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
    PATCH 请求局部更新URL位置的资源,即改变该处资源的部分内容
    DELETE 请求删除URL位置存储的资源

    我们可以把互联网当成一个云端,云端上存储的所有资源用URL作为描述/标识
    HTTP通过URL对资源做定位,通过这6个方法对资源进行管理。
    每次操作都是独立的。

    理解patch 和 put的区别

    假设URL位置有一组数据UserInfo,包括userId, userName, userGender等20个字段。
    需求:在某个特别的页面里只能修改userName,其他不变

    采用patch:仅向URL提供修改后userName。
    采用put:必须将完整的20个字段提交到URL,做完整更新,未提交字段被删除,且浪费带宽。

    HTTP协议与Response库

    HTTP协议方法 Response库方法 功能一致性
    GET requests.get() 一致
    HEAD requests.head() 一致
    POST requests.post() 一致
    PUT requests.put() 一致
    PATCH requests.patch() 一致
    DELETE requests.delete() 一致
    import requests
    r = requests.head("http://httpbin.org/get") 
    r.headers #获取该网页的头部信息
    
    image.png
    r.text #内容为空
    
    image.png
    ##Requests库的post()方法
    payload = {'key1':'value1','key2':'value2'}
    r = requests.post('http://httpbin.org/post', data = payload) #向URL POST一个字典,自动编码为form(表单)
    print(r.text)
    
    image.png
    ##Requests库的post()方法
    r = requests.post('http://httpbin.org/post',data = 'ABC') #向URL POST一个字符串自动编码为data
    print(r.text)
    
    image.png
    ##Requests库的put()方法
    payload = {'key1': 'value1', 'key2': 'value2'}
    r = requests.put('http://httpbin.org/put', data = payload)
    print(r.text)
    
    image.png

    相关文章

      网友评论

        本文标题:2019-08-09 Python网络爬虫与信息提取(2) HT

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