一、简介
Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.(摘自文档)
二、安装
打开命令行直接执行如下安装命令(要先安装好python)。pip 是一个Python 包管理工具,提供了对 Python 包的查找、下载、安装、卸载的功能,一般默认安装python都附带了这个工具,如果没有请先安装此工具
pip install beautifulsoup4
安装完成后在命令行输入python命令进入python执行环境,执行如下代码(表示引入beautifulsoup4库,注意这里大小写)
from bs4 import BeautifulSoup
回车后若无报错则表示安装成功
三、使用案例
现在我们使用BeautifulSoup从网页源代码中解析出所有博主的姓名和博客地址,并保存为json文件。代码如下
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import re
path=r'C:\Users\syc\Desktop\work\xxxx.html'
htmlfile = open(path, 'r', encoding='utf-8')
htmlhandle = htmlfile.read()
soup = BeautifulSoup(htmlhandle, 'html.parser')
txtName = "dataSource.txt"
f=open(txtName, "a+", encoding='utf8')
t=0
for item in soup.find_all('a', href = re.compile('https://www.xxxxxx.com/[^/]+/$')):
jsonData = r'{"name": "' + item.get_text() + r'","url": "'+ item['href']},'
f.write(jsonData)
t = t + 1
htmlfile.close()
print(t)
f.close()
代码逐行解读
/*2.x版本的py文件一般默认的是ASCII码,如果文件里有中文,运行时会出现乱码,因此,需要把文件编码类型改为utf-8的类型*/
# -*- coding: utf-8 -*-
/*引入安装好的bs4库*/
from bs4 import BeautifulSoup
/*引入re库,这是一个用于字符串匹配的python标准库*/
import re
/*下载好的网页源代码文件路径,r表示字符串按原文输出,无需对字符串内的特殊字符进行转义*/
path=r'C:\Users\syc\Desktop\work\xxxx.html'
/*open() 函数用于打开一个文件,创建一个 file 对象,此处r表示用只读方式打开*/
htmlfile = open(path, 'r', encoding='utf-8')
/*获取文件全部字节流*/
htmlhandle = htmlfile.read()
/*创建一个 BeautifulSoup 对象,指定解析器为html.parser*/
soup = BeautifulSoup(htmlhandle, 'html.parser')
txtName = "dataSource.txt"
/*a+表示打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写*/
f=open(txtName, "a+", encoding='utf8')
t=0
/*寻找所有href值符合正则匹配的a节点,关于这里的参数可参考文档,有更多参数和方法帮助解析网页*/
for item in soup.find_all('a', href = re.compile('https://www.xxxxxx.com/[^/]+/$')):
/*item.get_text()表示获取节点中的文本值,item['href']表示获取节点中href的值*/
jsonData = r'{"name": "' + item.get_text() + r'","url": "'+ item['href']}'
f.write(jsonData)
t = t + 1
htmlfile.close()
print(t)
f.close()