urllib模块 (一)

需要下列语句才能使用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的状态。
 }

 

原文地址:https://www.cnblogs.com/Sky-Aces/p/8489114.html