Python爬虫笔记之BeautifulSoup查找


前言

记录使用BeautifulSoup查找元素的常用方法。

安装

pip install beautifulsoup4

解析页面

from bs4 import BeautifulSoup
soup=BeautifulSoup(r.text,"html.parse")
#print(soup.prettify()) #格式化输出

标签属性

soup.<tag> #标签
soup.<tag>.name #标签名
soup.<tag>.attrs #标签属性,字典形式
soup.<tag>.string #标签字符串

遍历标签树

#下行遍历
soup.<tag>.contents #子节点列表,可以索引
soup.<tag>.children #用于遍历子节点,不可索引
soup.<tag>.descendant #用于遍历子孙节点
#上行遍历
soup.<tag>.parent #父亲节点
soup.<tag>.parents #用于遍历祖宗节点
#平行遍历
soup.<tag>.next_sibling #下一平行标签
soup.<tag>.previous_sibling #上一平行标签
soup.<tag>.next_siblings #用于遍历后续平行标签
soup.<tag>.previous_siblings #用于遍历之前平行标签
#过滤非标签
import bs4
if isinstance(<tag>,bs4.element.Tag):
	...

查找标签

soup.find_all(<标签名>,<属性字典>,<是否对孙节点搜索,默认为True>,string=<字符串>)
soup.<tag>.find_all(<标签名>,<属性字典>,<是否对孙节点搜索,默认为True>,string=<字符串>)
#可简写为soup(...),soup.<tag>(...)
soup.<tag>.find_parents(...)
soup.<tag>.find_parent(...)
#均返回列表
......

使用

解析页面

import requests
from bs4 import BeautifulSoup
r=requests.get("http://127.0.0.1:5000/static/Web笔记.htm")
soup=BeautifulSoup(r.text,"html.parser")

html页面
在这里插入图片描述

查找标签

span=soup.span #第一个span标签
span
>>><span lang="EN-US" style="font-size:14.0pt">Python</span>

span.attrs["lang"] #span的"lang"属性
>>>'EN-US'

for tag in soup.span.parents:
	print(tag.name,end=" ") #遍历祖宗节点
>>>b p div body html [document]

soup("span",{'style': 'font-size:14.0pt'}) #按属性查找
>>>[<span lang="EN-US" style="font-size:14.0pt">Python</span>]

soup.div("span",string='Python') #按字符串查找
>>>[<span lang="EN-US" style="font-size:14.0pt">Python</span>,
<span lang="EN-US">Python</span>, <span lang="EN-US">Python</span>]

span.find_parents('p',{'align': 'center'})
>>>[<p align="center" class="MsoNormal" style="text-align:center"><b><span lang="EN-US" style="font-size:14.0pt">Python</span></b><b><span style="font-size:14.0pt;font-family:宋体">语言程序设计</span></b></p>]

总结

BeautifulSoup可以对标签树进行解析、遍历、维护,常使用for循环进行下行遍历,模糊查找的能力较弱,在标签树复杂时的查找效率和准确率较低,对所需信息的获取较难。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值