python学习系列--day08

本文介绍了Python中常用的内置模块contextlib和urllib,详细讲解了如何使用with语句和contextmanager装饰器,以及GET和POST请求。此外,还探讨了XML解析和HTML处理。在第三方模块部分,提到了requests库进行HTTP请求,chardet用于检测字符编码,以及psutil模块获取系统信息。
摘要由CSDN通过智能技术生成

一、常用内嵌模块

1、contextlib

    (1)任何对象只要正确实现了上下文的管理,都可以用with结构。而上下文的管理是通过类的__enter__和__exit__两个方法实现的

       class Find(object):

               def __init__(self,name):

                      self.name= name

               def __enter__(self):

                     print('Begin')

                     return self

                def __exit__(self,exc_type,exc_value,traceback):

                      if(exc_type):

                             print('Error')

                      else:

                             print('End')

                def find(self):

                       print('Find info about %s...’ % self.name)

          调用时  with Find('Jamson') as f:

                              f.find()

    (2)@contextmanager

              编写__enter__和__exit__方法比较繁琐,可利用@contextmanager装饰器进行简化

             from  contextlib import contextmanager

             class Find(object):

                def __init__(self,name):

                       self.name= name

                def find(self):

                       print('Find info about %s...’ % self.name)

           @contextmanager

            def creat_find(name):

                  print('Begin')

                  f = Find(name)

                 yield f

                 print('End')

          with creat_find('Jamson') as f:

                  f.find()

2、urllib

    (1)Get请求

             from urllib import request

             with urlopen('https://www.baid.com') as f:

                    data = f.read()

                    print('Status:', f.status,f.reason)

                    for k, v in f.getheads():

                            print('%s, %s' % (k, v))

                    print('Data:' data.encode('utf-8'))

     (2)Post请求

         from urllib import request,parse

         email = 'JamsonWan@gmail.com'

         password = 'Hello,world!'

         login_data = parse.urlencode([

                 ('username',email)

                 ('password',password)

                 ])

         req = request.Request('http://192.168.2.230/login')

         with urlopen(req, data = login_data.decode('utf-8') )  as f:

               data = f.read()

               .....

         可以利用req.add_header('xxxx')#来模拟浏览器

3、XML

     利用SAX解析器解析XML

    3个方法start_element, char_data, end_element

4、HTMLParser

     解析html中的内容

     from htmlparser import HTMLParser

     class MyHTMLParser(HTMLParser):

            def handle_starttag(self, tag, attrs):

                  print('<%s>' % tag)

             .....

二、三方模块

1、requests

  (1)需要先安装requests模块,如果安装了Anaconda可以直接使用

           pip install requests

  (2)Get请求

           import requests

           req = requests.get('www.baidu.com')

           r.status_code

           r.text

           对于带参数的get请求,requests.get() 有一个params的命名参数,其为一个dict类型。还有一个headers命名参数,其类型也是dict

   (3)Post请求

            r = request.post('www.baidu.com',data={'account': 'Jamson@gmail.com', password: 'mypassword'})

            传递json数据

            params = {'account': 'Jamson@gmail.com', password: 'mypassword'}

            r = requests.(url,json = params) #会自动序列化为json

   (4)上传文件

             upload_files = {'file': open('text.txt', 'rb')}

             r = requests.post(url, files = upload_files)

 2、chardet

       用于检测字符的编码格式

       import chardet

       chardet.detect(b'hello, world')

       data = '你好啊'.encode('gbk')

       chardet.detect(data)

3、psutil

      获取系统信息的模块 

      详情参照

 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001511052957192bb91a56a2339485c8a8c79812b400d49000

   

                                                                                                                                            next

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值