Beautifulsoup库:

该库是python语言写的,主要功能是将html、xml格式的数据对象解析成“标签树”,并进行遍历和维护,即可以从网页抓取数据。

借鉴的html是妹子图网站的源代码http://www.meizitu.com/

安装

sudo apt-get install Python-bs4
pip install beautifulsoup4

导入模块

from bs4 import BeautifulSoup

创建对象

soup =BeautifulSoup(text,'html.parser')#前一个参数为要解析的文本,后一个参数为解析模型
# lxml的HTML解析器:BeautifulSoup(mk,'lxml')——pip install lxml
# lxml的XML解析器:BeautifulSoup(mk,'xml')——pip install lxml
# html5lib的解析器:BeautifulSoup(mk,'html5lib')——pip install html5lib

这里使用bs4的解析器。

解析后的四大对象类型

  1. Tag
  2. NavigableString
  3. BeautifulSoup
  4. Comment

(1)Tag

Tag 是HTML 中的一个个标签,是最基本的信息组成单元,分别用<>和</>表示开头和结尾。

Tag下又分为标签的名字和属性,分别用<tag>.name 、 <tag>.attrs来表示。比如下面的一个标签:

<img alt="妹子即便你不带我去哪,默默跟在" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/01/limg.jpg" width="64"/>

soup.img.name可得到img,soup.img.attrs得到{'src': 'http://mm.chinasareview.com/wp-content/uploads/2017a/07/01/limg.jpg', 'width': '64', 'alt': '妹子即便你不带我去哪,默默跟在', 'height': '64'}这样的字典。soup.img.attrs['src']可得到图片的链接http://mm.chinasareview.com/wp-content/uploads/2017a/07/01/limg.jpg。

print (soup.img.parent.name)#该标签的父标签的名字
#a
print (soup.img.parent.parent.name)#该标签的父标签的父标签的名字
#li

(2)NavigableString

标签内非属性字符串,<>...</>中的字符串,格式:<tag>.string。

在上个标签示例中,他会返回None。下面以一个title标签来展示:

<title>妹子图 - 清纯美女,可爱美女,美女图片</title>

很明显这个标签的属性会返回一个空字典{},name是title,soup.title.string可以得到妹子图 - 清纯美女,可爱美女,美女图片的字样。

(3)BeautifulSoup

BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性。

(4)Comment

Comment 对象是一个特殊类型的 NavigableString 对象,是标签内字符串的注释部分,以尖括号叹号表示注释开始:<! --This is a comment -->。

标签获取

根据表签名来获取所有符合的标签,返回一个列表。如soup('img')可得到如下:

