zoukankan      html  css  js  c++  java
  • Beautiful Soup学习

    Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

    • Tag

      • print soup.title    #<title>The Dormouse's story</title>
      • 两个重要属性 name和attrs  soup.title.name 输出标签名字 soup.title.attrs 输出标签属性
      • soup.title.string输出标签内部文字
    • NavigableString

    • BeautifulSoup

    • Comment

    http://cuiqingcai.com/1319.html暂时学到这里

        # == find_all()之搜索标签名称 ============ OK
        # result = soup.find_all('dl') # OK
    
        # == find_all()之搜索标签属性 ============ not all OK
        # result = soup.find_all(id='newlist_list_div') # OK
        # result = soup.find_all(href=re.compile('.htm')) # Failed 竟然不支持href搜索,和官方说的不一样
        # result = soup.find_all(name='vacancyid') # Failed 不支持标签的name属性搜索
    
        # == find_all()之按CSS搜索 ============ OK
        # result = soup.find_all('div', class_='clearfix') # OK
        # result = soup.find_all('div', class_=re.compile('newlist_detail')) # OK
        # result = soup.find_all(class_=re.compile('newlist_detail')) # OK
    
        # == find_all()之按内容text搜索 ============ 
        # find_all()加上text参数后,
        # 返回的是字符串!而不是tag!!
        # 类型为:<class 'bs4.element.NavigableString'>
        # result = soup.find_all(text='会计') # OK 内容必须完全相等才算!(不含子标签) 
        # result = soup.find_all(text=u'数据') # OK 内容必须完全相等 无所谓unicode了
        # result = soup.find_all(text=re.compile(u'学历:')) # OK unicode是绝对要!否则不行!
        下面总结了在BeautifulSoup中的语法搜索:
            标签搜索,如:'input' ,搜索所有标签为input的元素
            宽泛路径,如:'body a' ,就是body内所有a元素
            绝对路径,如:'body > div > div > p' ,必须完全符合路径才能搜到
            ID搜索  ,如:'#tag-1' ,搜索id为tag1的标签
            混合搜索,如:'div #tag1', 搜索id为xx的div标签
                'div[class*=newlist_detail] ~ div[class*=newlist_detail]' ,大混合
            属性存在,如:'a[href]' ,搜索所有存在href属性的a标签
            类名搜索,如:'[class=clearfix]' ,找到class名等于clearfix的标签
                '[class^=newlist_detail]' ,找到class名中以"newlist_detail"开头的标签
                '[class$=zwmc]'           ,找到class名中以"zwmc"结尾的标签
                '[class*=clearfix]'       ,找到class名中包含"zwmc"的标签
            兄弟搜索,如:
                '#links ~ .clearfix' ,找到id为links标签的所有class等于"clearfix"的兄弟标签
                '#links + .clearfix' ,找到id为links标签的下一个class等于"clearfix"的兄弟标签
            序列搜索,如:'p nth-of-type(3)' ,这个说白了就是选择第3个p标签
                'p nth-of-type(odd)' 表示奇数的p标签
                'p nth-of-type(even)' 表示偶数的p标签
                'p nth-of-type(n)' 表示所有的p标签
                'p nth-of-type(3n)' 表示3的倍数的p标签
                'p nth-of-type(4n+1)' 表示4的倍数加1的p标签,如第5个、第9个
        '''
        # result = soup.select('dl > p') # OK tag路径搜索
        # result = soup.select('div[class*=newlist_detail] ~ div') # OK 各种混合搜索
        # result = soup.select('[class*=zwmc]') # OK 各种混合搜索
        con = soup.select('div[class^=newlist_detail]')[0]
        result = con.select('[class*=zwmc]')
        # print type(result[0])
     
  • 相关阅读:
    [Swift通天遁地]五、高级扩展-(2)扩展集合类型
    [Swift通天遁地]五、高级扩展-(1)快速检测设备属性:版本、类型、屏幕尺寸
    [Swift]LeetCode266.回文全排列 $ Palindrome Permutation
    [Swift]LeetCode265.粉刷房子 II $ Paint House II
    [Swift]LeetCode264.丑数 II | Ugly Number II
    [Swift通天遁地]四、网络和线程-(15)程序内购功能
    [Swift通天遁地]四、网络和线程-(14)创建一个Socket服务端
    hdu 4888 Redraw Beautiful Drawings(最大流,判环)
    【剑指offer】斐波那契序列与跳台阶
    Asp.NET之对象学习
  • 原文地址:https://www.cnblogs.com/thouger/p/5109230.html
Copyright © 2011-2022 走看看