十一、 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
Once upon a time there were three little sisters; and their names were
Lacie and
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 = """
职位名称
职位类别
人数
地点
发布时间
"""
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
以上资料内容来源网络,仅供学习交流,侵删请私信我,谢谢。