专栏首页叁金大数据快速搭建Hadoop及HBase分布式环境

快速搭建Hadoop及HBase分布式环境

      好久不更新博客了。。。

之前的博文都是通过urllib2进行http访问,接下来我要说一个利器啊!requests模块,无法用语言对他进行赞扬了,需要的,有兴趣的,可以去了解下,移步官方中文文档:

Requests: 让 HTTP 服务人类

简直是不要太刁。。。

      这篇博文呢,主要是将之前博文中用urllib2写的HttpClient类换成request。代码如下:

# coding=utf-8
from __future__ import unicode_literals
import requests
from io import StringIO


class HttpClient:
    def __init__(self):
        pass
    __headers = {
        'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0',
        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        # 'Host':'www.xiami.com'
        }
    __proxies = {
          # "http": "http://10.10.1.10:3128",
          # "https": "http://10.10.1.10:1080",
        }

    def get(self, url, params=None, retries=3):
        try:
            req = requests.get(url, headers=self.__headers, timeout=30, params=params,
                               proxies=self.__proxies)
            req.raise_for_status()
            return req.text
        except Exception,e:
            print e
            if retries > 0:
                return self.get(url, params, retries - 1)
            else:
                print "Get Failed", url
                return ''

    def post(self, url, data=None, retires=3):
        try:
            req = requests.post(url, headers=self.__headers, timeout=30, data=data,
                                proxies=self.__proxies)
            req.raise_for_status()
            return req.text
        except Exception,e:
            print e
            if retires > 0:
                return self.post(url,data,retires - 1)
            else:
                print "Post Failed", url
                return ''

    def download(self, url, file_name, params=None, cookies=None):
        try:
            req = requests.get(url, headers=self.__headers, params=params,
                               proxies=self.__proxies)
            output = open(file_name, 'wb')
            output.write(req.content)
            output.close()
        except Exception,e:
            print 'error',e

    def get_cookies(self, url, key, params=None):
        try:
            req = requests.get(url, headers=self.__headers, timeout=30, params=params,
                               proxies=self.__proxies)
            req.raise_for_status()
            return req.cookies.get(key,'')
        except Exception,e:
            return ''

    def get_headers(self, url, key, params=None):
        try:
            req = requests.get(url, headers=self.__headers, timeout=30, params=params,
                               proxies=self.__proxies)
            req.raise_for_status()
            return req.headers.get(key)
        except Exception,e:
            return ''

  记录一下,后面会时常更新博文的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用cert-manager让Ingress启用免费的HTTPS证书

    cert-manager 是替代 kube-lego 的一个开源项目,用于在 Kubernetes 集群中自动提供 HTTPS 证书,支持 Let’s Encr...

    imroc
  • 通过春节参加宴席引发的设计开发App的深层次思考

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/5e3c7b4ef37d

    AWeiLoveAndroid
  • ionic和cordova初探--从安装到运行首个app

    好多人说ionic好用,一直要推荐我用,我就不信了,来安装玩一下试试效果。实践出真知!安装过程各种坑,工具太多了,太麻烦了,差点放弃(还好坚持下来呢)。

    AWeiLoveAndroid
  • Flutter代码模板,解放双手,提高开发效率必备

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/4184745d6983 转载请标明出处:https:...

    AWeiLoveAndroid
  • IM TCP网络问题分析

    应该下调心跳周期,但是旧版(1.0.1Realease-1.0.6Realease版本)存在

    大大大大大先生
  • 最全的BAT大厂面试题整理

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/c70989bd5f29

    AWeiLoveAndroid
  • 开发工具总结(9)之开源项目的README文档的最全最规范写法

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/813b70d5b0de

    AWeiLoveAndroid
  • SpringMVC中出现的线程安全问题分析

    (ps:前几个星期发生的事情)之前同事跟我说不要使用@Autowired方式注入HttpServletRequest(ps:我们的代码之前用的是第2种方式)。同...

    用户2032165
  • 老司机带你重构Android的v4包的部分源码

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/a08d754944c4

    AWeiLoveAndroid

扫码关注云+社区

领取腾讯云代金券