BeautifulSoup中的select方法

Posted 做梦当财神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BeautifulSoup中的select方法相关的知识,希望对你有一定的参考价值。

在写css时,标签名不加任何修饰类名前加点id名前加 #,我们可以用类似的方法来筛选元素,用到的方法是soup.select(),返回类型是list。

(1).通过标签名查找

print(soup.select(\'title\'))
# [<title>The Dormouse\'s story</title>]

print(soup.select(\'a\'))
# [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

print(soup.select(\'b\'))
# [<b>The Dormouse\'s story</b>]

(2).通过类名查找

print soup.select(\'.sister\')
# [<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>, <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>, <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

(3).通过id名查找

print soup.select(\'#link1\')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

(4).组合查找

组合查找即和写class文件时,标签名与类名、id名进行的组合原理是一样的,例如查找p标签中,id等于link1的内容,二者需要空格分开

print soup.select(\'p #link1\')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

直接子标签查找

print soup.select("head > title")
#[<title>The Dormouse\'s story</title>]

(5).属性查找

查找时还可以加入属性元素,属性需要用中括号括起来,注意属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到。

print soup.select("head > title")
#[<title>The Dormouse\'s story</title>]
 
print soup.select(\'a[href="http://example.com/elsie"]\')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>] 

属性仍然可以与上述查找方式组合,不在同一节点的空格隔开,同一节点的不加空格

print soup.select(\'p a[href="http://example.com/elsie"]\')
#[<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>]

以上是关于BeautifulSoup中的select方法的主要内容,如果未能解决你的问题,请参考以下文章

选择合适的标签传递给 BeautifulSoup 的 select 方法

爬虫:BeautifulSoup--select

BeautifulSoup select方法

python爬虫:BeautifulSoup 使用select方法详解

转python爬虫:BeautifulSoup 使用select方法详解

BeautifulSoup 之 select 总结---1205