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

beautiful soup css选择器-ag真人游戏

阅读 : 71

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

学习目标

  1. 掌握beautiful soup的css选择器的基本使用
  2. 掌握beautiful soup的css选择器的高级使用

1. beautiful soup css选择器总览

1. 了解beautiful soup的css选择器

使用css选择器,只需要调用select()方法,并结合css选择器语法就可以定位元素的位置。

1.1 获取元素

  • 格式:soup.select()

    soup为beautiful soup4对象

    select()中书写css选择器语法

1.2 css选择器语法

本部分内容在前端部分将结果,这里不再详细赘述,我们一起来简单复习下

(1) id选择器

id选择器需要使用#来定位元素,例如:获取第一个ul节点#list-1

  • foo
  • bar
  • ]ay
  • foo
  • bar

(2) 类选择器

类选择器需要使用.来定位元素,例如:获取所有的ul.list‘«

  • foo
  • bar
  • ]ay
  • foo
  • bar

(3) 标签选择器

标签选择器需要使用标签来进行选择,例如:获取h4 h4

hello

(4) 混合使用

获取第一个ul中的li节点,.panel-body #list-1 li

  • foo
  • bar
  • ]ay
  • foo
  • bar

1.2 示例

  1. 获取class="panel-heading"div
  2. 获取所有的li节点
  3. 获取第二个ulli节点
  4. 获取第二个ul节点
html = '''

hello

  • foo
  • bar
  • ]ay
  • foo
  • bar
''' from bs4 import beautifulsoup soup = beautifulsoup(html, 'lxml') print(soup.select('.panel .panel-heading')) print(soup.select('ul li')) print(soup.select('#list-2 .element')) print(type(soup.select('ul')[0]))

输出结果如下:

[

hello

] [
  • foo
  • ,
  • bar
  • ,
  • jay
  • ,
  • foo
  • ,
  • bar
  • ] [
  • foo
  • ,
  • bar
  • ]

    2. css选择器的高级用法

    2.1 嵌套选择

    这里所指的嵌套选择和我们之前所学的嵌套选择是一样。先选择一个节点,再获取这个节点下面的子节点。

    html = '''
    

    hello

    • foo
    • bar
    • ]ay
    • foo
    • bar
    ''' from bs4 import beautifulsoup soup = beautifulsoup(html, 'lxml') for ul in soup.select('ul'): print(type(ul)) print(ul.select('li'))

    输出结果:

    
    [
  • foo
  • ,
  • bar
  • ,
  • jay
  • ] [
  • foo
  • ,
  • bar
  • ]

    2.2 获取属性

    css选择器获取属性的方法和节点选择器获取属性的方法一样,使用attrs属性来获取。

    from bs4 import beautifulsoup
    html = '''
    

    hello

    • foo
    • bar
    • ]ay
    • foo
    • bar
    ''' soup = beautifulsoup(html, 'lxml') print(soup.select("#list-2 li")) for li in soup.select("#list-2 li"): print(type(li)) print(li.attrs) print(li.attrs['class'])

    输出结果

    [
  • foo
  • ,
  • bar
  • ] { 'class': ['element']} ['element'] { 'class': ['element']} ['element']

    2.3 获取文本

    css选择器获取文本的方法和节点选择器获取文本的方法一样,使用stringstrings属性来获取。

    from bs4 import beautifulsoup
    html = '''
    

    hello

    • foo
    • bar
    • ]ay
    • foo
    • bar
    ''' soup = beautifulsoup(html, 'lxml') print(soup.select("#list-2 li")) for li in soup.select("#list-2 li"): print(type(li)) print(li.string) print(soup.select("#list-2")) for ul in soup.select("#list-2"): print(type(ul)) print(ul.strings) print(list(ul.strings))

    输出结果

    [
  • foo
  • ,
  • bar
  • ] foo bar [
    • foo
    • bar
    ] ['\n', ' foo', '\n', 'bar', '\n']

    3. 总结

    1. 嵌套选择,之所以能够进行嵌套选择是因为它依然是一个tag对象
    2. 获取属性,和节点选择器一样,使用attrs属性来获取属性值
    3. 获取文本,和节点选择器一样,使用stringstrings属性来获取文本信息
    网站地图