1.导入模块

from bs4 import BeautifulSoup

2.解析获取到的网页内容

文档被转换成Unicode,并且HTML的实例都被转换成Unicode编码。
可以打印soup对象的内容,格式化输出:print soup.prettify()

url_str = getHTMLText(url)
soup = BeautifulSoup(url_str,'html.parser')

3.基本使用方法

bs4 将复杂的HTML文档转换成一个复杂的树形结构,每个节点都是python的对象。

根据标签查找(type:bs4_obj)

head = soup.head
<head><meta content="text/html;charset=utf-8" http-equiv="content-type"/><meta content="IE=Edge" http-equiv="X-UA-Compatible"/><meta content="always" name="referrer"/><link href="http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css"/><title>百度一下,你就知道</title>
</head>

获取属性


title = head.title # 在soup中获取第一个符合要求的标记
# <title>百度一下,你就知道</title>
title_str = name.string # 获取标签内部的文字
# 百度一下,你就知道
meta = head.meta
# <meta content="text/html;charset=utf-8" http-equiv="content-type"/>
content = meta.get('content') # 获取meta中第一个属性
content = meta['content']
# text/html;charset=utf-8
content = meta.attrs # 获取meta中所有属性
# {'http-equiv': 'content-type', 'content': 'text/html;charset=utf-8'}
meta.name = 'hi' # 修改标签的name
meta['content'] = 'hello world' # 修改标签的属性和内容
print(meta)
# <hi content="hello world" http-equiv="content-type"/>

获取文本内容

content = head.contents # 返回以head下各标签为元素的列表[<meta content="text/html;charset=utf-8" http-equiv="content-type"/>, <meta content="IE=Edge" http-equiv="X-UA-Compatible"/>, <meta content="always" name="referrer"/>, <link href="http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css"/>, <title>百度一下,你就知道</title>]
print(content[0])
# <meta content="text/html;charset=utf-8" http-equiv="content-type"/>
text = head.get_text() # 获取head标签内部的文字
# 百度一下,你就知道
print(type(head.title.string)) # bs4.element.NavigableString
if type(head.title.string)== bs4.element.NavigableString: # 过滤注释内容print('这是注释内容')
else:print('这不是注释')

获取子孙节点(tpye:generator)

descendants = soup.p.descendants

使用语法

print(bs.a)#去标签
print(bs.a['href'])#取标签属性值
print(bs.a.string)#取标签内容
print(bs.body.children)#[<a></a>,<a>,<h1>]
print(bs.a.name) # 获取a标签的名称
print(bs.a.get("href"))# 查找第一个a标签的href的属性
print(bs.a.attrs)# 获取a标签的所有的属性,返回一个字典
print(bs.find("a"))# 查找第一个a标签
print(bs.find_all("a"))# 查找所有的a标签
print(bs.find_all(id="a1"))# 查找所有的的id为a1的标签
print(bs.find_all(class_="sistex"))# 这里需要注意,如果需要通过class去查找,则需要一个下划线
print(bs.find_all(["a", "p", "br"]))# 查找所有的啊标签,p标签和br标签
bs.find("a").attrs["class"] = "2b"#修改某个标签的属性值
del bs.find(id="a1").attrs["class"]# 删除某个标签的class属性

Python中bs包的使用相关推荐

  1. python中bs包的使用方法

    Beautifulsoup简介 简单来说,BeautifulSoup就是Python的一个HTML或XML的解析库,我们可以用它来方便地从网页中提取数据,官方的解释如下: BeautifulSoup提 ...

  2. 对于python来说、一个模块就是一个文件-PYTHON中的包和模块

    为了更加友好的对python代码进行组织管理,python中出现了包和模块的概念 类似生活中整理我们的物品一样,将代码按照不同的功能进行整理整合,可以很大程度的提升代码可读性和代码质量,方便在项目中进 ...

  3. python xlrd安装_详解python中xlrd包的安装与处理Excel表格

    一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...

  4. python中引入包的时候报错AttributeError: module ‘sys‘ has no attribute ‘setdefaultencoding‘解决方法?

    python中引入包的时候报错AttributeError: module 'sys' has no attribute 'setdefaultencoding'解决方法? 参考文章: (1)pyth ...

  5. Python入门-Python中的包,impot,from,import

    #Python中的包 #包(python package)是一个分层次的目录(directory)结构,它将一组功能相近的模块组织在一个目录下 #作用:1.代码规范,2.避免模块名称冲突 #包与目录的 ...

  6. 基于python中jieba包的中文分词中详细使用(一)

    文章目录 基于python中jieba包的中文分词中详细使用(一) 01.前言 02.jieba的介绍 02.1 What 02.2特点 02.3安装与使用 02.4涉及到的算法 03.主要功能 03 ...

  7. 浅析Python中signal包的使用

    原文链接:https://www.jb51.net/article/74844.htm 这篇文章主要介绍了Python中signal包的使用,主要在Linux系统下对进程信号进行相关操作,需要的朋友可 ...

  8. 使用python中py2neo包连接neo4j(安装,连接,成功解决)

    使用python中py2neo包连接neo4j neo4j下载 JDK下载 neo4j官网下载 检查安装是否成功 py2neo安装 命令行安装 测试安装是否成功 最近在研究有关知识图谱的任务,选择用图 ...

  9. 如何用Python中Tushare包轻松完成股票筛选(详细流程操作)

    如何用Python中Tushare包轻松完成股票筛选(详细流程操作) 本文包括安装以及调用Tushare包的详细流程操作 一.Tushare简介 Tushare是Python中一个十分好用的免费调用股 ...

最新文章

  1. 入门 Python GUI 开发的第一个坑
  2. inotify-tools使用方法介绍
  3. 实现option上下移动_js: 实现Select的option上下移动 | 学步园
  4. ajax获得excel文件流在前端打开_主流前端技术讲解,面试必考!
  5. C++空类中的默认函数
  6. BZOJ-1507 文本编辑器(Editor)
  7. IBM:利用闪存提速实时分析 掘金大数据
  8. 流水灯c语言代码switch,51单片机流水灯代码,四种方式,开关启动
  9. 程序员从入门到放弃,书籍推荐
  10. Java面试:反射机制
  11. Linux 交叉编译工具链
  12. 电商平台如何快速对接物流模块
  13. Android检测wifi信号强度,检测网络是否通畅
  14. 电脑只能上qq不能打开网页
  15. 【Laravel系列4.3】模型Eloquent ORM的使用(一)
  16. 2.3 连续性随机变量
  17. 时间序列模型预测_时间序列预测,使用facebook先知模型预测股价
  18. 五、Netty核心技术之线程模型讲解
  19. Java基础 -> Java死锁如何避免?
  20. PLSQl 万能操作

热门文章

  1. Linux安全之关闭不需要的端口
  2. PHP 导出Excel的csv格式数字会自动变科学计数法 日期2019-04变成2019/4/1
  3. 5、店铺管理 - 后端功能开发 - 微擎小程序模块应用开发
  4. OpenMesh 报错“Use dereferencing operators - and * instead.”的解决
  5. eclipse报unknown database错误的其中一种方法解决归纳
  6. CSDN博客积分准则
  7. Linux学习-40-格式化分区mkfs、mke2fs命令用法
  8. unity3d 模拟电脑实现_毕业论文 基于Unity3D的三维虚拟电脑组装实验系统开发
  9. 数据传输需求大 巴西与欧盟计划增建海底光缆
  10. python和PQ的完美结合——python批量刷新PQ工作簿模型