BS4基本用法

1.找米下锅,安装bs4库

pip install BeautifulSoup

2.此物何用,BS4作用

Beautiful Soup库是解析遍历维护“html标签树”的功能库。在爬虫中用于解析数据。

3.bs4标签元素,解析其组成,方可庖丁解牛,游刃有余

by:

#导入BeautifulSoup库
from bs4 import BeautifulSoup
r='''<!DOCTYPE html>
<html>
<div><!--这个文件是介绍BS4的基本的用法的--></div>
<head>
	<title class="te" id="t"> 测试bd4方法</title>
</head>
<body>
	<p>
	
		<ul>标题一</ul>
		<a href="www.a">哈哈哈</a>
	</p>
	<p>
		<u>嘿嘿嘿</u>
		<u>呵呵呵</u><u2>标题2</u2><div class="d" id="d3">我是p标签中的div</div>
		<a href="www">我是a2</a>
	</p>
	<div class="d" id="d1">我是div</div>
	<div class="d" id="d2"></div>
</body>
</html>'''
soup=BeautifulSoup(r,'html.parser')

3.1 tag:标签,最基本的单元,用<>和>开头和结尾

用法:.标签名

tag1=soup.title
print(tag1)

返回的是一个'bs4.element.Tag'对象

3.2 name:标签名,

用法:.name

name=tag1.name
print(name)
print(type(name))

返回标签的名字,'str'类型

3.3 Attributes:属性

用法:.attrs

a=tag1.attrs
print(a)
print(type(a))

返回的是标签的属性,存放在列表中,'dict'类型

3.4 NavigableString:非属性字符串

用法:.string

str1=tag1.string
print(str1)
print(type(str1))

返回标签中的字符串,‘str’类型

3.5 Comment:注释

用法:.comment

a1=soup.div.contents
print(a1)
print(type(a1))

返回注释,“list”类型

4.BS4的HTML遍历方法,连坐制度,寻其一可知其九族。

4.1 下行遍历,先找后辈

4.1.1 下行遍历所有儿子.cotents:获取子节点的列表

用法:.contents

tag2=soup.p
tag3=tag1.contents
print(tag3)
print(type(tag3))

将所有儿子节点村放入列表

4.1.2 下行遍历一个一个的找儿子.children:获取子节点的迭代类型

用法:

for tag4 in tag2.children:
    print(tag4)

返回儿子节点的迭代类型,与.contents类似,用于循环遍历儿子节点

4.1.2 下行遍历找子子孙孙.descendants: 获取子孙节点的迭代类型

用法:

for tag5 in soup.body.descendants:
    print(tag5)

返回全部子孙节点的迭代类型,用于循环遍历子孙节点

4.2 上行遍历,再找先辈

4.2 上行遍历找爸爸 .parent:获取节点的父标签

用法:.parent

tag6=soup.ul
print(tag6.parent)

返回负标签, 'bs4.element.Tag'类型

4.2.2上行遍历找祖宗 .parent:获取父标签,及父标签的父标签,及父标签的父标签的标签点,直到老祖宗html标签

用法:.parents

for tag7 in tag6.parents:
    print(tag7)

返回迭代对象,'bs4.element.Tag'类型

4.3 平行遍历,不放过其兄弟姐妹

4.3.1平行遍历找最近的哥哥 .previous_sibling:返回上一个平行节点标签

用法:.previous_sibling

u2=soup.u2
print(u2.previous_sibling)

返回兄弟标签, 'bs4.element.Tag'类型

4.3.2平行遍历找所有的哥哥 .previous_siblings:迭代类型,返回前续的所有平行节点标签

用法:.previous_siblings

for tag8 in u2.previous_siblings:
    print(tag8)

返回迭代对象,'bs4.element.Tag'类型

4.3.3平行遍历找最近的弟弟 .next_sibling:返回下一个平行节点标签

用法:.next_sibling

u2=soup.u2
print(u2.next_sibling)

返回兄弟标签, 'bs4.element.Tag'类型

4.3.4平行遍历找所有的弟弟 .next_siblings:迭代类型,返回后续的所有平行节点标签

用法:.next_siblings

for tag9 in u2.next_siblings:
    print(tag9)

返回迭代对象,'bs4.element.Tag'类型

5.bs4中findAll方法,为防逃脱,还可用findAll方法查找。

5.1 标签参数tag:可以传递一个标签的名称或多个标签名称组成的Python列表做标签参数。

用法:.findAll("标签名")

tag=soup.findAll(["a","u"])
print(tag)

5.2 属性参数attributes:用一个Python字典封装一个标签的若干属性和对应的属性值。

用法:.findAll(属性=属性值)

ta2=soup.findAll(id='d1')
print(ta2)

5.3 find用法

6 bs4中select用法,兵贵神速,若想快速找到相关人物,可用select定点狙击目标

bs4中select用法
方法内容
通过标签名查找soup.select('title')#直接填写标签名
通过类名查找soup.select('.d') #  “ . ”代表类查找 
通过id查找soup.select('#d2') #  “#”代表id查找
组合查找soup.select('div #d2' ) #  p标签且id为d2的对象
标签依次查找soup.select('p>a') # p标签下的a标签
通过href属性查找soup.select('a[href="www"]')

Attri

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值