zoukankan      html  css  js  c++  java
  • 16 select和css选择器(提取元素详解)

      # 1、获取所有tr标签

     1 from bs4 import BeautifulSoup
     2 text = """
     3 <table class="tablelist" cellpadding="0" cellspacing="0">
     4     <tbody>
     5         <tr class="h">
     6             <td class="l" width="374">职位名称</td>
     7             <td>职位类别</td>
     8             <td>人数</td>
     9             <td>地点</td>
    10             <td>发布时间</td>
    11         </tr>
    12         <tr class="even">
    13             <td class="l square"><a target="blank"
    14 href="https://www.baidu.com/">研发工程师(上海1)</a></td>
    15             <td>技术类</td>
    16             <td>1</td>
    17             <td>上海</td>
    18             <td>2020-1-1</td>
    19         </tr>
    20         <tr class="odd">
    21             <td class="l square"><a target="blank"
    22 href="https://www.baidu.com/">工程师(北京2)</a></td>
    23             <td>技术类</td>
    24             <td>2</td>
    25             <td>北京</td>
    26             <td>2020-2-2</td>
    27         </tr>
    28         <tr class="even">
    29             <td class="l square"><a target="blank"
    30 href="https://www.baidu.com/">工程师(上饶3)</a></td>
    31             <td>管理类</td>
    32             <td>3</td>
    33             <td>上饶</td>
    34             <td>2020-3-3</td>
    35         </tr>
    36         <tr class="odd">
    37             <td class="l square"><a id="test" class="test" target="blank"
    38 href="https://www.baidu.com/">工程师(上饶3)</a></td>
    39             <td>管理类</td>
    40             <td>3</td>
    41             <td>上饶</td>
    42             <td>2020-3-3</td>
    43         </tr>
    44     </tbody>
    45 </table>
    46 """
    47 
    48 soup = BeautifulSoup(text, 'lxml')
    49 # 1、获取所有tr标签
    50 trs = soup.select('tr')
    51 for tr in trs:
    52     print(tr)
    # 2、获取第2个tr标签
    1 # 2、获取第2个tr标签
    2 tr = soup.select('tr')[1]
    3 print(tr)
    # 3、获取所有class等于even的tr标签
    1 # 3、获取所有class等于even的tr标签
    2 # 方法一:
    3 trs1 = soup.select('tr.even')
    4 for tr1 in tr1:
    5     print(tr1)
    6 # 方法二:
    7 trs2 = soup.select('tr[class="even"]')
    8 for tr1 in trs2:
    9     print(tr1)
    # 4_1、将所有id等于test,class也等于test的所有a标签提取出
    selcet&CSS无法实现
    # 4_2、获取所有a标签下href属性的值  bs4中的select()功能与CSS无关
    1 # 4_2、获取所有a标签下href属性的值
    2 ahs = soup.select('a')
    3 for ah in ahs:
    4     # 方法一:通过下标操作
    5     href1 = ah['href']
    6     print('href1={}'.format(href1))
    7     # 方法二:通过属性操作
    8     href2 = ah.attrs['href']
    9     print('href2={}'.format(href2))
    # 5、获取所有的职位信息(纯文本)  bs4中的select()功能与CSS无关
     1 # 5、获取所有的职位信息(纯文本)
     2 trs = soup.select('tr')[1:]     # 从第二个tr开始获取
     3 movies = []
     4 for tr in trs:
     5     movie = {}
     6     # 获取tr下所有非标签字符
     7     # infos= list(tr.strings)
     8     # 获取tr下所有非标签&非空白字符
     9     infos = list(tr.stripped_strings)
    10     #print(infos)
    11     movie['title'] = infos[0]
    12     movie['category'] = infos[1]
    13     movie['num'] = infos[2]
    14     movie['city'] = infos[3]
    15     movie['time'] = infos[4]
    16     movies.append(movie)
    17 
    18 print(movies)
    
    
  • 相关阅读:
    CSS3实现0.5px的边框
    解决nvm导致终端启动慢的问题
    解决zsh: command not found: gitk,将git路径/usr/bin/git修改为/usr/local/bin/git
    MAC之zsh终端使用nvm安装指定版本node
    解决npm包node-sass下载失败问题
    forEach中使用async await的问题
    使用module-alias别名简化CommonJS的require路径
    关系型数据库的ACID
    Node.js ORM 框架对比
    mysql字符集 utf8 和utf8mb4 的区别
  • 原文地址:https://www.cnblogs.com/sruzzg/p/13093582.html
Copyright © 2011-2022 走看看