BeautifulSoup4的使用
一、介绍
Beautiful Soup 主要是用来解析提取 HTML 和 XML 文件中的数据。
现在官网推荐使用 Beautiful Soup 4 ,已经被移植到了BS4中。
安装 Beautiful Soup:pip instal beautifulsoup4
使用格式:
实例化 Beautifulsoup 传入被 解析的 HTML 文档内容和解析器,得到一个对象。
from bs4 import Beautifulsoup
soup = Beautifulsoup(html_doc, 'html.parser')
# 参数:
-html_doc:被解析的html文档内容
-html.parser:解析器
解析器:
| 解析器 | 使用方法 | 优势 | 劣势 |
|---|---|---|---|
| Python标准库 | BeautifulSoup(markup, "html.parser") |
Python的内置标准库执行速度适中文档容错能力强 | Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差 |
| lxml HTML 解析器 | BeautifulSoup(markup, "lxml") |
速度快文档容错能力强 | 需要安装C语言库 |
| lxml XML 解析器 | BeautifulSoup(markup, ["lxml", "xml"])``BeautifulSoup(markup, "xml") |
速度快唯一支持XML的解析器 | 需要安装C语言库 |
| html5lib | BeautifulSoup(markup, "html5lib") |
最好的容错性以浏览器的方式解析文档生成HTML5格式的文档 | 速度慢不依赖外部扩展 |
二、遍历文档树
遍历文档树就是直接通过标签名字选择,特点是选择速度快,但如果存在多个相同的标签则只能返回第一个。
用法:
from bs4 import Beautifulsoup
soup = Beautifulsoup(html_doc, 'html.parser')
对象 = soup.body.a # 查找最开始第一个body标签下的第一个a标签
对象.name # 获取标签的名字
对象.attrs # 获取标签的所有属性
对象.get(属性名) # 获取标签指定属性
对象.text # 获取标签的文本内容(子子孙孙都拼接在一起的)
对象.get_text() # 和上面一样
对象.string # 当前标签下有文本才取出来,否则全是None
对象.strings # 子子孙孙的内容都放大生成器中
三、搜索文档树
搜索文档树是通过主要的两个方法 find() 和 find_all() 去文档中查找指定标签。
五种过滤器
1、字符串:
from bs4 import Beautifulsoup
soup = Beautifulsoup(html_doc, 'html.parser')
soup.find_all('a') # 查找所有的a标签
2、正则表达式
import re
soup.find_all(re.compile('^b')) # 查找出所有以b开头的标签
3、列表
soup.find_all(['a', 'b']) # 找到所有的a标签和b标签
4、True/False
soup.find_all(name=True) # 匹配有name属性的标签
5、方法
如果没有合适的过滤器,就可以定义一个方法只接收一个元素参数,返回 True 表示匹配到并找到,否则 False
# 查找有类属性,没有id属性的标签
def fun(tag):
return tag.has_attr('class') and not tag.has_attr('id')
soup.find_all(fun)
CSS选择器
使用方法和CSS选择器一样,用css选择器的格式去找标签
格式:
soup.select('css选择器') # 返回列表
'''
#id
.class
#id a ——>匹配对应id下的所有a标签(子子孙孙)
#id>a ——>匹配对应id下的直接子节点,子标签
'''
BeautifulSoup4的使用的更多相关文章
- 爬虫笔记(四)------关于BeautifulSoup4解析器与编码
前言:本机环境配置:ubuntu 14.10,python 2.7,BeautifulSoup4 一.解析器概述 如同前几章笔记,当我们输入: soup=BeautifulSoup(response. ...
- 使用pip安装BeautifulSoup4模块
1.测试是否安装了BeautifulSoup4模块 import bs4 print bs4 执行报错说明没有安装该模块 Traceback (most recent call last): File ...
- python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容
python3.4学习笔记(十七) 网络爬虫使用Beautifulsoup4抓取内容 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖 ...
- windows下安装beautifulsoup4
方法一: pip install beautifulsoup4 方法二: 在官网下载安装包后,放在python目录下--运行cmd--进入bs4安装包路径--输入setup.py install 测试 ...
- Python3利用BeautifulSoup4批量抓取站点图片的代码
边学边写代码,记录下来.这段代码用于批量抓取主站下所有子网页中符合特定尺寸要求的的图片文件,支持中断. 原理很简单:使用BeautifulSoup4分析网页,获取网页<a/>和<im ...
- python BeautifulSoup4
source form http://www.bkjia.com/ASPjc/908009.html 昨天把传说中的BeautifulSoup4装上了,还没有装好的童鞋,请看本人的上一篇博客: Py ...
- 安装beautifulsoup4
python scripts下 pip install beautifulsoup4
- Python: 安装BeautifulSoup4
python3.4.3 安装BeautifulSoup4: 使用pip install 安装: 在命令行cmd之后输入,pip install BeautifulSoup4 BeautifulSoup ...
- Python BeautifulSoup4 使用指南
前言: 昨天把传说中的BeautifulSoup4装上了,还没有装好的童鞋,请看本人的上一篇博客: Python3 Win7安装 BeautifulSoup,依照里面简单的步骤就能够把Beautifu ...
- 【安装】beautifulsoup4—美丽汤的安装
beautifulsoup俗称美丽汤,是用来爬虫用的,大家可以到这个网址去下载.注意,要根据对应的python版本 来下载. 下载传送: https://pypi.python.org/pypi/be ...
随机推荐
- centos7 php开发环境安装-composer
1.安装composer cd /usr/local/src curl -sS https://getcomposer.org/installer | php mv composer.phar /us ...
- Linux学习之路第十天(磁盘情况查询)
一.查询系统整体磁盘使用情况 :基本语法 df -h 二.查询指定目录的磁盘占用情况 :基本语法 du -h /目录 查询指定目录的磁盘占用情况,默认为当前目录 选项 应用案例 查询/opt目录,深度 ...
- 深入浅出图神经网络 GCN代码实战
GCN代码实战 书中5.6节的GCN代码实战做的是最经典Cora数据集上的分类,恰当又不恰当的类比Cora之于GNN就相当于MNIST之于机器学习. 有关Cora的介绍网上一搜一大把我就不赘述了,这里 ...
- Anaconda软件安装使用问题
目录 更新源 用conda安装包出现的环境不一致问题 更新源 命令行 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/ ...
- echarts堆叠柱状图在最上面的柱子显示总和
需求 柱子需设置barMinHeight 在堆叠柱状图的最上面显示当前堆叠的总和 直接上代码吧 需要注意:设置barMinHeight时为了让0不显示,只能将0设置为null; 设置为null的柱子l ...
- Java 给PDF签名时添加可信时间戳
一.程序运行环境 编译环境:IntelliJ IDEA 所需测试文件:PDF..pfx数字证书及密钥.PDF Jar包(Free Spire.PDF for Java).签名图片(.png格式) 可信 ...
- Linux系统引导过程及排除启动故障
一.Linux操作系统引导过程二.系统初始化进程1.init进程2.Systemd3.Systemd单元类型三.排除启动类故障[1].修复MBR扇区故障(含实验过程)[2].修复GRUB引导故障●方法 ...
- Python爬取网易云热歌榜所有音乐及其热评
获取特定歌曲热评: 首先,我们打开网易云网页版,击排行榜,然后点击左侧云音乐热歌榜,如图: 关于如何抓取指定的歌曲的热评,参考这篇文章,很详细,对小白很友好: 手把手教你用Python爬取网易云40万 ...
- vue-qiankun公司微前端项稳定目落地后的总结(附github仓库demo,将会持续更新)
️本文为博客园社区首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gi ...
- js学习-apply,call,bind的实现
目录 apply call bind demo apply 简单说:构建一个和调用aplly函数一样的字符串,用eval执行,完了之后删除掉,最后返回执行的结果. Function.prototype ...