一、beautifulsoup匹配
BeautifulSoup是Python的一个库,最主要的功能就是从网页匹配我们需要的数据。
BeautifulSoup将html解析为对象进行处理,全部页面转变为字典或者数组,相对于正则表达式的方式,可以大大简化处理过程。
安装:pip3 install beautifulsoup4
Beautifulsoup和xpath的使用结构大同小异
1.beautifulsoup匹配步骤
导入模块:from bs4 import BeautifulSoup
(1)构建beautifulsoup实例
# coding:utf-8
import requests
from bs4 import BeautifulSoup
html = '''
<html>
<head>
<title>test</title>
</head>
<body>
<div>
<ul>
<li name="suner" class="one"><a>suner</a></li>
<li name="wjk" class="two">wjk</li>
<li name="wang" class="three">wang</li>
<li name="karry" class="four">karry</li>
</ul>
</div>
</body>
</html>
'''
soup = BeautifulSoup(html,"lxml")
① 第一个参数是要匹配的内容
② 第二个参数是beautifulsoup要采用的模块
# html.parser Python内置的结构匹配方法,但是效率不如lxml所以不常用
# lxml 使用 lxml模块
# xml 使用 xml模块
# html5lib 该模块可以将内容转换HTML5对象
# 但是我们要想用以上功能就要具备对应模块,比如你用lxml就要安装lxml
(2)查找元素的值
在bs4当中有n多种匹配方法,但是最常用的是两种
▲ find 查找一次
① find查找
|
<li class="one" name="suner"><a>suner</a></li> suner {'class': ['one'], 'name': 'suner'} |
② 通过属性值查找
|
<li class="two" name="wjk">wjk</li> |
③ select查找
|
[<a>suner</a>] |
④ findall 查找所有
|
---------------------- <li class="one" name="suner"><a>suner</a></li> suner {'class': ['one'], 'name': 'suner'} ---------------------- <li class="two" name="wjk">wjk</li> wjk {'class': ['two'], 'name': 'wjk'} ---------------------- <li class="three" name="wang">wang</li> wang {'class': ['three'], 'name': 'wang'} ---------------------- <li class="four" name="karry">karry</li> karry {'class': ['four'], 'name': 'karry'} |
⑤ soup本身返回
|
-------------- <title>test</title> -------------- <head> <title>test</title> </head> -------------- <li class="one" name="suner"><a>suner</a></li> |