第三章 数据解析(十一) 2019-12-21

十一、 bs4 – select方法


搜索文档树:

有时候使用css选择器的方式可以更加方便。使用css选择器的语法,应该使用select方法。以下列出几种常用的css选择器方法:


2、select方法:

使用以上方法可以方便找出元素。但有时候使用css选择器的方式可以更加方便。使用css选择器的语法,应该使用select方法。以下列出几种常用css选择器方法:


(1)通过标签名查找:

print(soup.select(‘a’))

 

(2)通过类名查找:

通过类名,则应该在类前面加一个.,比如要差找class=sister的标签,示例代码如下:

print(soup.select(‘.sister’))

 

(3)通过id查找:

通过id查找,应该在id的名字前面加一个#号。示例代码如下:

print(soup.select(“#link1”))

 

(4)组合查找:

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

print(soup.select(“p #link1”))

直接子标签查找,则使用>分隔:

print(soup.select(“head>title”))

 

(5)通过属性查找:

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

print(soup.select(‘a[href=”http://example.com/elsie”]’))

 

(6)获取内容:

以上的select方法返回的结果都是列表形式,可以遍历输出,然后用get_text()方法来获取它的内容。

soup = BeautifulSoup(html, ‘lxml’)

print(type(soup.select(‘title’)))

print(soup.select(‘title’)[0].get_text())

for title in soup.select(‘title’):

print(title.get_text())

 

示例代码:


from bs4 import BeautifulSoup

html = """

The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names were

Elsie,

Lacie and

Tillie;

and they lived at the bottom of a well.

...

"""

soup = BeautifulSoup(html, 'lxml')

 

# (1)通过标签名查找:

# print(soup.select('a'))

 

# (2)通过类名查找:

# print(soup.select('.sister'))

 

# (3)通过id查找:

# print(soup.select('#link1'))   

 # 通过css选择器语法查找


# (4)组合查找:

# 方法1

# print(soup.select('p #link1'))

# 方法2

# print(soup.select('head> title'))

 

# (5)通过属性查找:

# print(soup.select('a[href="http://example.com/elsie"]'))

 

# (6)获取内容:

# print(soup.select('title')[0].get_text())

# select输出的是列表,get无法直接获取,所以要加下标来取值,只有一个内容所以用【0】


练习题


from bs4 import BeautifulSoup

html = """

   

       

           

           

           

           

           

       

       

           

           

           

           

       

       

           

           

           

           

       

       

           

           

           

           

       

       

           

           

           

           

       

   

职位名称 职位类别 人数 地点 发布时间

           

技术类 1 深圳 2017-11-25

           

技术类 1 深圳 2017-11-25

           

技术类 1 深圳 2017-11-24

           

技术类 1 深圳 2017-11-24

"""

 

soup = BeautifulSoup(html, 'lxml')

 

# 1、获取所有st标签

# trs = soup.select('tr')

# print(trs)

 

# 2、获取第二个tr标签

# tr = soup.select('tr')[1]

# print(tr)

 

# 3、获取所有class等于even的tr标签

# tr = soup.select('.even')

# print('tr')

# 上面的方法找到的不一定是tr标签

# tr = soup.select('tr[class="even"]')

# print(tr)

 

# 4、获取所有a标签的href属性

# alist = soup.select('a')

# for a in alist:

#    href = a['href']

#    print(href)

 

# 5、获取所有职位信息(纯文本)

trs = soup.select('tr')

for tr in trs:

    info = list(tr.stripped_strings)

    print(info)



上一篇文章 第三章 数据解析(十) 2019-12-20 地址: 

https://www.jianshu.com/p/a06d8e8b0393

下一篇文章 第三章 数据解析(十二) 2019-12-22 地址:

https://www.jianshu.com/p/a70e17e2e7c9



以上资料内容来源网络,仅供学习交流,侵删请私信我,谢谢。

你可能感兴趣的:(第三章 数据解析(十一) 2019-12-21)