zoukankan      html  css  js  c++  java
  • 第一周 1 (requests库)

     

     

    2. requests.get()方法

    r = requests.get(url)
    Requests库的2个重要对象
    作用:构造一个向服务器请求资源的Request对象,返回一个包含服务器资源的Response对象

    import requests
    r = requests.get("http://www.baidu.com")
    print(r.status_code)
    type(r)
    r.headers
      

    Response对象的属性

    r.content 获得一个图片,图片以二进制存储,r.content还原图片

     

      

    Requests库 head()方法
    >>> r = requests.head('http://httpbin.org/get')
    >>> r.headers
    {'Content‐Length': '238', 'Access‐Control‐Allow‐Origin': '*', 'Access‐
    Control‐Allow‐Credentials': 'true', 'Content‐Type':
    'application/json', 'Server': 'nginx', 'Connection': 'keep‐alive',
    'Date': 'Sat, 18 Feb 2017 12:07:44 GMT'}
    >>> r.text
    ''



    3 requests库的主要方法解析

    (1)requests.request(method, url, **kwargs)
    method : 请求方式,对应get/put/post7
    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
    >>> kv = {'key1': 'value1', 'key2': 'value2'}
    >>> r = requests.request('GET', 'http://python123.io/ws', params=kv)
    >>> print(r.url)
    http://python123.io/ws?key1=value1&key2=value2

    data : 字典、字节序列或文件对象,作为Request的内容
    >>> kv = {'key1': 'value1', 'key2': 'value2'}
    >>> r = requests.request('POST', 'http://python123.io/ws', data=kv)
    >>> body = '主体内容'
    >>> r = requests.request('POST', 'http://python123.io/ws', data=body)

    json : JSON格式的数据,作为Request的内容
    >>> kv = {'key1': 'value1'}
    >>> r = requests.request('POST', 'http://python123.io/ws', json=kv)

    headers : 字典,HTTP定制头
    >>> hd = {'user‐agent': 'Chrome/10'}
    >>> r = requests.request('POST', 'http://python123.io/ws', headers=hd)

    cookies : 字典或CookieJarRequest中的cookie
    auth : 元组,支持HTTP认证功能

    files : 字典类型,传输文件
    >>> fs = {'file': open('data.xls', 'rb')}
    >>> r = requests.request('POST', 'http://python123.io/ws', files=fs)

    timeout : 设定超时时间,秒为单位
    >>> r = requests.request('GET', 'http://www.baidu.com', timeout=10)

    proxies : 字典类型,设定访问代理服务器,可以增加登录认证
    >>> pxs = { 'http': 'http://user:pass@10.10.10.1:1234'
    'https': 'https://10.10.10.1:4321' }
    >>> r = requests.request('GET', 'http://www.baidu.com', proxies=pxs)

    allow_redirects : True/False,默认为True,重定向开关
    stream : True/False,默认为True,获取内容立即下载开关
    verify : True/False,默认为True,认证SSL证书开关
    cert : 本地SSL证书路径

    requests.request(method, url, **kwargs)
    **kwargs: 控制访问的参数,均为可选项
    params
    data
    json
    headers
    cookies
    auth
    files
    timeout
    proxies
    allow_redirects
    stream
    verify
    cert

    (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个控制访问的参数

     网络爬虫的限制

     来源审查:判断User‐Agent进行限制
    检查来访HTTP协议头的User‐Agent域,只响应浏览器或友好爬虫的访问
    发布公告:Robots协议
    告知所有爬虫网站的爬取策略,要求爬虫遵守

    robots协议

    Robots Exclusion Standard,网络爬虫排除标准

    作用:
    网站告知网络爬虫哪些页面可以抓取,哪些不行
    形式:
    在网站根目录下的robots.txt文件

    案例:京东的robots协议

    https://www.jd.com/robots.txt
    User‐agent: *
    Disallow: /?*
    Disallow: /pop/*.html
    Disallow: /pinpai/*.html?*
    User‐agent: EtaoSpider
    Disallow: /
    User‐agent: HuihuiSpider
    Disallow: /
    User‐agent: GwdangSpider
    Disallow: /
    User‐agent: WochachaSpider
    Disallow: /

    # 注释,*代表所有,/代表根目录
    User‐agent: *
    Disallow: /
    Robots协议基本语法

    案例:真实的robots协议

    http://www.baidu.com/robots.txt
    http://news.sina.com.cn/robots.txt
    http://www.qq.com/robots.txt
    http://news.qq.com/robots.txt
    http://www.moe.edu.cn/robots.txt (无robots协议 )

     

    import time
    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 "Error"
        
    if __name__ == "__main__":
        url = 'https://www.cnblogs.com/key221/p/9511225.html'
        start_time = time.perf_counter()
        for i in range(50):
            getHTMLText(url)
            print('第{}次爬取,耗时{:.5}s'.format(i, time.perf_counter()-start_time))
        end_time = time.perf_counter()
        print('50次爬取网页最终耗时{:.5}s'.format(end_time-start_time))
        
    

      

     

  • 相关阅读:
    委托的说明和举例
    用C#编写获取远程IP,MAC的方法
    200个Gmail邀请,要的请留下邮箱地址
    .NET中各种数据库连接大全
    .net中何有效的使用Cache
    55种网页常用小技巧(javascript) (转)
    一个WEB项目安装包,自动配置数据库,config文件和虚拟目录。。(转)
    windows xp sp2后所有更新
    C#反射实例(转)
    可扩展的应用程序:新增功能时无须重新编译
  • 原文地址:https://www.cnblogs.com/key221/p/9511225.html
Copyright © 2011-2022 走看看