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

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

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

    日拱一卒|数据挖掘015

    阅读本文前建议先浏览:

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

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

    二、使用BeautifulSoup

    (二)遍历文档树

    遍历文档树,即从根节点 html 标签开始遍历,直到找到目标元素为止,遍历的一个缺陷是,如果你要找的内容在文档的末尾,那么它要遍历整个文档才能找到它,速度上就慢了。因此还需要配合第二种方法:搜索文档树。

    1

    以下面HTML文本为例


    2

    获取标签节点可以直接通过 .标签名方式获得

    1.下行遍历

    3 4 5 6

    2.上行遍历

    7 8 9 10

    遍历所有先辈节点,包括soup本身,所以要区别判断

    3.平行遍历

    11

    遍历文档树的另一个缺点是只能获取到与之匹配的第一个子节点,例如,如果有两个相邻的 p 标签时,第二个标签就没法通过.p的方式获取,这是需要借用 next_sibling 属性获取相邻的节点。

    12 13 14

    需要注意:平行遍历发生在同一个父节点下的各节点间

    15

    小结

    16

    (三)搜索文档树

    搜索文档树是通过指定标签名来搜索元素,还可以通过指定标签的属性值来精确定位某个节点元素,最常用的两个方法就是 find 和 find_all。

    17 18
    19

    find 方法跟 find_all 类似,唯一不同的地方是,它返回的单个 Tag 对象而非列表,如果没找到匹配的节点则返回 None。如果匹配多个 Tag,只返回第0个。

    注意:

    find 和 find_all。这两个方法在 BeatifulSoup 和 Tag 对象上都可以被调用。

    20 21

    补充:获取标签里面内容

    获取标签里面内容,除了可以使用 .string 之外,还可以使用 get_text 方法,不同的地方在于前者返回的一个 NavigableString 对象,后者返回的是 unicode 类型的字符串。实际场景中我们一般使用 get_text 方法获取标签中的内容。

    22

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

    相关文章

      网友评论

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

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