• python3 bs4库


    #BeautifulSoup
    #python 标准库    BeautifulSoup (markup,"html.parser")
    #lxml HTML 解析器 BeautifulSoup (markup,"lxml")
    #lxml XML 解析器 BeautifulSoup (markup,"xml")
    #html5lib  BeautifulSoup (markup,"html5lib")
    from bs4 import BeautifulSoup
    html='''<html>
    <head>
    <title>This is test</title>
    </head>
    <body>
    <p class='title' name='jmc'><b>the is jmc</b></p>
        <p class='story'>this is once test</p>
        <p name=''gomini></p>
        <a href="http://jmc.com" class='sister' id='test-1'></a>
        <a href="http://jmc.com" class='sister' id='test-2'></a>
    <div class="panel_heading">
        <div class="panel_heading">
            <h4>hello</h4>
        <div>
        <div class="panel-body>
            <ul class="list" id="once">
                <li class="element">jmc</li>
                <li class="element">gomin</li>
                <li class="element">angy</li>
            </ul>
            <ul class="list2" id="two">
                <li class="element">jmc1</li>
                <li class="element">gomini2</li>
                <li class="element">jangy3</li>
            </ul>
        </div>
    </div>
    
        '''
    
    soup=BeautifulSoup(html,'lxml')
    print (soup.prettify())#格式化代码,自动补全  处理。
    print (soup.title.string)#打印出title
    
    #标签选择器
    #选择元素
    print (soup.title)
    print (soup.head)
    print (soup.p)
    #获取名称
    print (soup.title.name) #获取title 的名称
    print (soup.p.attrs['name']) #打印出p标签的name 值
    print (soup.p['name'])#打印出p标签的name 值
    #获取内容
    print (soup.p.string)
    print (soup.p.text)
    #嵌套选择
    print (soup.head.title.string)#head 中的title 文本
    #子节点和子孙节点
    print (soup.p.contents)#获取p标签的所有子节点
    print (soup.p.children)
    for i,child in enumerate(soup.p.children):
        print (i,child)   #i,child 接收索引和内容,迭代器 循环打出
    print (soup.p.descendants)
    for i,child in enumerate(soup.p.descendants):
        print (i,child)  #获取子孙节点,i,child 接收索引和内容
    
    #父节点和祖先节点
    print (soup.p.parent)#获取父节点
    print (list(enumerate(soup.a.parents)))#获取祖先节点所有p的节点
    #兄弟节点
    print (list(enumerate(soup.p.next_siblings))) #p标签后面的兄弟节点,同一个父节点中的
    print (list(enumerate(soup.p.previous_siblings)))#p标签前面的兄弟节点
    
    #标准选择器
    #find_all(name,attrs,recursive,text,**kwatgs)
    
    print (soup.find_all('ul')) #find_all 查找所有,输出第一个ul标签
    print (type(soup.find_all('ul')[0]))
    for ul in soup.find_all('ul'):
        print (ul.find_all('li'))#从ul中打印li标签
    
    
    #attrs
    print (soup.find_all(attrs={"id":"two"}))
    print (soup.find_all(id="two"))
    print (soup.find_all(class_="element"))#class 要加_
    #text
    print (soup.find_all(text='jmc'))
    
    
    #find 和find_all用法一样。
    #find 返回单个元素,find_all返回所有元素
    print (soup.find(text='jmc'))
    
    
    find_parents() #返回所有的祖先节点
    find_parent()    #返回所有的父节点
    find_next_siblings() #返回后面所有的兄弟节点
    find_next_sibling()#返回后面第一个兄弟节点
    find_previous_siblings()#返回前面所有的兄弟节点
    find_previous_sibling()#返回前面第一个兄弟节点
    find_all_next()#返回节点后所有符合的节点
    find_next()#返回第一个符合的节点
    
    
    
    #CSS选择器
    print (soup.select('ul li'))
    for ul in soup.select('ul'):
        print(ul.select('li'))
    
    for ul in soup.select('ul'):
        print (ul['id'])
    print (soup.select('ul'))
    print (soup.select(ul['id']))
    #获取内容
    for ul in soup.select('li'):
        print (ul.get_text())
  • 相关阅读:
    Spring Annotation注解进行aop的学习
    使用ADO读取SQL数据库
    GetInventTable组装SQL语句使用通配符
    获取当前用户所属的所有仓位,DictRelation,
    UnitConvert,单位换算,单位转换
    数字货币书写转英文货币书写
    导出xml
    存储过程IN参数疑难问题解决方法
    TempTable 临时表
    多栏报表 多列报表
  • 原文地址:https://www.cnblogs.com/pangya/p/10670250.html
Copyright © 2020-2023  润新知