python爬虫学习笔记--BeautifulSoup4库的使用详解

 更新时间:2021年08月25日 15:50:17   作者:工具晨的日常  
这篇文章主要介绍了Python中使用Beautiful Soup库的超详细教程,示例代码基于Python2.x版本,极力推荐!需要的朋友可以参考下

使用范例

from bs4 import BeautifulSoup
#创建 Beautiful Soup 对象
# 使用lxml来进行解析
soup = BeautifulSoup(html,"lxml")
print(soup.prettify())

返回结果

在这里插入图片描述

常用的对象–Tag

就是 HTML 中的一个个标签

在上面范例的基础上添加

from bs4 import BeautifulSoup
#创建 Beautiful Soup 对象
# 使用lxml来进行解析
soup = BeautifulSoup(html,"lxml")
#print(soup.prettify())


#创建 Beautiful Soup 对象
soup = BeautifulSoup(html,'lxml')

print (soup.title)#None因为这里没有tiele标签所以返回none

print (soup.head)#None因为这里没有head标签所以返回none

print (soup.a)#返回 <a class="fill-dec" href="//my.csdn.net" target="_blank">编辑自我介绍,让更多人了解你<span class="write-icon"></span></a>


print (type(soup.p))#返回 <class 'bs4.element.Tag'>

print( soup.p)

其中print( soup.p)

返回结果为

在这里插入图片描述

同样地,在上面地基础上添加

print (soup.name)# [document] #soup 对象本身比较特殊,它的 name 即为 [document]

返回

在这里插入图片描述

print (soup.head.name)#head #对于其他内部标签,输出的值为标签本身的名称
print (soup.p.attrs)##把p标签的所有属性打印出来,得到的类型是一个字典。

返回

在这里插入图片描述

print (soup.p['class'])#获取P标签下地class标签
soup.p['class'] = "newClass"
print (soup.p) # 可以对这些属性和内容等等进行修改

返回

在这里插入图片描述

常用的对象–NavigableString

前面地基础上添加

print (soup.p.string)
# The Dormouse's story
print (type(soup.p.string))
# <class 'bs4.element.NavigableString'>thon

返回结果

在这里插入图片描述

常用的对象–BeautifulSoup

beautiful soup对象表示文档的全部内容。大多数情况下,它可以被视为标记对象。它支持遍历文档树并搜索文档树中描述的大多数方法因为Beauty soup对象不是真正的HTML或XML标记,所以它没有名称和属性。但是,有时查看其内容很方便。Name属性,因此美丽的汤对象包含一个特殊属性。值为“[文档]”的名称

print(soup.name)
#返回 '[document]'

常用的对象–Comment

用于解释注释部分的内容

markup = "<b><!--Hey, buddy. Want to buy a used parser?--></b>"
soup = BeautifulSoup(markup)
comment = soup.b.string
type(comment)
# <class 'bs4.element.Comment'>

对文档树的遍历

在上面的基础上添加

head_tag = soup.div
# 返回所有子节点的列表
print(head_tag.contents)

返回

在这里插入图片描述

同理

head_tag = soup.div

# 返回所有子节点的迭代器
for child in head_tag.children:
    print(child)

返回

在这里插入图片描述

tag中包含多个字符串的情况

可用 .strings 来循环获取

for string in soup.strings:
    print(repr(string))

返回

在这里插入图片描述

.stripped_strings 去除空白内容

for string in soup.stripped_strings:
    print(repr(string))

返回

在这里插入图片描述

搜索文档树–find和find_all

找到所有

print(soup.find_all("a",id='link2'))

find方法是找到第一个满足条件的标签后立即返回,返回一个元素。find_all方法是把所有满足条件的标签都选到,然后返回。

select方法(各种查找)

#通过标签名查找:
print(soup.select('a'))
#通过类名查找:
#通过类名,则应该在类的前面加一个'.'
print(soup.select('.sister'))
#通过id查找:
#通过id查找,应该在id的名字前面加一个#号
print(soup.select("#link1"))

查找a标签返回的结果

在这里插入图片描述

其他因为网页本身没有,返回的是一个空列表

组合查找

print(soup.select("p #link1"))#查找 p 标签中,id 等于 link1的内容

子标签查找

print(soup.select("head > title"))

通过属性查找

print(soup.select('a[href="http://example.com/elsie"]'))#属性与标签属同一节点,中间不能有空格

获取内容

先查看类型

print (type(soup.select('div')))

在这里插入图片描述

for title in soup.select('div'):
    print (title.get_text())

返回

在这里插入图片描述

print (soup.select('div')[20].get_text())#选取第20个div标签的内容

返回

在这里插入图片描述

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • Python range函数之生成器函数的示例

    Python range函数之生成器函数的示例

    这篇文章主要介绍了Python range函数之生成器函数的示例,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Pandas DataFrame replace替换后无效的解决

    Pandas DataFrame replace替换后无效的解决

    这篇文章主要介绍了Pandas DataFrame replace替换后无效的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python2和Python3读取文本文件的区别及说明

    Python2和Python3读取文本文件的区别及说明

    这篇文章主要介绍了Python2和Python3读取文本文件的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Django项目中包含多个应用时对url的配置方法

    Django项目中包含多个应用时对url的配置方法

    今天小编就为大家分享一篇Django项目中包含多个应用时对url的配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Windows下搭建python开发环境详细步骤

    Windows下搭建python开发环境详细步骤

    这篇文章主要为大家详细介绍了Windows下搭建python开发环境,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • django批量导入xml数据

    django批量导入xml数据

    从网上下载的一些数据,excel表格,xml文件,txt文件等有时候我们想把它导入数据库,应该如何操作呢?下面我们就来详细讨论下。
    2016-10-10
  • 利用20行Python 代码实现加密通信

    利用20行Python 代码实现加密通信

    这篇文章主要介绍了利用Python 代码实现加密通信,本文用 20 行 Python 代码来演示加密、解密、签名、验证的功能。大家依样画葫芦,不仅能理解加密技术,更能自己实现一套加密通信机制,需要的朋友可以参考一下
    2022-03-03
  • Django中自定义查询对象的具体使用

    Django中自定义查询对象的具体使用

    这篇文章主要介绍了Django中自定义查询对象的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Python解析、提取url关键字的实例详解

    Python解析、提取url关键字的实例详解

    今天小编就为大家分享一篇Python解析、提取url关键字的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python实现斐波那契数列的示例代码

    Python实现斐波那契数列的示例代码

    斐波那契数列是一种经典的数学问题,在计算机科学和编程中经常被用来演示算法和递归的概念,本文将详细介绍斐波那契数列的定义、计算方法以及如何在Python中实现它,需要的可以参考下
    2024-01-01

最新评论