51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2574|回复: 8
打印 上一主题 下一主题

学python的那些事——初学Python之requests(1)

[复制链接]
  • TA的每日心情
    开心
    2016-7-25 00:04
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2016-7-4 11:22:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    为了做接口测试,于是我决定去学习python,在学习的时候,我是只学到了函数,就直接跳到requests(爬虫)进行了学习。很难,但是也坚持过来了。
    马上我们将会进入到requests模块,也是我们做接口测试的时候会接触的最多的模块。你准备好了吗?
    在学习requests之前,我们先来了解一下,什么是爬虫
    爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本

    4、requests
         4.1 使用requests进行爬取
                    下面是我编写的第一个爬虫的脚本

                    import requests# 导入requests模块
                    r = requests.get('https://daohang.qq.com').content# 通过requests.get方法访问地址https://daohang.qq.com,再使用r.content获取返回的bytes内容
                    print(r) # 打印获取到的内容


                    结果是不是很熟悉?没错,这里的结果和使用urlopen的时候打印r.read()的结果是一样的,因为这里选择了r.content方法,使结果返回的是bytes型的数据,其实等于是html = bytes(bytearray(html, encoding='utf-8')) 。而requests中如果想使结果变的更加美观则不需要urlopen那么复杂。在urlopen中,我们需要使用decode()方法进行解析,而requests中我们只需要将r.content改变为r.text就可以了
                   
                    import requests
                    r = requests.get('https://daohang.qq.com').text
                    print(r)

                    看到结果了吗?是不是很神奇?
                      
                             注: urlopen通常是用来爬取网页内的内容 ,而requests.get/post通常是访问的网址接口类的来获取内容


         4.2 设置headers
    import requests
    headers = {
               "url":"",               # 配置headers中的各项参数,headers的作用类似一个字典,字典的键是唯一且不可变的
               "Host":"",
               "Referer":"",
               "User - Agent":"",
               }
    url = '接口地址'
    data = {"service":"","tab":"tab2","username":'xxxx',"password":'xxxx'} # 在data中设置各项参数,在访问的时候可以传参
    repsonse = requests.get(url,headers = headers,data = data) .text# 通过requests.get方法对目标链接进行访问,并且调用headers与data两个参数,实现自动登录功能.并通过过r.text实现转码
    print(repsonse) # 打印从页面中获取的内容

              运行上述代码,我们可以实现一个简单的接口,模拟登陆的功能。那么,为什么我们要去设置headers呢?有些时候,我们并不能够通过链接直接进行访问,所以这个时候,我们就需要通过设置headers,进行完全模拟请求的封包信息进行访问


         4.3 设置代理

                   为了避免一些站点对访问的次数和IP的限制,我们在有些时候必须通过设置代理,以及更换代理来帮助我们工作。那么,怎么通过python,去设置代理呢,我们看下面这段代码
               import requests
                 proxies = {'代理地址'}
                 response = requests.get('http://python.jobbole.com/81341/',proxies = proxies).text
                 print(response)


                 这里,我们把代理的地址赋予proxies,再通过使用requests.get进行访问的时候,通过代理去访问,并获取到返回内容


         4.4 HTTP异常处理
                   在实际工作中,我们可能因为这样或者是那样的原因,导致请求失败。那么这个时候,我们想要去解决这个错误,首先就是要去定位这个错误。在python中,可是使用URLError库,以及try-except语句来帮助我们捕获相应的异常。下面是一个例子。

                proxies = {'代理地址'}
              try:
                   response = requests.get('http://python.jobbole.com/81341/', proxies=proxies).text
              except requests.HTTPError as e: # 捕获http的异常
                   print(e.code)               # 打印http返回的状态码
              except requests.URLError as e: # 捕获URLError
                   print(e.reason)             # 打印捕获到的URLError信息
              else:
                   print(response)             # 打印爬取到的内容


              首先我们来看一下,这里为什么先去捕获HTTPError呢?在上面我们也讲了,HTTPError是URLError的子类,在编程中,都是子类在父类之前的,所以,这里我们先对HTTPError进行捕获,如果捕获不到HTTPError,我们再对URLError进行捕获,如果,没有捕获到异常,就打印出爬取的内容。


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

  • TA的每日心情

    2016-7-19 17:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2016-7-4 11:51:31 | 只看该作者
    支持c妹,抱大腿
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-7-25 00:04
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2016-7-4 11:54:44 | 只看该作者
    雷哥V5 发表于 2016-7-4 11:51
    支持c妹,抱大腿

    不要闹
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2016-7-4 13:36:32 | 只看该作者
    支持大神C总
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2016-7-4 14:23:46 | 只看该作者
    我也准备写这个,可以一起学不?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-7-25 00:04
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2016-7-4 15:06:17 | 只看该作者
    qwe7023804 发表于 2016-7-4 14:23
    我也准备写这个,可以一起学不?

    加油,共勉。我会不定期更新学习笔记。一起学呗
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2016-7-4 15:23:25 | 只看该作者
    大C 发表于 2016-7-4 15:06
    加油,共勉。我会不定期更新学习笔记。一起学呗

    你都看的什么书,有推荐的吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-7-25 00:04
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
     楼主| 发表于 2016-7-5 09:54:01 | 只看该作者
    qwe7023804 发表于 2016-7-4 15:23
    你都看的什么书,有推荐的吗

    主要就是看廖雪峰和小甲鱼的。当然还有虫师
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 16:41 , Processed in 0.069924 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表