python获取远程页面内容,避免卡死问题
2013-12-10 18:31
302 查看
在python 2.7中,获取远程页面的数据可以使用urllib模块,也可以使用urlib2模块。我是使用urllib2模块来操作的。
我在本地建立一个测试文件test.php,文件内容就是输出一段字符串:
我也搭建了web服务器,可以通过http://localhost/test.php来访问这个文件。
而后用python中的urllib2中的方法来获取这个这个地址的内容:
上例如果成功运行,应该看到这样的输出:
但是这样的代码并不完善,如果请求的页面很久没有返回数据,python就会处于等待过程,直到页面数据返回。在test.php加上休眠代码,模拟页面很久才能返回数据:
修改python程序,加入时间输出:
重新运行python程序,等待大约10秒钟,才能看到数据返回,正常的话,输出如下:
开始时间和结束想差了10秒,就是上面加的sleep(10)了。如果页面数据一直不返回,那么不是要一直等下去?可以在urllib2.urlpen()时加上timeout参数,设置超时时间,在python 2.6以上的版本才支持。修改python代码:
上面加入了超时设置,因为如果超时退出的话,还会抛出一个异常,所以加上try/except处理。正常执行后应当输出:
这边就只等待了5秒,然后就因为请求远程数据超时退出了,不会一直卡住。
友情提示:
如果是在python 2.6版本之前,可以通过socket.setdefaulttimeout()方法来设置超时时间。
我在本地建立一个测试文件test.php,文件内容就是输出一段字符串:
1 | echo 'I think; therefor, I exist.' ; |
而后用python中的urllib2中的方法来获取这个这个地址的内容:
1 | import urllib2 |
2 |
3 | url = "http://localhost/test.php" |
4 | f = urllib2.urlopen(url) |
5 | f.readlines() |
['I think; therefor, I exist.']
但是这样的代码并不完善,如果请求的页面很久没有返回数据,python就会处于等待过程,直到页面数据返回。在test.php加上休眠代码,模拟页面很久才能返回数据:
1 | sleep(10) |
1 | import urllib2 |
2 | import time |
3 |
4 | time.time() #start time |
5 | url = "http://localhost/test.php" |
6 | f = urllib2.urlopen(url) |
7 | f.readlines() |
8 | time.time() #end time |
1351344569.49
['I think; therefor, I exist.']1351344579.5
开始时间和结束想差了10秒,就是上面加的sleep(10)了。如果页面数据一直不返回,那么不是要一直等下去?可以在urllib2.urlpen()时加上timeout参数,设置超时时间,在python 2.6以上的版本才支持。修改python代码:
1 | import urllib2 |
2 | import time |
3 |
4 | time.time() |
5 | try : |
6 | url = "http://localhost/test.php" |
7 | f = urllib2.urlopen(url, timeout = 5 ) |
8 | f.readlines() |
9 | except Exception, e: |
10 | e |
11 | time.time() |
1351345395.35 timed out 1351345400.37
这边就只等待了5秒,然后就因为请求远程数据超时退出了,不会一直卡住。
友情提示:
如果是在python 2.6版本之前,可以通过socket.setdefaulttimeout()方法来设置超时时间。
相关文章推荐
- c# 远程获取网页内容,防止乱码,页面获取不全
- python获取网页内容的相关编码问题
- Python网页抓取:获取页面中某段内容的xpath
- [转]用asp.net实现远程获取其他网站页面指定内容
- .net实现远程获取其他网站页面内容
- 远程获取网页内容类(请求,返回请求页面内容)
- c#远程获取网页内容及乱码问题的解决办法 .
- c# 获取远程URL页面的内容
- 用.net实现远程获取其他网站页面内容!(核心代码分析)
- SpringBind对象到页面时,用ajax提交form表单内容,后台无法获取绑定对象问题
- 【.Net码农】用asp.net实现远程获取其他网站页面指定内容
- .net实现远程获取其他网站页面内容
- 用.net实现远程获取其他网站页面内容
- c#远程获取网页内容及乱码问题的解决办法 .
- 用.net实现远程获取其他网站页面内容!(核心代码分析)
- 用.net实现远程获取其他网站页面内容!(核心代码分析)
- 解析PHP中的file_get_contents获取远程页面乱码的问题
- 用asp.net实现远程获取其他网站页面指定内容
- 用.net实现远程获取其他网站页面内容
- Python 网络爬虫与信息获取(二)—— 页面内容提取