美文网首页
第一天注册,记录每天学到的小知识

第一天注册,记录每天学到的小知识

作者: D_w | 来源:发表于2019-05-22 21:31 被阅读0次

    计划把每天学到的小知识记录下来,就这样吧

    matlab:

    如何加载.mat文件转换为矩阵形式

    S1 = load('IntBP1.mat');
    
    BP1 = struct2cell(S1);
    
    Mymat1 = cell2mat(BP1);
    
    save Mymat1.mat Mymat1 -MAT
    Mymat1就是矩阵形式了(S1是Struct Array 形式)。
    
          cell:创建空的元胞数组
    
          cellfun:为元胞数组的每个元胞执行指定的函数
    
          celldisp:显示所有元胞的内容
    
          cellplot:利用图形方式显示元胞数组
    
          cell2mat:将元胞数组转变成为普通的矩阵
    
          mat2cell:将数值矩阵转变成为元胞数组
    
          num2cell:将数值数组转变成为元胞数组
    
          deal:将输入参数赋值给输出
    
          cell2struct:将元胞数组转变成为结构
    
          struct2cell:将结构转变为元胞数组
    
          iscell:判断输入是否为元胞数组
    

    爬虫:

    如果爬取的是动态信息,比如需要加载,翻页等的信息,在Network中找对应的进行爬取,利用requests,bs4,json等库;如果爬取的是静态信息,如小说图片,则在Element中爬取,利用requests,bs4等库。

    动态信息用requests.get爬到后得用json()方法将response对象变为列表/字典对象,再用取字典中的值的方法取出想要的信息。

    requests库用来取得网址内容,返回response对象,可以用text方法提取到文字内容,也可以用content提取到二进制文件,如图片,音乐。

    r.status_code #响应状态码

    r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read() 读取

    r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩

    r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码

    r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None

    特殊方法#

    r.json() #Requests中内置的JSON解码器

    r.raise_for_status() #失败请求(非200响应)抛出异常

        bs4.BeautifulSoup可以用来解析requests.get得到的网址,虽然和.text方法print出的内容看似一样,但他们的类不同,分别为<class 'str'> 与<class 'bs4.BeautifulSoup'>
    
    import requests
    from bs4 import BeautifulSoup
    #引入BS库
    res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html') 
    html = res.text
    soup = BeautifulSoup(html,'html.parser') #把网页解析为BeautifulSoup对象,BeautifulSoup中的第0个元素必须是字符串类型,第1个元素是解析器
    

    一个常用的headers

    
    headers={'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
    
    res=requests.get(url,headers=headers)
    
    

    exec的用法
    例子

    x = 10
    expr = """
    z = 30
    sum = x + y + z
    print(sum)
    """
    def func():
        y = 20
        exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
    
    func()
    -----------------输出为----------------
    34
    

    上面这一串相当于

    x = 1
    y = 2
    
    def func():
        y = 3
        z = 4
        
        z = 30
        sum = x + y + z
        print(sum)
    
    func()
    

    设计模式可以参考 https://blog.csdn.net/zhang1281480917/article/details/89530723

    python的Template用法
    1. 字符串替换
    template = "hello %s , your website  is %s " % ("大CC","http://blog.me115.com")
    print(template)
    #等价于
    template = "hello {0} , your website  is {1} ".format("大CC","http://blog.me115.com")
    print(template)
    
    1. 模板方式替换
    from string import Template
    tempTemplate = Template("Hello $name ,your website is $message") # 这种方式替换变量的标志为$
    print(tempTemplate.substitute(name='大CC',message='http://blog.me115.com'))
    # 使用字典方式替换
    from string import Template
    tempTemplate = Template("Hello $name ,your website is $message") # 这种方式替换变量的标志为$
    a = {name:'大CC',message:'http://blog.me115.com'}
    print(tempTemplate.substitute(a))
    

    如果想换个替换方式的标志,比如从$换为!,可以这样

    from string import Template
    class MyTemplate(Template):
        delimiter = "!"
    tempTemplate = MyTemplate("Hello !name ,your website is !message") # 这种方式替换变量的标志为!
    a = {name:'大CC',message:'http://blog.me115.com'}
    print(tempTemplate.substitute(a))
    
    jsonpath的使用
    1. jsonpath取值不需要查看json数据,直接通过..(..就表示全局检索后面跟的属性)
    data2 = jsonpath.jsonpath(json_data, "$..uname")      # 全局搜索uname属性,如果没有返回FALSE
    print(data2)
    
    1. jsonpath是以列表的形式返回匹配到的值
    reprstr区别
    • 重构repr方法后,不管直接输出对象(面向开发者)还是通过print(面向用户),打印的信息都按我们repr方法中定义的格式进行显示
    class Name:
        def __init__(self,name):
            self.name = name
        def __repr__(self):
            return 'Name: %s' % self.name
    
    student = Name('jack')
    student
    print(student)
    ------------输出--------------
    Name: jack
    Name: jack
    
    • 重构str后直接输出对象(面向开发者)显示对象的内存地址,使用print输入对象显示重构后的格式
    class Name:
        def __init__(self,name):
            self.name = name
        def __str__(self):
            return 'Name: %s' % self.name
    
    student = Name('jack')
    student
    print(student)
    -------------------输出-------------------
    <__main__.Name object at 0x0000020910CF0B20>
    Name: jack
    

    相关文章

      网友评论

          本文标题:第一天注册,记录每天学到的小知识

          本文链接:https://www.haomeiwen.com/subject/pkppzqtx.html