步骤:
1、导入bs4库
from bs4 import BeautifulSoup
2、获取soup对象
#html为你获取的网页源代码,将html转化为特定的格式lxml
#为后面提取信息做准备
soup=BeautifulSoup(html,'lxml')
3、利用方法选择器解析
find_all()##查询所有符合条件的节点信息,例如soup.find_all(name=“h4”),查询所有节点名称为h4的节点信息
for ul in soup.find_all(name="ul"):#寻找名为ul的结点
print(ul)
for li in ul.find_all(name="li"):#寻找ul结点下名为li的结点
print(li.string)
细节:find_all()方法中可以结合多个条件进行结点的寻找,例如可以寻找名为div的结点下class为contson的结点,当寻找准确的class结点信息时,要用class_="",不然会报错。
例子:
for content in word.find_all(name="div",class_='contson'):
4、利用css选择器进行解析(更快速)
思想:利用css中的结点层级关系准确找到某种信息的位置,select()方法,div>ul>li意思是寻找层级div下的ul下的li的内容
例子:
for li in soup.select("ul>li"):
print(li.text)
关系:可以利用css选择器中的select()和方法选择器中的find_all()搭配使用,使得数据提取更加简单
例如:
#获取div下的div下的div下的div层的信息
for word in soup.select("div>div>div>div"):
#获取word中结点名为b的文本信息
for title in word.find_all(name='b'):