urllib

2018-12-23  本文已影响0人  白s圣诞节
url的异常错误处理:

URLerror产生的主要原因:

HTTPError:
有三个属性:

下面是常见的HTTP状态码:

什么是urllib

Urllib是python内置的HTTP请求库
包括以下模块:

简单的自定义opener()
import urllib.request

# 构建一个HTTPHandler 处理器对象,支持处理HTTP请求
http_handler = urllib.request.HTTPHandler()

# 构建一个HTTPHandler 处理器对象,支持处理HTTPS请求
# http_handler = urllib.request.HTTPSHandler()

# 调用urllib.request.build_opener()方法,创建支持处理HTTP请求的opener对象
opener = urllib.request.build_opener(http_handler)

# 构建 Request请求
request = urllib.request.Request("http://www.baidu.com/")

# 调用自定义opener对象的open()方法,发送request请求
response = opener.open(request)

# 获取服务器响应内容
print (response.read().decode())
代理:

原理:其实是发送了请求给Web服务器,Web服务器把响应传回给我们。

import urllib.request
import random

proxy_list = [
    {"https" : "124.88.67.81:80"},
    {"https" : "124.88.67.81:80"},
    {"https" : "124.88.67.81:80"},
    {"https" : "124.88.67.81:80"},
    {"https" : "124.88.67.81:80"}
]

# 随机选择一个代理
proxy = random.choice(proxy_list)

# 使用选代理构建代理处理器对象
proxy_handler = request.ProxyHandler(
    proxies=proxy
)

#根据proxy_handler实例化一个opener对象
opener = request.build_opener(proxy_handler)

url = 'http://www.baidu.com/'

try:
    response = opener.open(url,timeout=5)
    print(response.status)
except error.HTTPError as err:
    print(err.reason)
except error.URLError as err:
    print(err.reason)

但是,这些免费开放代理一般会有很多人都在使用,而且代理有寿命短,速度慢,匿名度不高,HTTP/HTTPS支持不稳定等缺点(免费没好货)。

上一篇 下一篇

猜你喜欢

热点阅读