BeautifulSoup的基本使用,不可思议

from bs4 import BeautifulSoup

创建模拟HTML代码的字符串

html_doc = “”"

The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names were

Elsie,

Lacie and

Tillie;

and they lived at the bottom of a well.

...

“”"

创建soup对象

soup = BeautifulSoup(html_doc, ‘lxml’)

print(‘head标签名字:\n’, soup.head.name) # 打印head标签名字

print(‘body标签名字:\n’, soup.body.name) # 打印body标签名字

print(‘html标签名字:\n’, soup.html.name) # 打印html标签名字

print(‘p标签名字:\n’, soup.find_all(‘p’).name) # 打印p标签名字

✅如果要找到两个标签的内容,需要传入列表过滤器,而不是字符串过滤器

使用字符串过滤器获取多个标签内容会返回空列表

print(soup.find_all(‘title’, ‘p’))

[]

需要使用列表过滤器获取多个标签内容

print(soup.find_all([‘title’, ‘p’]))

[The Dormouse’s story,

The Dormouse’s story

,

Once upon a time there were three little sisters; and their names were

Elsie,

Lacie and

Tillie;

and they lived at the bottom of a well.

,

]

获取a标签的href属性值

from bs4 import BeautifulSoup

创建模拟HTML代码的字符串

html_doc = “”"

The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names were

Elsie,

Lacie and

Tillie;

and they lived at the bottom of a well.

...

“”"

创建soup对象

soup = BeautifulSoup(html_doc, ‘lxml’)

a_list = soup.find_all(‘a’)

遍历列表取属性值

for a in a_list:

第一种方法通过get去获取href属性值(没有找到返回None)

print(a.get(‘href’))

第二种方法先通过attrs获取所有属性值,再提取出你想要的属性值

print(a.attrs[‘href’])

第三种方法获取没有的属性值会报错

print(a[‘href’])

✅扩展:使用prettify()美化 让节点层级关系更加明显 方便分析

print(soup.prettify())

不使用prettify时的代码

The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names were

Elsie,

Lacie and

Tillie;

and they lived at the bottom of a well.

...

使用prettify时的代码

The Dormouse’s story

The Dormouse’s story

Once upon a time there were three little sisters; and their names were

Elsie

,

Lacie

and

Tillie

;

and they lived at the bottom of a well.

遍历文档树

from bs4 import BeautifulSoup

创建模拟HTML代码的字符串

html_doc = “”"

The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names were

Elsie,

Lacie and

Tillie;

and they lived at the bottom of a well.

...

“”"

soup = BeautifulSoup(html_doc, ‘lxml’)

head = soup.head

contents返回的是所有子节点的列表 [The Dormouse’s story]

print(head.contents)

children返回的是一个子节点的迭代器 <list_iterator object at 0x00000264BADC2748>

print(head.children)

凡是迭代器都是可以遍历的

for h in head.children:

print(h)

html = soup.html # 会把换行也当作子节点匹配到

descendants 返回的是一个生成器遍历子子孙孙 <generator object Tag.descendants at 0x0000018C15BFF4C8>

print(html.descendants)

凡是生成器都是可遍历的

for h in html.descendants:

print(h)

‘’’

需要重点掌握的

string获取标签里面的内容

strings 返回是一个生成器对象用过来获取多个标签内容

stripped_strings 和strings基本一致 但是它可以把多余的空格去掉

‘’’

print(soup.title.string)

print(soup.html.string)

返回生成器对象<generator object Tag._all_strings at 0x000001AAFF9EF4C8>

soup.html.strings 包含在html标签里面的文本都会被获取到

print(soup.html.strings)

for h in soup.html.strings:

print(h)

stripped_strings可以把多余的空格去掉

返回生成器对象<generator object PageElement.stripped_strings at 0x000001E31284F4C8>

print(soup.html.stripped_strings)

for h in soup.html.stripped_strings:

print(h)

‘’’

parent直接获得父节点

parents获取所有的父节点

‘’’

title = soup.title

parent找直接父节点

print(title.parent)

parents获取所有父节点

返回生成器对象<generator object PageElement.parents at 0x000001F02049F4C8>

print(title.parents)

for p in title.parents:

print§

html的父节点就是整个文档

print(soup.html.parent)

<class ‘bs4.BeautifulSoup’>

print(type(soup.html.parent))

案例练习

获取所有职位名称

html = “”"

职位名称 职位类别 人数 地点 发布时间 22989-金融云区块链高级研发工程师(深圳) 技术类 1 深圳 2017-11-25 22989-金融云高级后台开发 技术类 2 深圳 2017-11-25 SNG16-腾讯音乐运营开发工程师(深圳) 技术类 2 深圳 2017-11-25 SNG16-腾讯音乐业务运维工程师(深圳) 技术类 1 深圳 2017-11-25 TEG03-高级研发工程师(深圳) 技术类 1 深圳 2017-11-24 TEG03-高级图像算法研发工程师(深圳) 技术类 1 深圳 2017-11-24 TEG11-高级AI开发工程师(深圳) 技术类 4 深圳 2017-11-24 15851-后台开发工程师 技术类

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值