首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python模块——contextlib和urllib

contextlib模块

之前的内容已经提到过读写文件的方法,必须在使用完毕后正确关闭它们,要么使用try...finally,要么使用with语句。

对于with方法,实际上并不是只有读写文件可以用,任何对象只要实现了上下文管理,就可以用with语句。

实现上下文管理是通过 和 这两个方法实现的。

@contextmanager

上面的写法比较繁琐,contextlib模块中的 可以提供相同的功能,比如改写上面的代码:

@contextmanager这个decorator接受一个generator,用yield语句把with ... as var把变量输出出去,然后,with语句就可以正常地工作了。

并且@contextmanager还能够实现在某段代码前后自动执行特性代码。

@closing

如果一个对象没有实现上下文,可以通过使用closing()来把它变为上下文对象。

closing()方法的实现非常简单,把任意对象变为上下文对象,并支持with语句。

urllib模块

urllib提供了许多用于操作URL的功能。

Get

urllib的 模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应:

如果我们要想模拟浏览器发送GET请求,就需要使用Request对象,通过往Request对象添加HTTP头,我们就可以把请求伪装成浏览器。例如,模拟iPhone 6去请求豆瓣首页:

Post

如果要以POST发送一个请求,只需要把参数data以bytes形式传入。下面是模拟微博登录的代码

Handler

如果还需要更复杂的控制,比如通过一个Proxy去访问网站,则需要利用ProxyHandler来处理。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180405G07S0U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券