博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用python访问URL
阅读量:5955 次
发布时间:2019-06-19

本文共 1305 字,大约阅读时间需要 4 分钟。

hot3.png

用python访问URL,这实在是一个简单得不能再简单的问题了。比如需要访问 OSC请求OSC响应

import urllib2strHtml = urllib2.urlopen('http://www.oschina.net').read()

看这一段代码,非常简单。直接引入urllib2这个包之后,马上就可以调用urlopen这个方法打开这个网址。urlopen返回的是一个具有file对象行为的对象,直接使用read方法就可以读出内容。

如果确保每次能成功访问URL,代码就是这样简单的。不过现实情况下也会有很多意外情况。我们在访问某个网页时候,也经常出现种种意外,最常见的意外有下面3种: 404 NOT FOUND 403 FORBIDDEN 500 Internal Server Error

404,403, 500这些是HTTP协议的状态码。 HTTP 1.1协议规定了5种不同的状态码,分别是 1xx表示临时状态。常见有100。 2xx表示成功访问。常见有200 206。 3xx表示跳转。常见有302 304。 4xx表示客户端请求不正确。常见的有400 403 404 5xx表示服务器内部出错。常见有500。

在我们写程序的时候,一定要考虑到服务器会出现下面的意外。我们可以通过下面的方法来处理:

import urllib2try: s = urllib2.urlopen("http://www.oschina.net").read()except urllib2.HTTPError,e: print e.code

如果访问url失败,代码会抛出urllib2.HTTPError这个异常。而这个异常的code属性就是HTTP的状态码。

考虑到HTTP协议可能返回错误的结果是否就已经够了呢?答案是不够的。因为这个世界上实在是有太多异常情况的发生,特别是需要访问网络资源的时候需要额外小心。比如当网络连接超时或者是失败的时候,代码会抛出urllib2.URLError这个异常。我们也要处理这个异常。

import urllib2try: s = urllib2.urlopen("http://www.oschina.net").read()except urllib2.HTTPError,e: print e.codeexcept urllib2.URLErrror,e: print str(e)

我们在访问url时候,千万要注意一件事情,就是URL中的参数是不能含有一些特殊字符的。URL中参数的字符比如'?=&'会破坏整个URL。因此我们需要将这些参数转义,用%十六进制字符表示。

例如URL

实际上是有两个参数 a=^ b=&^^&

这两个参数都含有非法字符,如何处理呢。

>>> import urllib>>> urllib.urlencode({'a':'^','b':'&^^&'})'a=%5E&b=%26%5E%5E%26'

转载于:https://my.oschina.net/costaxu/blog/89931

你可能感兴趣的文章
利用单壁路由实现vlan间路由
查看>>
hello world
查看>>
CentOS 7 配置yum本地base源和阿里云epel源
查看>>
python 学习导图
查看>>
生成树
查看>>
(MYSQL) Unknown table 'a' in MULTI DELETE的解决办法
查看>>
作为一个程序员必备的素质
查看>>
Webpack入门教程十四
查看>>
104种***清除方法
查看>>
Exchange 2016 之移动设备邮箱策略
查看>>
zookeeper使用简介及注意事项
查看>>
python练习题1
查看>>
mha-环境搭建
查看>>
rabbitMq
查看>>
ubuntu mysql lessons
查看>>
Linux命令基础
查看>>
Hibernate查询技术(2)
查看>>
https被修改成http排查过程
查看>>
常用端口号
查看>>
[转] 深入理解React 组件状态(State)
查看>>