【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup

作者 : icbug 发布时间: 2020-08-28 文章热度:156 共3250个字,阅读需9分钟。 本文内容有更新 手机浏览
  • Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式
    • 2)如何安装?
  • 首先查看电脑中有没有BeautifulSoup工具包:pip show beautifulsoup4
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
  • 直接安装:pip install beautifulsoup4
  • 如何导入BeaitufulSoup?
    • from bs4 import BeautifulSoup
      • 3)快速开始 - 我们用官网的案例试试
        设置变量,输入以下html内容

        <html><head><title>The Dormouse\'s story</title></head><body><p class=title><b>The Dormouse\'s story</b></p><p class=story>Once upon a time there were three little sisters; and their names were<a href=[http://example.com/elsie](http://example.com/elsie) class=sister id=link1>Elsie</a>,<a href=[http://example.com/lacie](http://example.com/lacie) class=sister id=link2>Lacie</a> and<a href=[http://example.com/tillie](http://example.com/tillie) class=sister id=link3>Tillie</a>;and they lived at the bottom of a well.</p><p class=story>...</p>
  • 用BeautifulSoup解析这段代码,得到一个BeautifulSoup的对象<class \'bs4.BeautifulSoup\'>【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
  • 直接输出【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
  • 解析标签
    • 查找title标签【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 输出title标签的名字【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 查找p标签【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 输出p标签中的属性class的内容【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 查找第一个a标签【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 查找所有a标签【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
  1. 2、什么是Xpath?
    • 1)概念
      • Xpath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言
      • Xpath也可以用于定位html的标签
      • Xpath就像是一个地址,可以找到网页代码里你需要的数据
    • 2)如何在网页中找到xpath路径?
      • 以豆瓣网为例:https://book.douban.com/tag/%E7%BB%8F%E5%85%B8
      • 在开发者模式中,可以找到标签位置后,右键copy xpath:
        • //*[@id=content]/h1【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
        • //*[@id=subject_list]/ul/li[1]/div[2]/p【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
        • //*[@id=subject_list]/ul/li[2]/div[1]/a/img【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 3)xpath基础
      • html基本标签
      • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
        • xpath就是在定位html的标签位置
          • eg: //body/div[8]/div[1]/div[3]/div[1]/div[1]/div[3]/ul[1]/li
      • xpath基本语法
        • / 从根节点选取
        • // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
        • @ 选取属性
          • 通配符
            • *:匹配任何元素节点
            • @*:匹配任何属性
            • //*:选择文档中的所有元素节点
            • //ul/*:选择ul元素中的所有子节点
            • //a[@*]:选择所有带属性的a节点
      • 完整路径:是从根节点开始,不常用
        • /html/body/div[2]/div[2]/div[2]/ul/li[1]/img
      • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • 相对路径:一般会使用class或者id定位
        • //ul[@class=toturial-list video-list]/li/img
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • 选择属性
        • //*[@id=content]/h1
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • 选择位置
        • //*[@id=subject_list]/ul/li[1]
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 4)xpath工具包安装:lxml
      • 首先查看电脑中有没有lxml工具包:pip show lxml
      • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • 直接安装:pip install lxml
    • 5)BeautifulSoup如何调用xpath解析器
      • BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml
      • BeautifulSoup支持多种解析器
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • 如何使用?
      • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
  2. 3、网页标签解析
    • 定义变量,解析代码
      html案例代码​\The Dormouse\'s story

      The Dormouse\'s story

      Once upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well.

      ...

      \​

    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 1)文档树格式化输出
      • soup.prettify()
        • 以Unicode编码输出,每个XML/HTML标签都独占一行
      • 示例
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 2)HTML的3个基本要素识别:标签、属性、元素
      • ① 标签
        • soup.标签名
          • 首先要知道有这样找到标签的方法
          • 后续主要用.find() / .find_all()来寻找
        • soup.标签名.name :返回该标签的名字
        • 示例
          • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • ② 属性
        • soup.标签名.attrs
          • 返回属性,对象类型为字典
        • soup.标签名[\'属性名\']
          • 返回该标签的某属性
        • 示例
          • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • ③ 元素
        • soup.标签名.text
          • 直接输出字符串str
          • soup.标签名.text 与 soup.标签名.string → 选择前者
            html案例代码\'\'\'

            some text

            more text even

            more text

            \'\'\'

            • 后者在tag 包含了多个子节点时,.string 方法无法确定应该调用哪个子节点的内容, .输出结果有可能是 None
            • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
        • 示例
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
  3. 4、搜索文档树
    • 核心方法:find() 和 find_all()
      html案例代码​\The Dormouse\'s story

      The Dormouse\'s story

      Once upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well.

      ...

      \​

    • 1)find(name , attrs, ...)
      • 寻找标签
      • 可以通过属性寻找
        • 注意:由于class在Python中是内置语句,所以class的属性应该加下划线:class_
      • 可以通过.text直接输出元素
      • 示例
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 2)find_all( name , attrs , ...)
      • 寻找所有tag子节点标签
      • 可以寻找多个标签
      • 示例
        • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
  4. 5、遍历文档树
    • 1)节点关系
      • 子(Children):一个Tag可能包含多个字符串或其它的Tag,这些都是这个Tag的子节点
      • 父(Parent):每个tag或字符串都有父节点
      • 兄弟(Sibling):同一个元素的子节点可以成为兄弟节点
      • 示例
        • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
          【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
          【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 2)子节点
      html代码案例\'\'\'The Dormouse\'s story

      The Dormouse\'s story

      Once upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well.

      ...

      \'\'\'

      • .contents
        • 将tag的子节点以列表的方式输出
        • 示例
          • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • .children
        • 生成器,可以对tag的子节点进行循环、
        • 示例
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      • .descendants
        • .descendants 属性可以对所有tag的子孙节点进行递归循环
        • 包括子节点,及子节点的子节点(子孙节点)
        • 示例
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 3)父节点
      • .parent
        • 获取某个元素的父节点
      • .parents
        • 递归得到元素的所有父辈节点
      • 示例
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
    • 4)兄弟节点
      html代码案例text1text2

      • .next_sibling 和 .previous_sibling
        • 查询兄弟节点
      • .next_siblings 和 .previous_siblings
        • 对当前节点的兄弟节点迭代输出
      • 示例
    • 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客
      【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup-icbug创客

常见问题FAQ

本站资源是否全部免费?
本站文章和普通速度下载资源免费,高速下载资源和讲解视频需要成为SVIP才能查看哦!
本站采用标准 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明!
icbug创客 » 【爬虫基础】网页信息解析方法:Xpath与BeautifulSoup

1 评论

  1. 那些坚定决心的人们,会展现出好脸色。

发表评论

CAPTCHAis initialing...