美文网首页爬虫小小白
关于爬虫,你需要知道的BeautifulSoup(一)

关于爬虫,你需要知道的BeautifulSoup(一)

作者: 凡有言说 | 来源:发表于2019-05-23 12:24 被阅读7次

    日拱一卒|数据挖掘014

    本篇推送涉及的代码链接:https://github.com/piyixiaeco/daily-code/blob/master/Beautiful%20Soup.ipynb

    数据爬下来,大部分情况是 HTML 文本,也有少数是基于 XML 格式或者 Json 格式的数据,要想正确处理这些数据,你要熟悉每种数据类型的解决方案,比如 JSON 数据可以直接使用 Python自带的模块 json,对于 HTML 数据,可以使用 BeautifulSoup、lxml 等库去处理,对于 xml 数据,除了可以使用 untangle、xmltodict 等第三方库(Python之禅刘志军)。

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库,通过 BeautifulSoup,只需要用很少的代码就可以提取出 HTML 中任何感兴趣的内容,此外,它还有一定的 HTML 容错能力,对于一个格式不完整的HTML 文档,它也可以正确处理。

    Beautiful Soup官方文档

    一、安装

    首先pip install beautifulsoup4安装requests库

    接下来导入beautifulsoup4并做个小测试


    1 2

    二、使用BeautifulSoup

    仅用两行代码就可以使用BeautifulSoup

    from bs4 import BeautifulSoup
    soup = BeautifulSoup('<p>data</p>', 'html.parser')

    构建一个 BeautifulSoup 对象需要两个参数:

    • <p>data</p> 解析的 HTML 文本字符串
    • html.parser 告诉 BeautifulSoup 使用哪个解析器来解析 HTML
    3

    Beautiful Soup库,也叫beautifulsoup4 或 bs4,约定引用方式如下,即主要是用BeautifulSoup类

    from bs4 import BeautifulSoupimport bs4

    HTML 标签

    在详细介绍BeautifulSoup之前,我们先来看看有关HTML标签的知识

    HTML 是一个树形组织结构

    Beautiful Soup库是解析、遍历、维护“标签树”的功能库

    4
    • 它由很多标签(Tag)组成,比如 html、head、title等等都是标签
    • 一个标签对构成一个节点,比如 <html>...</html>是一个根节点
    • 节点之间存在某种关系,比如 h1 和 p 互为邻居,他们是相邻的兄弟(sibling)节点
    • h1 是 body 的直接子(children)节点,还是 html 的子孙(descendants)节点
    • body 是 p 的父(parent)节点,html 是 p 的祖辈(parents)节点
    • 嵌套在标签之间的字符串是该节点下的一个特殊子节点,比如 “hello, world” 也是一个节点,只不过没名字。

    关于HTML更多可以看关于爬虫,你需要知道的HTML知识

    5

    如上图,标签名称为p

    HTML文档,标签树,BeautifulSoup类三者是等价的,即BeautifulSoup对应一个HTML/XML文档的全部内容

    6

    (一)基本元素

    下面介绍BeautifulSoup类的基本元素:


    7

    1.Tag标签

    8 9

    任何存在于HTML语法中的标签都可以用soup.<tag>访问获得,如上是获取a标签的信息。当HTML文档中存在多个相同<tag>对应内容时,soup.<tag>返回第一个。

    2.Name 名字

    10 11

    每个<tag>都有自己的名字,通过<tag>.name获取,字符串类型。

    3.Attributes 属性

    12
    13

    一个<tag>可以有0或多个属性,字典类型

    4.NavigableString 标签内非属性字符串

    14 15

    NavigableString可以跨越多个层次

    5.Comment 注释

    16 17

    Comment是一种特殊类型

    小结:五大类基本元素

    18

    下一篇推文将介绍基于bs4的HTML内容遍历方法和搜索方法

    参考资料:
    1.Python爬虫知识点梳理
    2.HTML文本解析库BeautifulSoup
    3.Python网络爬虫与信息提取

    相关文章

      网友评论

        本文标题:关于爬虫,你需要知道的BeautifulSoup(一)

        本文链接:https://www.haomeiwen.com/subject/edzfzqtx.html