urllib的实现---timeout,获取http响应码,重定向,proxy的设置

1.Timeout设置超时

只能修改Socket设置全局Timeout

#! /usr/bin/env python3

import socket

import urllib.request

# timeout in seconds

timeout = 2

socket.setdefaulttimeout(timeout)

# this call to urllib.request.urlopen now uses the default timeout

# we have set in the socket module

req = urllib.request.Request(‘http://www.python.org/‘)

a = urllib.request.urlopen(req).read()

print(a)

2.获取HTTP响应码

#! /usr/bin/env python3

import urllib.request

req = urllib.request.Request(‘http://python.org/‘)

try:  

  urllib.request.urlopen(req)

except urllib.error.HTTPError as e:

  print(e.code)

print(e.read().decode("utf8"))

3、异常处理1

 1 #! /usr/bin/env python3
 2
 3 from urllib.request import Request, urlopen
 4
 5 from urllib.error import URLError, HTTPError
 6
 7 req = Request(‘http://www.python.org/‘)
 8
 9 try:
10
11   response = urlopen(req)
12
13 except HTTPError as e:
14
15   print(‘The (www.python.org)server couldn‘t fulfill the request.‘)
16
17   print(‘Error code: ‘, e.code)
18
19 except URLError as e:
20
21   print(‘We failed to reach a server.‘)
22
23   print(‘Reason: ‘, e.reason)
24
25 else:
26
27   print("good!")
28
29   print(response.read().decode("utf8")) 

4、异常处理2

 1 #! /usr/bin/env python3
 2
 3 from urllib.request import Request, urlopen
 4
 5 from urllib.error import  URLError
 6
 7 req = Request("http://www.python.org/")
 8
 9 try:
10
11   response = urlopen(req)
12
13 except URLError as e:
14
15   if hasattr(e, ‘reason‘):
16
17     print(‘We failed to reach a server.‘)
18
19     print(‘Reason: ‘, e.reason)
20
21   elif hasattr(e, ‘code‘):
22
23     print(‘The server couldn‘t fulfill the request.‘)
24
25     print(‘Error code: ‘, e.code)
26
27 else:  print("good!")
28
29   print(response.read().decode("utf8"))

5.重定向

import urllib.requestimport socketurl = ‘https://www.baidu.com‘response =urllib.request.urlopen(url)isRediercted = response.geturl() == "https://www.baidu.com"
6.代理设置

import urllib.request

proxy_support = urllib.request.ProxyHandler({‘sock5‘: ‘localhost:1080‘})

opener = urllib.request.build_opener(proxy_support)

urllib.request.install_opener(opener)

a = urllib.request.urlopen("http://www.python.org/").read().decode("utf8")

print(a)

时间: 2024-07-31 09:14:36

urllib的实现---timeout,获取http响应码,重定向,proxy的设置的相关文章

C# 之【获取网页响应码200】

做了个监控网站的C#项目,判断网站是否运行正常,采用的就是获取HTTP头返回的状态码. 比如状态码为200的就是网站正常,403是Forbidden,404是网页未找到这样. 代码如下: 首先是使用库using System.Net; public static bool getState() { string URL = "https://www.baidu.com/"; string statusCode; try { HttpWebRequest req = (HttpWebRe

HTTP请求的python实现(urlopen、headers处理、 Cookie处理、设置Timeout超时、 重定向、Proxy的设置)

## python实现HTTP请求的三中方式:urllib2/urllib.httplib/urllib 以及Requests urllib2/urllib实现 urllib2和urllib是python两个内置的模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅 1 首先实现一个完整的请求与响应模型 urllib2提供基础函数urlopen, import urllib2 response = urllib2.urlopen('http://www.cnblogs.co

curl 命令获取网络网站的响应码

curl命令参数很多,博主很多都没有用过.今天发现可以用-w参数挺好用的. -w:--write-out,作用就是输出点什么.curl的-w参数用于在一次完整且成功的操作后输出指定格式的内容到标准输出.输出格式由普通字符串和任意数量的变量组成,输出变量需要按照%{variable_name}的格式,如果需要输出%,double一下即可,即%%,同时,\n是换行,\r是回车,\t是TAB.curl会用合适的值来替代输出格式中的变量,所有可用变量如下: url_effective 最终获取的url地

HTTP状态码(响应码)

HTTP状态码(响应码)用来表明HTTP请求是否已经成功完成.HTTP响应类型一共分五大类:消息响应,成功响应,重定向,客户端错误,服务器端错误. 下表列出了所有HTTP状态码,以及他们各自所代表的含义: 状态码 原因短语 代表含义 HTTP 版本 消息响应 100 Continue(继续) 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应.服务器必须在请求完成后向客户端发送一个最

HTTP的错误响应码

响应码分类 4xx:客户端出现错误 400 Bad Request :服务器认为客户端出现了错误,但不能明确以下哪种错误时使用此错误码.例如HTTP请求格式错误 401 Unauthorized:用户认证信息缺失或者不正确,导致服务器无法处理请求 407 Proxy Authentication Required:对需要经由代理的请求,认证信息未通过代理服务器的验证 403 Forbidden:服务器理解请求的含义,但没有权限执行此请求 404 Not Found:服务器没有找到对应的资源 41

HTTP响应码摘自apach官网

HTTP状态列表 响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行. 响应码分五种类型,由它们的第一位数字表示: 1xx:信息,请求收到,继续处理 2xx:成功,行为被成功地接受.理解和采纳 3xx:重定向,为了完成请求,必须进一步执行的动作 4xx:客户端错误,请求包含语法错误或者请求无法实现 5xx:服务器错误,服务器不能实现一种明显无效的请求 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分.(HTTP 1.1新) 101 Switchi

今天携程出事了:让我们来学习下http的响应码

就在今天,2015年5月28日,中国最大的旅游机票预订网站--携程网粗大事了.据传携程网的数据库被人物理删除了,而容灾备份的数据又无法正常使用,服务器全面遭受瘫痪.每小时给携程带来的损失约100万美元.巴拉巴拉,作为中国最大的.Net互联网公司,携程出了这样的事情真是不应该(技术人员:怪我咯). 转入正题当我们打开携程首页会看到这样一个错误页面: 在页面的下方我们会看到404这样一串数字. 其实在我们打开一些小网站时,常常会遇到这样一串数字,这些数字是我们进行http请求时,服务端给出的响应结果

HTTP协议响应码

响应码 响应头对浏览器来说很重要,它说明了响应的真正含义.例如200表示响应成功了,302表示重定向,这说明浏览器需要再发一个新的请求. l  200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中: l  404:请求的资源没有找到,说明客户端错误的请求了不存在的资源: l  500:请求资源找到了,但服务器内部出现了错误: l  302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址: l 

HTTP请求头部+响应码

本篇博文主要介绍HTTP请求-响应的系列过程,包括四个部分,是在陆续学习中觉着之间有关联总结下来的,以便自己今后忘记后可以快速查看也为各位看到这篇文章的朋友们梳理一下知识.下面,正文开始: 作为一个前端开发人员,我们每天都在与页面打交道,那么,当你输入一个网址的时候,实际究竟会发生什么呢?下面,就先来解答一下这个问题. 一.当在浏览器输入一个网址后,实际会发生什么? 回答之前,先摘一段<淘宝技术这十年>中的"你刚才在淘宝上买了一件东西"里的一段话,对我理解这个问题有启发.