需要下列语句才能使用urlopen
from urllib.request import urlopen
函数参数(使用dir(urlopen)查看)
urllib.request.urlopen
(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
url, 网址(必须http:// 开头) 或者 request返回的对象
data=None, 类型是字典。 如果没有需要可以不写。参数data参数不为空的时候,表示以post方式提交到url的数据(提交数据的两种方式:post与get),Post的数据必须是bytes或者iterable of bytes,不能是str
timeout=<object object at 0x0000016C080FB290> 网络超时
, * , 不知道什么意思
cafile=None,
capath=None,
可选cafile 和 capath参数指定一套可信的CAHTTPS请求证书。
cafile应该指向一个文件含一束CA证书,
而capath应该指向目录哈希的证书文件。
cadefault=False,* cadefault *参数被忽略。
context=None 如果*context*是指定的,它必须是一个ssl.sslcontext实例描述各种SSL选项。
函数返回值 是 http.client.HTTPResponse类型 一个类文件对象
它提供了如下常用方法: 使用dir()查看详情
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息
getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
geturl():返回请求的url;
也可以这样做
使用request()来包装请求,再通过urlopen()获取页面。
urllib.request.Request
(url, data=None, headers={}, method=None)
headers 类型是字典,例如
headers = {
'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3', #浏览器的User-Agent
#这个头部可以携带如下几条信息:浏览器名和版本号、操作系统名和版本号、默认语言
'Referer': r'http://www.lagou.com/zhaopin/Python/?labelWords=label', #目标网站域名
#可以用来防止盗链,有一些网站图片显示来源http://***.c,就是检查Referer来鉴定的
'Connection': 'keep-alive' #表示连接状态,记录Session的状态。
}