前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python学习三——urllib.request.urlopen()学习

python学习三——urllib.request.urlopen()学习

作者头像
菜鸟小白的学习分享
发布2020-07-15 15:21:18
1.3K0
发布2020-07-15 15:21:18
举报
文章被收录于专栏:菜鸟小白的学习分享

学习环境:

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:设置网站访问超时时间参数说明:

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

代码语言:javascript
复制
    #导入库    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()进行验证,读取出来的内容以列表方式返回。返回内容如下:

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

代码语言:javascript
复制
"C:\Program Files\Python36\python.exe" C:/Users/admin/PycharmProjects/wxgzh/test.py
Bdpagetype: 1
Bdqid: 0xbaa01596000105c8
Cache-Control: private
Content-Type: text/html;charset=utf-8
Date: Wed, 17 Jun 2020 14:28:04 GMT
Expires: Wed, 17 Jun 2020 14:27:20 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1
Set-Cookie: BAIDUID=586A83A705A2C41D638BC40E794DF80C:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=586A83A705A2C41D638BC40E794DF80C; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1592404084; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BAIDUID=586A83A705A2C41D185DF618FB9D4A36:FG=1; max-age=31536000; expires=Thu, 17-Jun-21 14:28:04 GMT; domain=.baidu.com; path=/; version=1; comment=bd
Set-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.com
Traceid: 1592404084095445351413447772221317645768
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Connection: close
Transfer-Encoding: chunked


http://www.baidu.com
200

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的知识点还没有整完,由于时间原因,就只能整理整么多了,明天继续。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 菜鸟小白的学习分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档