from bs4 import BeautifulSoup
创建模拟HTML代码的字符串
html_doc = “”"
The Dormouse's story
Once upon a time there were three little sisters; and their names were
Lacie and
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
,Once upon a time there were three little sisters; and their names were
Lacie and
and they lived at the bottom of a well.
,…
]获取a标签的href属性值
from bs4 import BeautifulSoup
创建模拟HTML代码的字符串
html_doc = “”"
The Dormouse's story
Once upon a time there were three little sisters; and their names were
Lacie and
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
Once upon a time there were three little sisters; and their names were
Lacie and
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
Once upon a time there were three little sisters; and their names were
Lacie and
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 = “”"
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!
方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!