BeautifulSoup是灵活又方便的网页解析库,处理搞笑,支持多种解析器
利用它不用编写正则表达式即可方便地实现网页信息的提取
BS的四大对象:
1.Tag
Tag就是HTML中的一个个标签,例如:
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
我们就可以通过Bs轻松的从Html中获取
soup = BeautifulSoup(html,"lxml")
print(soup.a)
当然你也可以获取别的标签
我们来验证以下这些对象的类型
print(type(soup.a))
<class 'bs4.element.Tag'>
对于Tag,它有两个重要的属性,name 和 attrs
print(soup.a.name)
print(soup.a.attrs)
#a
#{'href': 'http://example.com/elsie', 'class': ['sister'], 'id': 'link1'}
name这个比较特殊,它就代表着标签名称,而attrs则代表自己的一些信息,或者称作属性.它是一个字典形,那如果我们想获取里面的某个值怎么做呢,直接访问那个key就完事了.
print(soup.a['href'])
结果为:#http://example.com/elsie
2.NavigableString
既然我们已经得到了标签的内容,那么问题来了,那我们想获取里面 d的内容应该怎么办,直接.string即可..
print soup.p.string
#The Dormouse's story
这样就方便多了,它的类型是什么呢
print type(soup.p.string)
#<class 'bs4.element.NavigableString'>
3.BeautifulSoup
BeautifulSoup对象表示一个文档的所有内容,大部分时候,我们可以将它当作一个Tag,我们可以获得它的类型 名称 属性 让我们Feel一下。
print type(soup.name)
#<type 'unicode'>
print soup.name
# [document]
print soup.attrs
#{} 空字典
4.Comment
有意思的是,如果其中的内容有htmlz注释 “.string” 它会自动的过滤掉注释 所以我们可以进行下判断
print(type(soup.a.string))
print(bs4.element.Comment)
#<class 'bs4.element.Comment'>
#<class 'bs4.element.Comment'>
if type(soup.a.string)=bs4.element.Comment:
print(soup.a.string)

PYTHON BS 四大对象的更多相关文章

  1. python学习之----BeautifulSoup的find()和findAll()及四大对象

    BeautifulSoup 里的find() 和findAll() 可能是你最常用的两个函数.借助它们,你可以通 过标签的不同属性轻松地过滤HTML 页面,查找需要的标签组或单个标签. 这两个函数非常 ...

  2. python函数-函数对象

    python函数-函数对象 实验室 当函数定义时,就类似a=1,以函数名为变量名 def zx(): pass print(zx) zx=21 print(zx) <function zx at ...

  3. python基础——获取对象信息

    python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...

  4. python 引用和对象理解

    今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象 ...

  5. Python深入03 对象的属性

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python一切皆对象(object),每个对象都可能有多个属性(attribut ...

  6. Python的基础--对象 转

      对象(Objects)是python中数据的抽象,python中所有的数据均可以用对象或者是对象之间的关系来表示.每个对象均有标识符(identity).类型(type).值(value). 标识 ...

  7. Python可迭代对象、迭代器和生成器

    Python可迭代对象.迭代器和生成器 python 函数 表达式 序列 count utf-8 云栖征文 python可迭代对象 python迭代器 python生成器 摘要: 8.1 可迭代对象( ...

  8. Python的基础--对象

    对象(Objects)是python中数据的抽象,python中所有的数据均可以用对象或者是对象之间的关系来表示.每个对象均有标识符(identity).类型(type).值(value). 标识符. ...

  9. Python一切皆对象

    Python从设计之初就是一门面向对象的语言,它有一个重要的概念,即一切皆对象. Java虽然也是面向对象编程的语言,但是血统没有Python纯正.比如Java的八种基本数据类型之一int,在持久化的 ...

随机推荐

  1. Objective-C中整数与字符串的相互转换

    2013/4/15整理: 将整数转换成字符串 Convert Integer to NSString: 方法一: int Value = 112233; NSString *ValueString = ...

  2. JS实现快速排序,冒泡排序

    JS-排序详解-冒泡排序   说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b, ...

  3. PBRT笔记(14)——光线传播2:体积渲染

    传输公式 传输方程是控制光线在吸收.发射和散射辐射的介质中的行为的基本方程.它解释了第11章中描述的所有体积散射过程--吸收.发射和内.外散射.并给出了一个描述环境中辐射分布的方程.光传输方程实际上是 ...

  4. vue 学习小记

    vue 中有 data() .computed.methods.beforeRouteLeave.created等 具体的: data():定义一些文件中需要用到的变量,data中带return,是使 ...

  5. 查看mac系统版本

    打开终端, 输入命令 uname -a 回车 x86_64 表示系统为64位 i686 表示系统32位的

  6. mysql8.0.13修改密码

    在安装完数据库后,由于自己不小心直接关闭了安装窗口,或者长时间没有使用root用户登录系统,导致忘记了root密码,这时就需要重置MySQL的root密码.当然,最简单方式自然是删除数据库的data目 ...

  7. Round A - Kick Start 2019

    a.链接:https://codingcompetitions.withgoogle.com/kickstart/round/0000000000050e01/00000000000698d6 题意: ...

  8. 771. Jewels and Stones

    You're given strings J representing the types of stones that are jewels, and S representing the ston ...

  9. python从入门到实践-7章用户输入和while循环

    #!/user/bin/env python# -*- coding:utf-8 -*- # input() 可以让程序暂停工作# int(input('please input something: ...

  10. Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer

    A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.Li ...