当我们用requests库或是selenium库获取到我们的文本信息之后,使用BeautifulSoup库来进行信息筛选比正则表达式更为严谨。
接下来我直接介绍文本信息的处理,需要了解一丢丢CSS筛选器的知识。
首先先来个实例,按照这个实例来讲解
from bs4 import BeautifulSoup
import requests
import string
# 储存文本的文件开辟
file = open('第一章', 'w', encoding='utf-8')
# URL及头伪装准备
URL = 'http://www.ybdu.co/0/3/186.html'
header = {
'User-Agent':
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
}
r = {}
soup = {}
# 获取文本信息
def getInfor():
global r
r = requests.get(URL, headers=header)
if r.status_code == 200:
# 这里使用'utf-8'中文会乱码,看了网页原码之后,他的chaset为gbk,故转码为gbk
r.encoding = 'gbk'
else:
print('信息获取失败')
# 进行文本信息的处理和筛选
def analyzeInfor():
global soup
# 这里使用lxml来解析需要pip install lxml
soup = BeautifulSoup(r.text, 'lxml')
# 使用了作者人为最通用的一个方法,find_all
content = soup.find_all(class_='panel-body content-body content-ext')
for i in content:
# 对文本进行细微处理,删除一些符号
i = str(i).replace('<br/>\n', '')
i = str(i).replace('<br/>', '')
# 写入文件
file.write(i)
getInfor()
analyzeInfor()
1.首先安装两个库
pip install beautifulsoup4
pip install lxml
解析器说明
2.获取文本后,用BeautifulSoup来做”汤“
soup = BeautifulSoup(r.text, 'lxml')
3.品汤
这个品汤的方式多种多样
这些当中最好用的莫过于最后两个
content =
soup.find_all(class_='panel-body content-body content-ext')
后面那个类名是html中标签的属性,这里网页中文字就包含在这个类里面,故获取其内容
然后写入到文件中
for i in content:
file.write(str(i))
当然就这样写,不免有些瑕疵
故进行简单处理
for i in content:
# 对文本进行细微处理,删除一些符号
i = str(i).replace('<br/>\n', '')
i = str(i).replace('<br/>', '')
# 写入文件
file.write(i)
最后结果
这样就好多了
以上就是作者在学习BeautifulSoup的过程中所获,上面截图截取了官方文档的介绍,附上链接
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
以上文章若有错误请大家帮忙斧正,望多包涵。
之后我将会讲解selenium库基于浏览器驱动的爬虫来爬取斗鱼主播热度