菜鸟笔记
提升您的技术认知

Beautiful Soup提取信息的方法

阅读 : 29

Beautiful Soup是Python的一个网页解析库,处理快捷; 支持多种解析器,功能强大。教程细致讲解Beautiful Soup的深入使用、节点选择器、CSS选择器、Beautiful Soup4的方法选择器等重要知识点,是学好爬虫的基础课程。

节点选择器——提取信息的方法

学习目标

  1. 掌握节点选择器提取信息的方法

1. 提取信息的方法

通过选择元素的方式,我们获取到了标签的全部信息,如果我们想要提取标签中的信息,可以使用如下方式:

(1) 获取节点名称

  • 格式:soup.tag.name

  • 返回值:字符串

  • 示例:

    html = '''
      	<div class="panel">
      	    <div class="panel-heading">
      	        <h4>Hello</h4>
      	    </div>
      	    
      	    <div class="panel-body">
      	        <ul class="list" id="list-1">
      	            <li class="element"> Foo</li>
      	            <li class="element">Bar</li>
      	            <li class="element">]ay</li>
      	        </ul>
      	        
      	        <ul class="list list-small" id="list-2">
      	            <li class="element"> Foo</li>
      	            <li class="element">Bar</li>
      	        </ul>
      	    </div>
      	</div>
      	'''
        
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(html, 'lxml')
    # 获取a标签的名字
    result = soup.a.name
    print(result)
    # 输出结果:
    a
    

(2) 获取节点属性值

  • 格式:soup.tag.attrs

  • 返回值:字典

  • 示例:

    html = '''
    	<div class="panel">
    	    <div class="panel-heading">
    	        <h4>Hello</h4>
    	    </div>
    	    
    	    <div class="panel-body">
    	        <ul class="list" id="list-1">
    	            <li class="element"> Foo</li>
    	            <li class="element">Bar</li>
    	            <li class="element">]ay</li>
    	        </ul>
    	        
    	        <ul class="list list-small" id="list-2">
    	            <li class="element"> Foo</li>
    	            <li class="element">Bar</li>
    	        </ul>
    	    </div>
    	</div>
    	'''
      
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(html, 'lxml')
      
    # 获取a标签的属性
    result = soup.a.attrs
      
    print(result)
    # 输出结构
    {
        'href': 'http://example.com/elsie', 'class': ['sister'], 'id': 'link1'}
    

(3) 获取节点文本内容

  • 格式:soup.tag.string

  • 返回值:字符串

  • 示例:

    html = '''
      	<div class="panel">
      	    <div class="panel-heading">
      	        <h4>Hello</h4>
      	    </div>
      	    
      	    <div class="panel-body">
      	        <ul class="list" id="list-1">
      	            <li class="element"> Foo</li>
      	            <li class="element">Bar</li>
      	            <li class="element">]ay</li>
      	        </ul>
      	        
      	        <ul class="list list-small" id="list-2">
      	            <li class="element"> Foo</li>
      	            <li class="element">Bar</li>
      	        </ul>
      	    </div>
      	</div>
      	'''
        
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(html, 'lxml')
    # 获取a标签的内容
    result = soup.a.string
    print(result)
    # 输出结构
    Elsie
    

2. 总结

节点选择器提取信息的方法:

  • soup.tag.name
    • 用来提取节点名称
  • soup.tag.attrs
    • 用来提取属性
  • soup.tag.string
    • 用来提取内容