Python网络爬虫:爬虫篇(二)--- HTTPResponse的方法属性及urlopen()函数的其他参数

之前我们说过,事实上,如果直接打印出urlopen()函数返回的结果,那么返回的是一个HTTPResponse类型的对象,我们之前只介绍了其中一个方法,即read()方法,今天我们来说一说这个对象的其他属性和方法(部分),而urlopen()函数也不止有url这个参数,我们顺便把这个也给说一下

HTTPResponse对象的其他属性及方法(部分)

第一个是status属性,用于返回所指定url的状态码,大家都知道,网址是状态码如果是200则为正常,404就是打不开也就是异常,那么我们话不多说,直接实战:

让我们来看看输出的结果吧:

可以看到,确实输出了状态码:200,即为正常。接下来就是getheaders()方法和getheader()方法,哎哎哎,先别打我,仔细看,这两个方法不一样,一个带s,一个不带,有什么区别吗?当然有,想想在英语上,名词带s表明什么,复数,那么就很明了了,把这个方法名拆开,get,headers,没错,获取响应头,我们直接实战一波:

仔细观察输出结果,这确实是响应头:

那么那个不加s的是干啥用的,这很简单,他有一个参数,这个参数是响应头中的一个键,其结果返回这个键对应的值,是不是有点懵?老规矩,上例子:

那么在这里我们可以获取响应头中的Server的值,我们来看看是否果真如此:

对比之前的结果,嗯,这确实是Server的值,这下大家就明白了吧。

urlopen()函数的其他参数

首先就是data参数了,这是可选的,这个参数必须是字节流编码格式,即bytes格式,可以用bytes()函数转换,如果添加了这个参数,那么请求的方式就会变为POST,我们这里拿一个专供测试HTTP请求的网站举个栗子:

可以看到,我们传入的参数是{"Hello":"world"},这是一个字典,我们需要用的urllib.parse库中的urlencode进行转换(转换为字符串),第二个参数是指定格式的,这里我们选择utf-8,这个网站可以输出请求的一些信息,我们来看一看:

可以看到,我们的参数成功的被提交到了from字段中。

那么接下来就是第二个参数,timeout参数,可以规定超出响应的时间,举个栗子:

那么在这里,我们设置了timeout参数为0.001即0.001秒,由于一般来说,没有网站可以在0.001秒内响应,所以抛出了错误:

我们可以配合urllib.error这个第三方库来处理这些异常:

那么在这里呢,我们先捕获了URLError错误,将它命名为e,接着用isinstance()函数配合socket这个第三方库判断出异常类型为timeout即超时异常,打印出“您的网页超时了”的字样,老样子,一般来说,没有网页可以在0.001秒内响应,所以,不出意料:

那么在实际应用中呢,我们可以使用这个参数来跳过那些长时间不响应的网站。

最后是几个比较不常用的参数,我就一笔带过了:

context参数:必须是ssl.SSLContext类型,用于指定SSL设置。

cafile参数:指定CA证书

capath参数:指定这个证书的路径

这两个呢在请求HTTP链接时将会用到。

cadefault参数:这个参数就不多说了,现在已经弃用了,默认值为False。

好了,以上就是第二篇全部内容了,有什么建议和意见都可以告诉我,本人技术有限,再加上本就是自学,难免会有错误的地方,欢迎大佬们指出,最后,如果只是引用一小部分倒不用告诉我,如果是引用很多或搬运请务必私聊我并标明出处,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主题模板站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值