【Python爬虫】BS4(BeautifulSoup)常用属性及函数
文章目录
以百度首页为例,假设前面的代码有
from bs4 import BeautifulSoup
import requests
url = 'https://www.baidu.com/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62'
}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'lxml')
一、获取标签
1. soup.tagName
返回找到的第一个tagName标签(与函数
find()
相同)
# 返回找到的第一个<a>标签
soup.a
2. soup.find(tagName)
返回找到的第一个tagName标签(与
.tagName
属性相同)
# 返回找到的第一个<a>标签
soup.find('a')
2.1 soup.find(tagName, class_/id/attr)
根据
class_
或id
或attr
(其他属性,比如type
)寻找标签,如果有多个,则返回找到的第一个标签
# 返回找到的第一个属性type='text/javascript'的<script>标签
soup.find('script', type='text/javascript')
3. soup.find_all(tagName)
返回包含所有tagName标签的列表
# 返回包含所有<input>标签的列表
print(soup.find_all('input'))
》输出 》
4. soup.select(css_selector)
根据CSS选择器返回包含所有得到的标签的列表
CSS选择器:https://www.runoob.com/cssref/css-selectors.html
# 选择id为s_index_off_css的标签,返回列表
print(soup.select('#s_index_off_css'))
》输出 》
二、获取文本数据
假设tag
指由soup
获取到的某标签
1. tag.text和tag.get_text()
获取标签下的所有文本数据(包括所有子标签下的子标签下的…)
# 获取class="s_tab"的第一个标签
tag = soup.select('.s_tab')[0]
print(tag.text)
print(tag.get_text())
》输出 》
网页资讯视频图片知道文库贴吧地图采购更多
网页资讯视频图片知道文库贴吧地图采购更多
2. tag.string
只返回标签的直系文本数据
# 获取class="s_tab"的第一个标签
tag = soup.select('.s_tab')[0]
print(tag.string)
由上图可知,该
没有直系文本数据
》输出 》
None
三、获取属性值
假设tag
指由soup
获取到的某标签
tag[attr]
获取某一标签的某属性的值
# 选择id="s_tab"标签下的<div>标签下的第一个<a>标签
tag = soup.select('#s_tab > div > a')[0]
print(tag['href'])
》输出 》
https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news