• 爬虫-相关库知识整理(更新)


    requests库主要方法

    import requests
    
    requests.request(method, url, **kwargs)    """构造一个请求,支撑下面各种基础方法"""
    # **kwarg包括params, data, json, headers, cookies, auth, files, timeout, proxies(设代理服务器),
    # allow_redirexts, stream, verify 12个访问控制参数
    requests.get(url, params=None, **kwargs) """获取html网页的主要方法,对应HTTP的GET""" requests.head(url, **kwargs) """获取html网页头信息的方法,对应HTTP的HEAD""" requests.post(url, data=None, json=None, **kwargs) """向html页面提交POST请求""" requests.put(url, data=None, **kwargs) """向html页面提交PUT请求""" requests.patch(url, data=None, **kwargs) """向html页面提交局部修改请求""" requests.delete(url, **kwargs) """向html页面提交删除请求"""

    1.requests.get(url, params=None, **kwargs)

        url:你获取页面的url链接;

        params:url中额外参数,字典或字节流格式,可选;

        **kwargs:12个控制访问的参数;

      r = requests.get(url)返回一个包含服务器资源的Response对象r,r包含了爬虫返回的全部内容。其中r有5中常用的属性

    r.status_code                """返回HTTP请求的状态码, 200表示成功,404表示失败"""
    
    r.text                            """HTTP响应内容的字符串形式,url对应页面内容"""
    
    r.encoding                     """从HTTP header中猜测的相应内容编码方式"""
    
    r.apparent_encoding       """从内容中分析出的响应内容编码方式"""
    
    r.content                        """HTTP响应内容的二进制形式"""
    
    r.raise_for_status      """判断状态码是否正确,如果不是200就raise HTTPException"""

      

    2.requests库的异常类型

    requests.ConnectionError        """网络连接异常,DNS查询失败,拒绝连接等"""
    
    requests.HTTPError                 """HTTP连接错误"""
    
    requests.URLRequired             """URL缺失异常"""
    
    requests.TooManyRedirects      """超过最大重定向次数,产生重定向异常"""
    
    requests.ConnectTimeout        """连接远程服务器时超时"""
    
    requests.Timeout                    """请求URL超时"""
    

      通过以上两点一般的爬取通用框架就可以大致勾画出来

     1 import requests
     2 
     3 def getHTMLText(url):
     4     try:
     5         r = requests.get(url, timeout=30)
     6         r.raise_for_status()    # 如果状态码错误,则抛出异常
     7         r.encoding = r.apparent_encoding
     8         return r.text
     9     except:
    10         return "产生异常"
    11 
    12 if __name__ == "__main__":
    13     url = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
    14     print(getHTMLText(url))

    3.HTTP协议

    超文本传输协议(HTTP)是一种基于”请求与响应“模式的、无状态的应用层协议。HTTP协议一般采用URL作为网络定位的标识。(http://host[:port][path])

    而URL就是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。

    HTTP协议对资源的操作方法(method)主要有:GET, HEAD, POST, PUT, PATCH, DELETE对应requests库的几个方法,功能也一致。

    GET:请求获得URL位置的资源;

    HEAD:请求获取URL位置资源的响应消息报告,即该资源的头部信息

    POST:请求向URL位置的资源后附加新的数据

    PUT:请求向URL位置存储一个资源,覆盖原URL位置的资源

    PATCH:请求局部更新URL位置的资源,改变该资源的部分内容

    DELETE:请求删除URL位置存储的资源

  • 相关阅读:
    框架Frameset 的JS 跳转 刷新 [转]
    Javascript的变量与delete操作符
    字符串替换方法的优劣
    Nutch介绍(译)
    权限系统—数据授权模型
    Apache Synapse介绍(译)
    java动态代理
    ASM简介
    maven使用技巧——构件搜索
    springSecurity源码分析——org.springframework.security.web.FilterInvocation类
  • 原文地址:https://www.cnblogs.com/KrianJ/p/10586084.html
Copyright © 2020-2023  润新知