学习环境:

        windows10操作系统

        python3.6

        pycharm开发工具

    因为python3.6自带的urllib库,所以我们也不用再安装了,直接使用就好了。urllib库有如下模块

urllib.request  请求数据模块
urllib.parse 解析模块
urllib.response 请求响应模块
urllib.error 异常处理模块
urllib.robotparser  robots.txt 解析模块

    接下来我们挨个看一下每个模块都是如何使用。

urllib.request     请求数据模块

    urllib.request 模块提供了最基本的构造 HTTP (或其他协议,如 FTP)请求的方法,利用它可以模拟浏览器的一个请求发起过程。利用不同的协议去获取 URL 信息。它的某些接口能够处理基础认证 ( Basic Authenticaton) 、redirections (HTTP 重定向)、 Cookies (浏览器 Cookies)等情况。而这些接口是由 handlers 和 openers 对象提供的。

    request中,我们最常用的应该算是urlopen函数了,函数的定义如下:

    urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

url:需要打开的网址 data: Post 提交的数据, 默认为 None ,当 data 不为 None 时, urlopen() 提交方式为 Post timeout:设置网站访问超时时间参数说明:

    下面我们用一个举例来看一下使用。

    #导入库

    import urllib.request

    f=urllib.request.urlopen("http://www.baidu.com")

    dict=f.readlines()

    for i in range(0,len(dict)):
        print(dict[i])
    #返回获取页面对象的信息
    print(f.info())
    #获取请求的URL
    print(f.geturl())
    #获取页面对象的状态码
    print(f.getcode())

    首先我们需要导入库,然后按照URLopen的定义我们只输入一个url参数,此时程序将采用get方式去获取url的页面内容,一旦连接成功会返回一个文件类型对象。这个对象我们使用f来接收,那么这个对象就存在一些读取内容的方式,如:f.read()、f.readline()、f.readlines()、f.close()和f.fileno()。我这边通过f.readlines()进行验证,读取出来的内容以列表方式返回。返回内容如下:

python学习三——urllib.request.urlopen()学习_对象方法

    这个文件对象还有属性获取的方法,如:f.info()、f.geturl()、f.getcode()。返回内容如下:

  •  
"C:\Program Files\Python36\python.exe" C:/Users/admin/PycharmProjects/wxgzh/test.pyBdpagetype: 1Bdqid: 0xbaa01596000105c8Cache-Control: privateContent-Type: text/html;charset=utf-8Date: Wed, 17 Jun 2020 14:28:04 GMTExpires: Wed, 17 Jun 2020 14:27:20 GMTP3p: CP=" OTI DSP COR IVA OUR IND COM "P3p: CP=" OTI DSP COR IVA OUR IND COM "Server: BWS/1.1Set-Cookie: BAIDUID=586A83A705A2C41D638BC40E794DF80C:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.comSet-Cookie: BIDUPSID=586A83A705A2C41D638BC40E794DF80C; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.comSet-Cookie: PSTM=1592404084; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.comSet-Cookie: BAIDUID=586A83A705A2C41D185DF618FB9D4A36:FG=1; max-age=31536000; expires=Thu, 17-Jun-21 14:28:04 GMT; domain=.baidu.com; path=/; version=1; comment=bdSet-Cookie: BDSVRTM=0; path=/Set-Cookie: BD_HOME=1; path=/Set-Cookie: H_PS_PSSID=1429_31669_21090_32046_30824_31845_26350_22159; path=/; domain=.baidu.comTraceid: 1592404084095445351413447772221317645768Vary: Accept-EncodingVary: Accept-EncodingX-Ua-Compatible: IE=Edge,chrome=1Connection: closeTransfer-Encoding: chunked

http://www.baidu.com200

    urlopen文件类型对象的方法

urllib.request.urlopen对象方法 描述
f.read(bytes) 从f中读出所有或bytes个字节
f.readline() 从f中读取一行
f.readlines() 从f中读出所有行,以列表形式返回
f.close() 关闭f的url链接
f.fileno() 返回f的文件句柄
f.info() 获取f的MIME头文件
f.geturl() 返回f真正的url
f.getcode() 返回f的状态码

    关于urlopen的知识点还没有整完,由于时间原因,就只能整理整么多了,明天继续。

    

关注微信公众号——菜鸟小白的学习分享

妈妈再也不用担心我找不到路了

 

python学习三——urllib.request.urlopen()学习_状态码_02