Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 
它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。

安装 Beautiful Soup
 如果你安装了python3,可以在windows的命令行CMD运行下面命令
pip3 install BeautifulSoup4

安装解析器
 Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml .在windows的命令行CMD,可以选择下列方法来安装lxml
pip3 install lxml 
 下表列出了主要的解析器,以及它们的优缺点:

解析器 使用方法 优势 劣势
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格式的文档
  • 速度慢
  • 不依赖外部扩展

具体可以参考文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/#id15 

推荐使用lxml作为解析器,因为效率更高. 在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib, 因为那些Python版本的标准库中内置的HTML解析方法不够稳定.
 使用BeautifulSoup及解析器lxml解析源代码,能够得到一个 BeautifulSoup 的对象,并能按照标准的格式的结构输出。

看一下下面的例子

url = requests.get('http://www.xingmeng365.com/articles.asp?id=7')
url.encoding = 'gb2312'
html_doc = url.text
soup = BeautifulSoup(html_doc,"lxml")

其中url=requests.get('链接'),通过request库,获取源代码,然后通过encoding = 'gb2312'转换格式
html_doc = url.text将源代码转换为文件,然后通过BeautifulSoup及解析器lxml,得到一个 BeautifulSoup 的对象,并能按照标准的格式的结构输出。

Beautiful Soup三种常见用法

1) 搜索tag:

print(soup.head)                 #获取头部
print(soup.title)                #获取标题
print(soup.h1)                   #获取h1标签
print(soup.title,soup.h1)        #获取title和h1 find(list)

打印出来的内容:

<title>性感女神王雨纯黑色内衣写真妩媚迷人(1/13)_性感美女_星梦365</title>
<h1>性感女神王雨纯黑色内衣写真妩媚迷人</h1>

2) 搜索属性(attrs):

print(soup.find(id='link3'))     #获取id为link3的标签

3) 搜索文字(text):

print(soup.title.getText())      #获取title标签的文字内容
print(soup.h1.get_text())        #获取第h1标签的文字内容
print(soup.p.get_text())         #获取p标签的文字内容
print(soup.span.get_text())      #获取span标签的文字内容

打印出来的内容:

性感女神王雨纯黑色内衣写真妩媚迷人(1/13)_性感美女_星梦365
性感女神王雨纯黑色内衣写真妩媚迷人

getText()或者get_text()都是获取属性的文字内容。

4)循环获取内容:

#循环获取所有页面链接
for link in soup.find_all('a'):print(link.get('href'))#循环获取页面所有图片链接
for link in soup.find_all('img'):print(link.get('src'))#循环获取页面所有符合要求的图片链接
for link in soup.find_all('img'):if "/upload/image" in link.get('src'):print(link.get('src'))

articles.asp?id=7&mm=2
articles.asp?id=790
articles.asp?id=7&mm=2
articles.asp?id=371
articles.asp?id=420
articles.asp?id=278
articles.asp?id=391
articles.asp?id=102

/images/logo.png
/upload/image/20170811/20170811210545754575.jpg
/upload/Smallpic/20179232057110.jpg
/upload/Smallpic/20171061957350.jpg
/upload/Smallpic/2017962036430.jpg
/upload/Smallpic/201792805460.jpg
/upload/Smallpic/20178161949370.jpg

/upload/image/20170811/20170811210545754575.jpg

以上就是我们常用的一些方法,具体更复杂的方法可以参考官方文档。

