美文网首页惠大人工智能
零零杂杂的学习记录

零零杂杂的学习记录

作者: modao233 | 来源:发表于2019-08-20 10:40 被阅读2次

    使用re正则表达式匹配时的错误

    File “C:\Python35\lib\re.py”, line 213, in findall
    
    return _compile(pattern, flags).findall(string)
    
    TypeError: cannot use a string pattern on a bytes-like object
    

    出错的主要原因是因为:

    TypeError: can’t use a string pattern on a bytes-like object.
    
    html用decode(‘utf-8’)进行解码,由bytes变成string。
    
    py3的urlopen返回的不是string是bytes。
    
    

    Python中append与extend的用法区别

    append整体添加

    l1 = [1, 2, 3, 4, 5, ]
    l1.append([6, 7, 8, 9, ])
    # l1.append(*[6, 7, 8, 9, ]) #会报错
    print(l1)
    l1.extend([6, 7, 8, 9])
    print(l1)
    

    只能接受一个参数,如果出现打散的情况,还是会被识别成多个参数,因为程序执行执行是从左到右,从上倒下执行的,当出现时这个列表已经被打散了,因而,会被程序识别成被传入了多个参数

    extend逐个添加

    l1 = [1, 2, 3, 4, 5, ]
    l1.extend([6, 7, 8, 9])
    print(l1)
    l1.extend('abc')
    print(l1)
    l1.extend('a') # 也是可迭代对象
    print(l1)
    # l1.extend(1) # 报错,不可迭代
    print(l1)
    
    # 输出
    
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c']
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'a']
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'a']
    

    extend在执行添加的时候,被传入的参数必须是可迭代对象,这样通过迭代就解决了同时传入多个参数的问题,如果你还不知道可迭代对象,放心,你很快就会知道的

    BeautifulSoup中的select方法

    在写css时,标签名不加任何修饰,类名前加点,id名前加 #,我们可以用类似的方法来筛选元素,用到的方法是soup.select(),返回类型是list。

    (1).通过标签名查找

    print(soup.select('title'))
    # [<title>The Dormouse's story</title>]
    
    print(soup.select('a'))
    # [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
    
    print(soup.select('b'))
    # [<b>The Dormouse's story</b>]
    

    (2).通过类名查找

    
    
    print soup.select('.sister')
    # [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
    
    
    

    (3).通过id名查找

    
    
    print soup.select('#link1')
    #[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]
    
    
    

    (4).组合查找

    组合查找即和写class文件时,标签名与类名、id名进行的组合原理是一样的,例如查找p标签中,id等于link1的内容,二者需要空格分开。

    print soup.select('p #link1')
    #[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]
    
    

    直接子标签查找

    print soup.select("head > title")
    #[<title>The Dormouse's story</title>]
    

    (5).属性查找

    查找时还可以加入属性元素,属性需要用中括号括起来,注意属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到。

    print soup.select("head > title")
    #[<title>The Dormouse's story</title>]
     
    print soup.select('a[href="http://example.com/elsie"]')
    #[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>] 
    

    属性仍然可以与上述查找方式组合,不在同一节点的空格隔开,同一节点的不加空格。

    print soup.select('p a[href="http://example.com/elsie"]')
    #[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]
    

    selenium+python自动化测试之页面元素定位

    通过xpath相对路径查找元素方法

    selenium 操作 获取动态页面数据

    Python之excel文件追加内容

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    from xlrd import open_workbook
    from xlutils.copy import copy
    
    r_xls = open_workbook("test.xls") # 读取excel文件
    row = r_xls.sheets()[0].nrows # 获取已有的行数
    excel = copy(r_xls) # 将xlrd的对象转化为xlwt的对象
    table = excel.get_sheet(0) # 获取要操作的sheet
    
    #对excel表追加一行内容
    table.write(row, 0, '内容1') #括号内分别为行数、列数、内容
    table.write(row, 1, '内容2')
    table.write(row, 2, '内容3')
    
    excel.save("test.xls") # 保存并覆盖文件
    

    相关文章

      网友评论

        本文标题:零零杂杂的学习记录

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