python中open的用法,Python中open()
我们在抓取百度首页的html时,使用urlopen打开请求,这是一个特殊的打开器(也就是模块帮我们搭建的)。但是基本的urlopen()方法不支持代理、cookie等其他高级HTTP/HTTPS功能,所以我们需要使用Python的opener来定制我们的请求内容。
具体步骤:
(1)使用相关的Handler处理器创建具有特定功能的处理器对象;
(2)然后使用这些处理器对象通过build_opener()方法创建一个自定义的opener对象;
(3)使用自定义的opener对象,调用open()方法发送请求。
我们先来回顾一下使用urlopen获取百度首页的html代码示例:
#导入urllib库
importurllib.request
#url作为Request()方法的参数,构造并返回一个请求对象。
request=URL lib . request . request( http://www . Baidu.com )
#Request对象,作为urlopen()方法的参数,发送给服务器,接收响应。
response=urllib . request . urlopen(request)
# Class file对象支持file对象的操作方法,比如read()方法读取一个文件的所有内容并返回一个字符串。
html=response.read()。解码(“utf-8”)
#打印字符串
Print(html)接下来,我们来看看使用opener的处理方法:
fromurllibimportrequest
#构建一个HTTPHandler处理器对象来支持HTTP请求的处理
http _ handler=请求。HTTPHandler()
#构建一个HTTPSHandler处理器对象来支持HTTPS请求的处理
# http _ handler=请求。HTTPSHandler()
#调用request.build_opener()方法创建一个支持处理HTTP请求的opener对象。
opener=request . build _ opener(http _ handler)
#构建请求请求
请求=请求。请求( http://www.baidu.com/)
#调用自定义打开器对象的open()方法来发送请求请求
response=opener.open(请求)
#获取服务器响应内容
html=response.read()。解码(“utf-8”)
#打印字符串
Print(html)在上面的第一段代码中,我们通过直接导入urllib.request来导入我们需要的包,这样在我们想要使用的时候就需要urllib.request来使用。在第二段代码中,我们通过从urllib import request导入我们需要的包,这样当我们使用它的时候,就可以直接请求使用它了。
相关:《Python视频教程》
第一个代码在上一篇文章中已经提到了,这里就不解释了。
在第二段代码中,我们使用opener的方法来处理我们的请求,这样我们就可以对代理、cookie等做进一步的操作。这将在后续文章中讨论。最终结果如下:
在http _ handler=request . httphandler()中,我们还可以添加一个debuglevel=1的参数,该参数会打开调试日志,这样在程序执行时,会自动在屏幕上打印出接收包和发送包的头,方便调试,有时还省去了捕获包的工作。
代码如下:
fromurllibimportrequest
#构建一个HTTPHandler处理器对象来支持HTTP请求的处理
http _ handler=请求。HTTPHandler(debuglevel=1)
#构建一个HTTPHandler处理器对象来支持HTTPS请求的处理
# http _ handler=请求。HTTPSHandler(debuglevel=1)
#调用request.build_opener()方法创建一个支持处理HTTP请求的opener对象。
opener=request . build _ opener(http _ handler)
#构建请求请求
请求=请求。请求( http://www.baidu.com/)
#调用自定义打开器对象的open()方法来发送请求请求
response=opener.open(请求)
#获取服务器响应内容
html=response.read()。解码(“utf-8”)
#打印字符串
打印(html)输出结果如下:
可以看到,在回复结果时,会为我们打印出一些请求信息。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。