【Python爬虫】BeautifulSoup4 库的一些用法相关推荐

  1. Python爬虫扩展库scrapy选择器用法入门(一)

    关于BeutifulSoup4的用法入门请参考Python爬虫扩展库BeautifulSoup4用法精要,scrapy爬虫案例请参考Python使用Scrapy爬虫框架爬取天涯社区小说"大宗 ...

  2. Python爬虫||BeautifulSoup4库-以小猪短租为例

    由于上次的文章被同学吐槽了,正则表达式过于麻烦,那就用BeautifulSoup库吧,比正则表达式简单太多了!只需要简单的几条语句,即可完成网页中某个元素的提取.他是python的一个HTML或者XM ...

  3. 【python】python爬虫requests库详解

    1.安装:pip install requests 简介:Requests是一个优雅而简单的Python HTTP库,与之前的urllibPython的标准库相比,Requests的使用方式非常的简单 ...

  4. Python爬虫1.4 — requests高级用法教程

    Python爬虫1.4 - requests高级用法教程 综述 设置请求头(headers) 设置代理服务器IP(proxy) Cookies(Session) requests.Session() ...

  5. Python爬虫4.4 — selenium高级用法教程

    Python爬虫4.4 - selenium高级用法教程 综述 Headless Chrome 设置请求头 设置代理IP 常用启动项参数options设置 Cookie操作 selenium设置coo ...

  6. python爬虫之PyQuery的常用用法

    安装依旧很简单pip install pyquery,对于pycharm的安装看这篇pycharm安装第三方库 首先我们定义一个HTML文本段作为下边的例子 <html><head& ...

  7. 已解决(Python爬虫requests库报错 请求异常SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool

    成功解决(Python爬虫requests库报错 请求异常,SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool(host= ...

  8. Python爬虫——Requests 库基本使用

    文章目录 Python爬虫--Requests 库基本使用 1.Requests简介和下载 2.Requests 库基本使用 Python爬虫--Requests 库基本使用 1.Requests简介 ...

  9. Python爬虫基础库(RBX)的实践_田超凡

    转载请注明原作者:田超凡 20190410 CSDN博客:https://blog.csdn.net/qq_30056341# Python爬虫基础库RBX指的是:Requests Beautiful ...

  10. Python 爬虫 xpath 数据解析基本用法

    Python 爬虫 xpath 数据解析基本用法 1. 基本语法 1.1 解析 html 语法 1.2 获取标签 1.3 获取标签中的内容 1.4 获取标签中的属性 1.5 通过内容寻找结点 2. 实 ...

最新文章

  1. 傅里叶变换才是本质?谷歌这项研究GPU上快7倍、TPU上快2倍
  2. JavaScript 事件入门知识
  3. 京东宣布收购拇指阅读,具体金额未披露
  4. Hibernate延时加载
  5. [html] canvas透明度是0.6的矩形和透明度是0.2的矩形叠加到一起,透明度是多少
  6. 网络摄像头转usb接口_Arduino + USB Host Sheild 实现USB鼠标转PS/2接口
  7. 女孩子适合学习前端开发吗?
  8. ssh-keygen的使用方法及配置authorized_keys两台linux机器相互认证
  9. 20190930每日一句
  10. 百度前员工因内网发布“女优一览表”被辞退,自诉:想转鉴黄师
  11. COPYPASTE: AN AUGMENTATION METHOD FOR SPEECH EMOTION RECOGNITION -论文阅读
  12. ​微信公众平台用户信息相关接口调整通知2021-09-27​
  13. 云-腾讯云:实时音视频
  14. 大数据流处理的一致性问题与lambda架构优缺点
  15. 区块链2.0以太坊漫谈(3)
  16. 美丽的夕阳(小孩文章)
  17. 云虚拟主机、云服务器、VPS三者有什么区别?
  18. 如何提取视频中的音频?自用方法介绍
  19. 《淘宝店铺经营管理一册通》一一1.1 宝贝标题优化
  20. 计算机输入法入门,电脑入门——第章 学习中文输入法.doc

热门文章

  1. 断网情况下安装python_断网环境下利用pip安装Python离线安装包
  2. matlab怎么求hadamard,hadamard matlab
  3. mysql内置加密函数_MySQL数据库内置加密函数总结
  4. 计算机IP为什么只有255,为什么电脑IP地址最大值是255?
  5. 10天时间做出php,php 最近10天的所有日期
  6. 排序算法之--桶排序(桶,像桶一样的排序,听起来很有趣哦0。0)
  7. 利用DHT22和Arduino测量温湿度并显示在串口和OLED显示屏上
  8. php 取经纬度,php根据地址获取百度地图经纬度的实例方法
  9. java对象怎么创建_java对象是怎么创建出来的
  10. 基于Java+SpringBoot+vue+element实现前后端分离牙科诊所管理系统详细设计