Python爬虫Day_8——BeautifulSoup续

CSS选择器

  1. 根据标签的名字选择,示例代码如下:

    1
    2
    3
    p{
    background-color:pink;
    }
  2. 根据类名选择,name要在类的前面加一个.,示例代码如下:

    1
    2
    3
    .line{
    background-color:pink;
    }
  3. 根据id名字选择,那么要在id的前面加一个#号,示例代码如下:

    1
    2
    3
    #box{
    background-color:pink;
    }
  4. 查找子孙元素,要在子孙元素中间有一个空格,示例代码如下:

    1
    2
    3
    #box p{
    background-color:pink;
    }
  5. 查找直接子元素,要在父子元素之间加一个>,示例代码如下:

    1
    2
    3
    #box > p{
    background-color:pink;
    }
  6. 根据属性的名字进行查找,应该先写标签名字,然后再在中括号中写属性的值,示例代码如下:

    1
    2
    3
    input[name='username']{
    background-color:pink;
    }
  7. 在根据类名或者id进行查找的时候,如果还要根据标签名进行过滤,可以在类的前面或者id的前面加上标签名字,示例代码如下:

    1
    2
    3
    4
    5
    6
    div#line{
    background-color:pink;
    }
    div.line{
    background-color:pink;
    }

BeautifulSoup中使用css选择器:

BeautifulSoup中,要使用css选择器,那么应该使用Soup.select()方法,应该传递一个css选择器的字符串给select()方法。

常见的四中对象:

  1. Tag:BeautifulSoup中所有的标签都是Tag类型,并且BeautifulSoup的对象其实本质上也是一个Tag类型。所以其实一些方法如find、find_all并不是BeautifulSoup的,而是Tag的。
  2. NavigableString:继承自python中的str,用起来就跟使用python的str是一样的。
  3. BeautifulSoup:继承自Tag。用来生成BeautifulSoup树的。对于一些查找方法,比如find,select这些,其实还是Tag的。
  4. Comment:这个也没什么好说的,就是继承自NavigableString。

contents和children:

返回某个标签下的直接子元素,其中也包括字符串。他们两的区别是:contents返回来的是一个列表,children返回的是一个迭代器。�器。