[<img alt="妹子即便你不带我去哪,默默跟在" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/01/limg.jpg" width="64"/>, <img alt="Merry Christmas 圣诞的福利" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/08/01/limg.jpg" width="64"/>, <img alt="气质俏佳人,即便是小巷子也辣么" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/05/limg.jpg" width="64"/>, <img alt="送福利,祝大家2018年元旦快乐" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/08/02/limg.jpg" width="64"/>, <img alt="女神范十足!气质美女友希私房写" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/06/15/limg.jpg" width="64"/>, <img alt="能娶到打排球的女孩,简直就是走" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/17/limg.jpg" width="64"/>, <img alt="周末福利图,个个身材都超赞" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/09/limg.jpg" width="64"/>, <img alt="简直...不一样的可爱风,刮的你" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/08/limg.jpg" width="64"/>, <img alt="晚上拍照不美哒哒?看到这张图你" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/10/limg.jpg" width="64"/>, <img alt="做女人不管胖瘦美丑,最重要的是" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/06/13/limg.jpg" width="64"/>, <img alt="内涵图,为什么我遇不到这么好的" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/06/limg.jpg" width="64"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2018a/01/01/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/08/02/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/08/01/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/21/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/20/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/19/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/18/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/17/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/16/01.jpg" style="width:100%;"/>, <img src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/15/01.jpg" style="width:100%;"/>, <img alt="能娶到打排球的女孩,简直就是走" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/17/limg.jpg"/>, <img alt="超高颜值的同时不乏一丝性感,等" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/12/limg.jpg"/>, <img alt="这些完美翘臀真让人垂涎欲滴" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/16/limg.jpg"/>, <img alt="送福利,祝大家2018年元旦快乐" src="http://mm.chinasareview.com/wp-content/uploads/2017a/08/02/limg.jpg"/>, <img alt="张张令人血脉喷张,身材好到爆" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/18/limg.jpg"/>, <img alt="简直...不一样的可爱风,刮的你" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/08/limg.jpg"/>, <img alt="萌萌纯纯的,但你能从里面挑出哪" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/04/limg.jpg"/>, <img alt="Merry Christmas 圣诞的福利" src="http://mm.chinasareview.com/wp-content/uploads/2017a/08/01/limg.jpg"/>, <img alt="笑容是女人最美丽、最有效的武器" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/13/limg.jpg"/>, <img alt="妹子图重新开更:来一波美臀先" src="http://mm.chinasareview.com/wp-content/uploads/2018a/01/01/limg.jpg"/>, <img alt="周末福利图,个个身材都超赞" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/09/limg.jpg"/>, <img alt="美胸大作战,纸巾准备好" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/20/limg.jpg"/>]
print(tag.name),   #标签的名称
print(tag.attrs), #属性
print(tag.string) #标签内的文本显示
print(tag.get_text()) #获取标签内文本内容

搜索

用来查找标签元素:soup.find_all(name,attrs,string,**kwargs),返回一个列表类型的查找结果。

soup.find(name,attrs,string,**kwargs),直接返回满足的第一个结果。

(1)按标签查找

print (soup.find_all('img')[0]) #按字符串查询
#<img alt="妹子即便你不带我去哪,默默跟在" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/07/01/limg.jpg" width="64"/>
print (soup.find_all(re.compile("^img"))[0] ) #按正则表达式查询
print(soup.find_all(["a", "b"])[0]) #按列表查询
print(soup.find_all(True)[1]) #查询所有元素,第一个元素就是html元素,就是整个全文

(2)按属性查找

print (soup.find_all(alt="Merry Christmas 圣诞的福利")) #按属性值查询
#[<img alt="Merry Christmas 圣诞的福利" height="64" src="http://mm.chinasareview.com/wp-content/uploads/2017a/08/01/limg.jpg" width="64"/>, <img alt="Merry Christmas 圣诞的福利" src="http://mm.chinasareview.com/wp-content/uploads/2017a/08/01/limg.jpg"/>] print(soup.find_all(href=re.compile("#"))) #按属性值的正则表达式查询
print(soup.find_all(href=re.compile(".*index\.html"), target='_blank')) #按属性值列表查询
print(soup.find_all("a", class_="current")) #标签属性联合搜索,class 是 python 的关键词,所以加了_
print(soup.find_all(attrs={"class": "current"})) #搜索包含指定属性值的元素

(3)按文本查找

print(soup.find_all(text="首页"))  #按文本搜素,接受的参数与按标签搜索一样
print(soup.find_all("a", limit=2,recursive=False)) #以上所有搜索都可以用limit限定最大搜索到的数目,用recursive限定只搜索直接子节点

(4)按CSS选择器查找

print (soup.select("title"))#按名称
#[<title>妹子图 - 清纯美女,可爱美女,美女图片</title>]
print(soup.select('.current')) #按类名
print(soup.select('#headerImg')) #按id
print(soup.select('li .current')) #后代查询
print(soup.select("head > title")) #子标签查询
print(soup.select('a[class="current"]')) #属性查询

爬虫笔记(十四)——BeautifulSoup库的更多相关文章

  1. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  2. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...

  3. python爬虫学习之使用BeautifulSoup库爬取开奖网站信息-模块化

    实例需求:运用python语言爬取http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html这个开奖网站所有的信息,并且保存为txt文件和excel文件. 实 ...

  4. python爬虫学习(一):BeautifulSoup库基础及一般元素提取方法

    最近在看爬虫相关的东西,一方面是兴趣,另一方面也是借学习爬虫练习python的使用,推荐一个很好的入门教程:中国大学MOOC的<python网络爬虫与信息提取>,是由北京理工的副教授嵩天老 ...

  5. (C/C++学习笔记) 十四. 动态分配

    十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...

  6. 005 爬虫(requests与beautifulSoup库的使用)

    一:知识点 1.安装requests库 2.Brautiful soup 可以提供一些简单的,python式的函数来处理导航,搜索,修改分析树等功能. 她是一个工具箱,通过解析文档为用户提供需要抓去的 ...

  7. python之爬虫(八)BeautifulSoup库的使用

    上一篇文章的正则,其实对很多人来说用起来是不方便的,加上需要记很多规则,所以用起来不是特别熟练,而这节我们提到的beautifulsoup就是一个非常强大的工具,爬虫利器. beautifulSoup ...

  8. How tomcat works 读书笔记十五 Digester库 上

    Digester库 在前面的几个章节里,我们对tomcat里各个组件的配置完全是使用写硬编码的形式完成的. 如 Context context = new StandardContext(); Loa ...

  9. MySQL学习笔记十四:优化(1)

    SQL优化 1.查看各种SQL执行的频率 mysql> show status like 'Com_select';--Com_insert,Com_delete,connections(试图连 ...

  10. TCP/IP详解 笔记十四

    TCP/IP协议(二)  连接的建立与终止 tcpdump -S输出TCP报文的格式 格式: 源>目的:标志 (标志就是tcp头部).标识首字符意义如下: 例如:telnet 某服务的输出(包括 ...

随机推荐

  1. ng : File C:\Users\baron\AppData\Roaming\npm\ng.ps1 cannot be loaded because running

    一. Windos PowerShell 选择 管理员身份运行二.set-ExecutionPolicy RemoteSigned 然后更改权限为A 三.get-ExecutionPolicy 查看当 ...

  2. 深入理解java虚拟机第五部分高效并发

    volatile是java虚拟机提供最轻量级的同步机制. volatile两个特性:1,保证同步的变量对所有线程是可见的.虽然对所有线程是即时可见的,但是却不保证原子性,也就是不保证线程安全,比如对于 ...

  3. 2、用优化器使loss最小

    2.tf.train.AdamOptimizer()函数是Adam优化算法:是一个寻找全局最优点的优化算法,引入了二次方梯度校正. tf.train.AdamOptimizer.__init__( l ...

  4. 吴裕雄--天生自然 JAVASCRIPT开发学习: Break 和 Continue 语句

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. Android自定义View——彩色圆环统计图

      1.初始化变量 圆的粗细:圆环的大小. 标注:文字前面的圆点. 分配比例大小:由于需要计算圆环扫过的角度,计算方法使用:(比例/100)*360度,用百分比算出360度占用了多少,由于比例/100 ...

  6. Causal Corpus 事件因果关系语料统计

    Causal Corpus 事件因果关系语料统计 本文是对因果关系抽取领域数据库标注及开源情况的统计.除了对因果关系的标注,一些类似的语料也包含在内,从而为语料的使用提供灵活性,可以根据不同的目标选取 ...

  7. 网页嵌 activeXForm 中显示fastReport

  8. 游戏引擎UE4详解!

    UE4 的全名是 Unreal Engine 4,中文译为“虚幻引擎4”.UE4 是一款由 Epic Games 公司开发的开源.商业收费.学习免费的游戏引擎.那你了解UE4吗?如果还不清楚,就一起来 ...

  9. import datetime

    import datetimenow = datetime.datetime.now()print('当前时间:',now) 当前时间: 2019-11-21 11:11:58.093122

  10. Python语言基础与应用 (P23)上机练习:容器类型操作(未完待续)

    上机练习:容器类型操作〉 列表.元组基本操作+, *, len(), [], in Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 ...