zoukankan      html  css  js  c++  java
  • python网络爬虫与信息提取——1.requests库入门

    1.更多信息http://www.python-requests.org

    2.安装:Win平台: “以管理员身份运行”cmd,执行 pip install requests

    3.requests库的七个主要方法:

    requests.request() 构造一个请求,支撑以下各方法的基础方法
    requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
    requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
    requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
    requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
    requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
    requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE

    4.get()方法

    (1)r = requests.get(url)

    get(url)构造一个向服务器请求资源的Request对象

    r返回一个包含服务器资源的Response对象

    (2)requests.get(url, params=None, **kwargs)
    ∙ url : 拟获取页面的url链接
    ∙ params : url中的额外参数,字典或字节流格式,可选
    ∙ **kwargs: 12个控制访问的参数

    (3)Response 对象的属性:

    r.status_code       HTTP请求的返回状态,200表示连接成功,404表示失败
    r.text           HTTP响应内容的字符串形式,即,url对应的页面内容
    r.encoding            从HTTP header中猜测的响应内容编码方式
    r.apparent_encoding     从内容中分析出的响应内容编码方式(备选编码方式)
    r.content         HTTP响应内容的二进制形式

    r.encoding:如果header中不存在charset,则认为编码为ISO‐8859‐1
    r.text根据r.encoding显示网页内容
    r.apparent_encoding:根据网页内容分析出的编码方式可以看作是r.encoding的备选

    5.爬取网页的通用代码框架

    (1)requests异常

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

    (2)Response异常

    r.raise_for_status() 如果不是200,产生异常 requests.HTTPError

    (3)通用代码框架

    import requests

    def getHTMLText(url):

        try:

            r=requests.get(url,timeout=30)

            r.raise_for_status()

            r.encoding=r.apparent_encoding

            return r.text

        except:

            return "产生异常"

    if _name_="_main_":

        url="http://www.baidu.com"

        print(getHTMLText(url))

    6.HTTP协议

    (1)URL格式如下:http://host[:port][path]
    host: 合法的Internet主机域名或IP地址
    port: 端口号,缺省端口为80
    path: 请求资源的路径

     (2)http协议对资源的操作

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

    向URL POST一个字典自动编码为form(表单)

    向URL POST一个字符串自动编码为data

    7.requests库的主要方法

    (1)requests.request(method, url, **kwargs)
    ∙ method : 请求方式,对应get/put/post等7种
    ∙ url : 拟获取页面的url链接
    ∙ **kwargs: 控制访问的参数,共13个

    ∙ method : 请求方式
    r = requests.request('GET', url, **kwargs)
    r = requests.request('HEAD', url, **kwargs)
    r = requests.request('POST', url, **kwargs)
    r = requests.request('PUT', url, **kwargs)
    r = requests.request('PATCH', url, **kwargs)
    r = requests.request('delete', url, **kwargs)
    r = requests.request('OPTIONS', url, **kwargs)

    **kwargs: 控制访问的参数,均为可选项
    params : 字典或字节序列,作为参数增加到url中:

    data    : 字典、字节序列或文件对象,作为Request的内容

    json : JSON格式的数据,作为Request的内容

    headers : 字典,HTTP定制头

    cookies : 字典或CookieJar,Request中的cookie

    auth : 元组,支持HTTP认证功能

    files   : 字典类型,传输文件

    timeout : 设定超时时间,秒为单位

    proxies : 字典类型,设定访问代理服务器,可以增加登录认证

    allow_redirects : True/False,默认为True,重定向开关

    stream  : True/False,默认为True,获取内容立即下载开关

    verify  : True/False,默认为True,认证SSL证书开关

    cert    : 本地SSL证书路径

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

    ∙ url : 拟获取页面的url链接
    ∙ params : url中的额外参数,字典或字节流格式,可选
    ∙ **kwargs: 12个控制访问的参数

    (3)requests.head(url, **kwargs)

    ∙ url : 拟获取页面的url链接
    ∙ **kwargs: 12个控制访问的参数

    (4)requests.post(url, data=None, json=None, **kwargs)

    ∙ url : 拟更新页面的url链接
    ∙ data  : 字典、字节序列或文件,Request的内容
    ∙ json : JSON格式的数据,Request的内容
    ∙ **kwargs: 12个控制访问的参数

    (5)requests.put(url, data=None, **kwargs)

    ∙ url : 拟更新页面的url链接
    ∙ data  : 字典、字节序列或文件,Request的内容
    ∙ **kwargs: 12个控制访问的参数

    (6)requests.patch(url, data=None, **kwargs)

    ∙ url : 拟更新页面的url链接
    ∙ data  : 字典、字节序列或文件,Request的内容
    ∙ **kwargs: 12个控制访问的参数

    (7)requests.delete(url, **kwargs)

    ∙ url : 拟删除页面的url链接
    ∙ **kwargs: 12个控制访问的参数

  • 相关阅读:
    [转载]Jupyter Notebook 的快捷键
    【转载】mysql行列转换方法总结
    【Deep Learning Nanodegree Foundation笔记】第 10 课:Sentiment Analysis with Andrew Trask
    赵铁夫讲单词·解密单词的潜规则【2016全新精华版】
    【转载】ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
    [IJCAI-17 口碑商家客流量预测]
    【Deep Learning Nanodegree Foundation笔记】第 9 课:Model Evaluation and Validation
    【Deep Learning Nanodegree Foundation笔记】第 5 课:Logistic Regression
    不用动笔背单词之托福
    Jenkins--02命令行构建Job
  • 原文地址:https://www.cnblogs.com/Wang-Y/p/8465851.html
Copyright © 2011-2022 走看看