4. bs4

作者: 学飞的小鸡 | 来源:发表于2018-10-31 20:51 被阅读0次
    
    from bs4 import BeautifulSoup
    
    # 1. 把html字符串初始化成一个BeautifulSoup对象
    
    soup = BeautifulSoup(open('./soup_test.html', encoding='utf-8'), 'lxml')
    
    # 参数1 , 一个html字符串  参数2, 是一个解析器(bs4没有自己的解析器,如果加入其它解析器,可以提高其解析效率)
    
    # print(soup)
    
    # 1. 根据标签名来查找对象,这种方法返回的是这类标签的第一个
    print(soup.title)
    print(soup.li)
    
    # 2. 获取标签中的内容
    obj = soup.a
    print(obj.string)  # 获取页面中的字符串,包括被注释掉的,如果string有多个子节点,无法获取
    
    # 解决方法
    print(obj.get_text())  # 获取当前标签中的字符串(包括所有的后代标签中的字符串,无法获取注释掉的内容)
    
    # 3.获取属性
    print(obj.get('title'))   # 用get方法获取
    print(obj['href']) # 字典值获取
    print(obj.attrs)  # 获取标签的所有属性(得到一个字典)
    print(obj.name)  # 获取标签的名字
    
    # 4. 获取子节点
    print(soup.body.children)  # 迭代器对象 <list_iterator object at 0x000001E2566A7B70>
    # 获取直接子节点
    for child in soup.body.children:
        print('----------')
        print(child)
    # print(soup.body.descendants)  # 生成器  <generator object descendants at 0x0000020CD15999E8>
    # # 获取当前节点的所有后代节点
    # for i in soup.body.descendants:
    #     print('########')
    #     print(i)
    
    
    # 5. 根据相关函数来查找节点
    # 1> find函数, 返回一个对象
    print('----')
    print(soup.find('a'))  # 寻找第一个a标签
    print(soup.find('a',id = 'hong'))  #
    
    # 2> find_all函数,返回的是一个列表
    print(soup.find_all('a'))
    print(soup.find_all(['a', 'span', 'li']))
    print(soup.find_all(['a', 'span', 'li'], class_='taohua'))
    print(soup.find_all(['a', 'span', 'li'], limit=3))
    
    # 3> select 函数, 根据css选择器来查找
    print(soup.select('.taohua'))
    print(soup.select('.tang ul li'))  # 派生选择器
    print(soup.select('a#hong'))  # 组合选择器 查找a中id等于hong
    print(soup.select('[name="he"]'))  # 属性选择器
    

    相关文章

      网友评论

          本文标题:4. bs4

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