@兰博怎么玩儿
本文介绍:BeautifulSoup解析库和一些基本的文件操作,最后展示一个实例:利用BeautifulSoup解析库,爬取起点中文网(https://www.qidian.com/rank/yuepiao?style=2)中“原创风云榜”榜单数据。
1、BeautifulSoup的使用
1.1 解析源代码
在笔记1中,我们利用requests库请求的网页,可以利用BeautifulSoup库解析成Soup文档,以便过滤提取数据。
soup = BeautifulSoup(wb_data.text,'lxml')
其中,wb_data.text是取源码文本,‘lxml’是使用的解析器。
除了lxml解析器,还可以使用如下的解析器:
解析器 | 使用方法 | 优点 | 缺点 |
---|---|---|---|
Python标准库 | BeautifulSoup(wb_data.text,‘html.parser’) | Python内置的标准库,速度中等,文档容错能力强 | Python旧版本容错能力差 |
lxml HTML解析库 | BeautifulSoup(wb_data.text,‘lxml’) | 速度快,文档容错能力强 | 需要安装C语言库 |
lxml XML解析库 | BeautifulSoup(wb_data.text,‘xml’) | 速度快,唯一支持XML的解析器 | 需要安装C语言库 |
html5llib解析器 | BeautifulSoup(wb_data.text,‘html5llib’) | 容错性最好,以浏览器方式解析文档,生成HTML5格式的文档 | 速度慢,不依赖外部扩展 |
产生Soup文档时,需要’UTF-8’格式编码,因此若编译时报错:”UnicodeEncodeError: ‘XXX’ codec can’t encode character ‘\xbb’ in position 8530: illegal multibyte sequence“,可增加编码参数:
soup = BeautifulSoup(wb_data.text,'lxml',from_encoding='utf-8')
1.2 HTML基础
HTML也就是前面说的网页源代码,它与CSS(Cascading Style Sheets,层叠样式表)、JavaScript一起构成了网页。
HTML通过一层一层的嵌套表示网页各个部分的对应关系,其基本元素是成对出现的标签,标签中还可能有n个属性:
<标签名 属性1=“属性1的值” 属性2=“属性2的值”...>显示在网页上的文本</标签名>
下面是一段HTML代码示例:
<html>
<head>
<title>网页名</title>
</head>
<body>
<div class="aaa" href="bbb">
<ul>
<li