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

本帖最后由 一只学编程的鱼 于 2023-1-5 10:22 编辑

引言

  之前我们说过,事实上,如果直接打印出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

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
匿名  发表于 2023-1-5 14:54:37
直接给你666

点评

谢谢  详情 回复 发表于 2023-1-5 17:04
HUC-孔明实名认证 2023-1-5 14:56:38 来自手机 | 显示全部楼层
牛批,我不建议你写点名人故事

点评

???  详情 回复 发表于 2023-1-5 17:00
HUC-孔明 发表于 2023-1-5 14:56
牛批,我不建议你写点名人故事

???
HUC-孔明实名认证 2023-1-5 17:06:11 来自手机 | 显示全部楼层
快更!加油!你的每一篇我都会看的加油!

点评

谢谢了  详情 回复 发表于 2023-1-5 17:12
HUC-孔明 发表于 2023-1-5 17:06
快更!加油!你的每一篇我都会看的加油!

谢谢了
【HUC】七 2023-1-9 01:12:09 | 显示全部楼层
来了挺勤奋

点评

没事,3天了,下次一定doge  详情 回复 发表于 2023-1-9 01:14
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

一只学编程的鱼

初入联盟

关注
  • 6
    主题
  • 2
    粉丝
  • 3
    关注
初中生,一只学编程的鱼,在编程的道路上愈战愈勇,很热爱编程,希望有人能带带我,我希望,有一天我们可以建立起一个大家无偿共享技术,和谐,和睦的环境,谢谢红盟,给了我在网络上的一席之地

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行