python BeautifulSoup的使用
1.BeautifulSoup简介
Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup 就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup 已成为和 lxml、html6lib 一样出色的 python 解释器,为用户灵活地提供不同的解析策略或强劲的速度。
官方文档:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/
2. Beautiful Soup 安装
pip install beautifulsoup4
pin install lxml # lxml解析库
Beautiful Soup 支持 Python 标准库中的 HTML 解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python 默认的解析器,lxml 解析器更加强大,速度更快,推荐安装。
Python 标准库:BeautifulSoup(html_doc, “html.parser”)
- Python 的内置标准库
- 执行速度适中
- 文档容错能力强
- Python 2.7.3 or 3.2.2) 前 的版本中文档容错能力差
lxml HTML 解析器 :BeautifulSoup(html_doc, “lxml”)
- 速度快
- 文档容错能力强
- 需要安装 C 语言库
lxml XML 解析器:BeautifulSoup(html_doc, “xml”)
- 速度快
- 唯一支持 XML 的解析器
- 需要安装 C 语言库
html5lib:BeautifulSoup(html_doc, “html5lib”)
- 最好的容错性
- 以浏览器的方式解析文档
- 生成 HTML5 格式的文档
- 速度慢
- 不依赖外部扩展
3. 创建 Beautiful Soup 对象
# 导入 bs4 库
from bs4 import BeautifulSoup# 字符串示例html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body><p class="title"><b>The Dormouse's story</b></p>
<p class="story">...</p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>"""# 创建 beautifulsoup 对象
# 默认bs4会调用系统中的lxml解析库,也可以主动设置bs4的解析库
soup = BeautifulSoup(html_doc,'lxml') # 设置解析库为 lxml
4. 常用方法
# 格式化输出
result=soup.prettify()# 取title标签
result=soup.title# 取title标签名
result=soup.title.name# 取title标签内容,若标签下有多个内容时,返回None
result=soup.title.string# 取title标签内容,若标签下有多个内容时,全部返回
result=soup.title.get_text()# 取p标签,只会取第一个
result=soup.p# 取p标签的类
result=soup.p['class']# 取a标签(第一个)
result=soup.a# 取a标签的href属性
result=soup.a['href']# find -- 返回符合查询条件的第一个标签
# 指定标签名
result=soup.find(name="a") # 同 soup.find("a")# 指定属性
result=soup.find(attrs={'id':'link1'})# 指定内容
result=soup.find(text='Elsie')# 组合条件
result=soup.find(name='p',attrs={'class':'story'})#find_all --list
result=soup.find_all('a') # 取出所有a标签result=soup.find_all('a',limit=2) # limit限制返回标签数result=soup.find_all(attrs={'class':'sister'}) # 取出所有属性 class为sister的标签result=soup.a.attrs # 获取a标签的所有属性result=soup.select_one('.sister') # 取出class为sister的第一个标签# ### CSS选择器 -- listresult=soup.select('.sister') # 类选择器,取出所有class为siser的标签result=soup.select('#link1') # id选择器,取出所有id为link1的标签result=soup.select('head title') # 取head标签中的title标签result=soup.select('title,.title') # 取title标签 和 class为title的标签result=soup.select('a[id="link2"]') # 取 a标签中 id为link2的标签# # 标签包裹的内容
result=soup.select('.sister')[0].get_text() # 取class为sister的第一个标签的内容# # 标签的属性
result=soup.select('.sister')[1].get('href') # 取class为siser的第二个标签的href属性print(result)
print(type(result))
python BeautifulSoup的使用相关推荐
- python beautifulsoup抓取网页内容_利用Python和Beautiful Soup抓取网页内容
利用Python和Beautiful Soup抓取网页内容 Posted on 2012-08-09 00:08 SamWei 阅读(381) 评论(1) 编辑 收藏 Python 3中提供了url打 ...
- Python beautifulsoup爬取小说
Python beautifulsoup爬取小说 提前准备好需要的库文件,命令行输入以下命令 pip install requests pip install bs4 pip install lxml ...
- Python+beautifulsoup+requests 爬取网易新闻评论
前段时间在看处理数据相关的书籍,实践中需要一些网上评论的文本数据集,所以想到爬取网易新闻底下的评论.本来想着Python+beautifulsoup(解析)+requests(抓取),最后存储在txt ...
- Python+BeautifulSoup+Selenium模拟浏览器循环自动播放视频,如哔哩哔哩某个UP主的视频
1.前言 计算机的出现,推动了人类社会的进步,使得人们更高效的工作或是生活.当我们很"懒"的时候,计算机就能站出来,帮助我们做一些我们觉得浪费时间的事情了.你嫌用手点鼠标麻烦,计算 ...
- python BeautifulSoup的简单使用
官网:https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 参考:https://www.cnblogs.com/yupeng/p/336203 ...
- python+BeautifulSoup+多进程爬取糗事百科图片
用到的库: import requests import os from bs4 import BeautifulSoup import time from multiprocessing impor ...
- python:beautifulSoup学习(来自学习资料)
罗列问题: 1.beautifulSoup是什么 是一个能够快速从html或者xml文档中获取数据的类库. 官方的说是,能够帮你节省一天或者几天的开发时间. 2.beautifulSoup如何安装 P ...
- python BeautifulSoup 爬虫运行出现 exited with code -1073741571
首先,exited with code -1073741571意思是栈溢出.具体可以看https://blog.csdn.net/vblittleboy/article/details/6613815 ...
- python beautifulsoup多线程分析抓取网页
下面的代码用到了 1 python 多线程 2 网页分析库:beautifulsoup ,这个库比之前分享的python SGMLParser 网页分析库要强大很多,大家有兴趣可以去了解下. #enc ...
- Python BeautifulSoup和Requests爬虫爬取中关村手机资料
** 一.事前准备 ** 目标:爬取www.zol.com.cn的收集资料,各种参数 库:BeautifulSoup和requests.对BeautifulSoup库的find和find_all有基本 ...
最新文章
- 什么是好的图神经网络?
- 《基于场景的工程方法》作者问答录
- 【JavaScript基础笔记】模块化、立即执行函数应用、闭包应用
- getparameter的使用
- mysql中in查询效率低的替代方法_一波骚操作,我把 SQL 执行效率提高了 10,000,000 倍...
- ​KDD 2019 | 用户视角看世界:腾讯提出ConcepT概念挖掘系统,助力推荐搜索
- hive mysql windows_Java-从MySQL到Hive导入,其中MySQL在Windows上运行,而Hive在Cent OS上运行(Horton Sandbox)...
- 运用范式的规范数据库设计的好处
- [面试] C++ 语法(一) —— 初始化列表的初始化顺序
- 后缀数组 倍增法详解
- html页面缩小布局乱了为什么啊_PPT页面总是太空?这4个方法,让你的PPT增加亿点点细节!...
- Python设计模式--策略模式
- 【动态规划】FatMouse's Speed
- 林燕妮: 一见杨过误终生
- matlab向后误差,matlab-误差棒
- 游戏3D美术设计就业前景如何?现在饱和了吗
- Java项目:基于ssm汽车配件管理系统(计算机毕业设计)
- Python Flask开发简单http api接口 示例
- 浪潮服务器bios怎么找回密码,服务器BIOS密码丢失解决方法
- linux 查看文件创建时间