Python爬虫学习二——Beautiful Soup库

Python爬虫学习二——Beautiful Soup库

  • Python爬虫学习二Beautiful Soup库
    • 简介
      • 1 标签树
      • 2 bs库基本元素
    • 使用bs
      • 1 小试牛刀
      • 2 标签树的遍历

1 简介

Beautiful Soup(以下简称bs)库是用于解析、遍历、维护“标签树”的python库,能够非常方便快捷友好的提取网页内容中感兴趣的部分,比如超链接、超链接文本等等。

1.1 标签树

简单来说,标签树就是由标签构成的复杂结构。杂乱无章的信息通过标记,形成一个个标签,再统一到一起,就形成了标签树。常用的标记语言有三种,xml、json和yaml,xml称为扩展标记语言,是在html基础上发展起来的通用标记语言,可扩展性好,但是较为繁琐,主要用于在Internet上进行信息交互和传递;json是javascript对象标记,适合程序处理,较xml简洁,适合于移动应用云端和节点的信息通信,无注释;yaml是yaml ain’t markup language,带有递归性质的命名方式,其信息无类型,文本信息比例最高,可读性好,适合于各类系统的配置文件,并且可以写注释,易读。下面以html为例介绍什么是标签树。
简单范例:

 
  <html>
    <head>
      <title>这是标题title>
    head>
    <body>
      <p class="title">Hello world!p>
    body>
  html>

html语言使用<>…

1.2 bs库基本元素

首先需要安装bs库,历史命名遗留问题,安装bs使用的是

pip install bs4

使用时也是用

from bs4 import BeautifulSoup

bs中共有5种基本元素,分别是Tag、Name、Attributes、NavigableString和Comment,说明如下:
Python爬虫学习二——Beautiful Soup库_第1张图片
在1.1中,html、head、title(不含class的title)、p等都是Name,class是Attributes、这是标题和Hello World!是NavigableString,第一行是Comment。

2 使用bs

2.1 小试牛刀

将范例存储为demo(去掉行号),再用bs分析它:

from bs4 import BeautifulSoup
soup = BeautifulSoup(demo, "html.parser")

其中,“html.parser”表示分析方式,也是默认参数,分析不同的标记语言使用不同的参数,这里不过多介绍。这样就将demo分析好了。我们来看一下分析结果:

print soup.p
>>> 

class="title">Hello world!p> soup.p.name >>> 'p' soup.p.attrs >>> {'class':'title'} soup.p.parent.name >>> 'body' soup.p.string >>> 'Hello World!'

2.2 标签树的遍历

标签树的遍历分为三种:下行遍历、上行遍历和平行遍历。首先给出遍历使用的函数
Python爬虫学习二——Beautiful Soup库_第2张图片
Python爬虫学习二——Beautiful Soup库_第3张图片
Python爬虫学习二——Beautiful Soup库_第4张图片
需要注意:上行遍历遍历所有先辈节点,包括soup本身,需要区别判断;平行遍历发生在同一个父节点下的各节点之间,不同父节点的子节点之间不存在平行遍历。

通过使用bs库,可以方便地提取网页内容中的感兴趣内容,如何提取感兴趣内容还需要认真分析网页源码,找到关键词,以自动提取。

你可能感兴趣的:(python爬虫)