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. Linux:从入门到放弃

    [未解决] # 周五,安装ubuntu 18.04 # 周六,相继安装minit / deepin 系统. # 至今,遇到过还没有解决的问题有: # . 开机ACPI Error: # . 无论哪个L ...

  2. python多进程学习笔记

    # coding=utf-8 from multiprocessing import Process,Pool import os import time def printf(args): # ti ...

  3. 洛谷.5300.[GXOI/GZOI2019]与或和(单调栈)

    LOJ BZOJ 洛谷 想了一个奇葩的单调栈,算的时候要在中间取\(\min\),感觉不靠谱不写了=-= 调了十分钟发现输出没取模=v= BZOJ好逗逼啊 题面连pdf都不挂了 哈哈哈哈 枚举每一位. ...

  4. 原生JS制作简易Tabs组件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. eclipse自身导致的项目问题:上边提示需要移除无用包,下边类提示需要导入包。

  6. laravel-神奇的服务容器(转)

    原文地址: http://www.insp.top/learn-laravel-container ,转载务必保留来源,谢谢了! 容器,字面上理解就是装东西的东西.常见的变量.对象属性等都可以算是容器 ...

  7. MapReduce的工作原理

    MapReduce简介 MapReduce是一种并行可扩展计算模型,并且有较好的容错性,主要解决海量离线数据的批处理.实现下面目标 ★ 易于编程 ★ 良好的扩展性 ★ 高容错性   MapReduce ...

  8. jsp 表单回显

    1.在表单各个字段中添加value属性,如:value="${user.reloginpass }" 2.在表单提交对应的servlet中封装数据到uer中,如:req.setAt ...

  9. js拼接字符串后swiper不能动的解决方案

    swiper的配置一定要放在拼接字符串之后,紧随其后,如果放在其他的位置,swiper是不识别HTML的.

  10. 有关promise的技巧

    其实promise的作用是将异步的代码转化为同步,这里的异步指的是request1,request2.