网页信息解析方法(一):利用第三方库BeautifulSoup库来处理

通过上一篇requests库的介绍Python爬虫基础—requests库,了解了使用Python中的第三方库requests库来获取url页面中的信息,那么获取成功后便需要对网页信息进行解析,即筛选页面中我们需要的信息、数据并提取出来。而爬取页面的总流程可以描述为:获取页面—>解析页面,筛选和提取目标数据信息—>保存数据信息到本地。本文将对第二个环节——解析网页,筛选和提取目标数据信息简单介绍,这一步是需要在网页的源代码中完成,而实现这一功能主要有两种方法:一是利用第三方库BeautifulSoup库来处理;二是利用正则表达式来处理。

首先了解下解析网页,我们需要查看要爬取的网页的源代码,明确网页的整体架构,确定所要爬取的信息的存放位置,信息包含在什么标签中,为下一步的提取做好准备。其次是筛选和提取,在网页源代码中,你会发现有很多相同的标签,但是这些相同的标签包含的信息并不都是我们需要的,这个时候可以通过增加一些限定条件来筛选、提取信息,选择不同的方法来筛选和提取:比如BeautifulSoup库是通过相对路径来进行提取的,而正则表达式更多的是通过表达式规则来进行的。这部分是最重要的,它决定着你能否按照要求爬取想要的数据。最后是把数据保存到本地,后面再加以介绍,下面将介绍解析网页,筛选和提取目标信息数据的第一种方法——利用第三方库BeautifulSoup库来处理。

BeautifulSoup库可以用一句话理解为解析、遍历和维护标签树的功能库。它处理高效,支持多种解析器。

官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

BeautifulSoup库的安装(基于Windows操作系统)

      按下win+R键,输入cmd,打开命令窗口,输入pip install beautifulsoup4,按下enter键即可。

测试:

      #导入BeautifulSoup库,执行不报异常则为安装成功。

      >>>import bs4   #bs4是python默认的beautifulsoup4的简写

应用:

import requests
from bs4 import BeautifulSoup  
#BeautifulSoup类其实是Beautiful Soup库(bs4库)中的一个类,是解析网页用的最多的一个类。

url='http://www.baidu.com'
r=requests.get(url)
r.encoding=r.apparent_encoding
r.text

运行后输出(部分):

          

运用BeautifulSoup类:

import requests
from bs4 import BeautifulSoup  

url='http://www.baidu.com'
r=requests.get(url)
r.encoding=r.apparent_encoding

html=r.text
soup=BeautifulSoup(html,'html.parser')
'''
括号中的 html 是要解析的对象,即response响应的文本内容,而 html.parser 是BeautifulSoup库中自带的解析html的方法工具。
'''
print(soup.prettify())  #让代码友好的输出,对标签树的包含关系一目了然。

运行后输出(部分):

            

先对上文提到的解析器用法介绍下:

解析器 使用方法 条件
bs4的HTML解析器 BeautifulSoup(解析对象,'html.parser') 安装bs4库
lxml的HTML解析器 BeautifulSoup(解析对象,'lxml'') pip install lxml
lxml的xml解析器 BeautifulSoup(解析对象,'xml') pip install lxml
html5lib的解析器 BeautifulSoup(解析对象,'html5lib') pip install html5lib

其次什么是标签树呢?形如下面的就是标签树,一般情况下,都是由多个成对的尖括号组成。

<p id="lt">

      <a href="http://www.baidu.com">

       百度

      </a>

      <a href="http://www.baidu.com">

       Baidu

      </a>

</p>

BeautifulSoup库包含的基本元素

Tag 标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾;

Name 标签的名字,<p>…</p>的名字是‘p’,格式:<tag>.name;

Attributes 标签的属性,字典形式组织,格式:<tag>.attrs;

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

Comment 标签内字符串的注释部分,一种特殊的Comment类型。

例子:

<a class="eedback" href="http://www.baidu.com/">

       意见反馈

</a>

在这个简易标签树中,<a ...>...</a>这一个整体称为标签Tag;a 即为标签名;class="feedback"和href="http://www.baidu.com/" 是标签的两个属性;意见反馈 则为标签的非属性字符串。

这是关于bs4库的简单使用和基本元素,下一篇文章简述基于bs4库的HTML内容遍历。

发布了19 篇原创文章 · 获赞 2 · 访问量 2196

猜你喜欢

转载自blog.csdn.net/xiaoyeren_ITRoad/article/details/104400087
今日推荐