Python爬虫:信息的标记与提取

作者: 杜王丹 | 来源:发表于2017-06-23 09:47 被阅读67次

    HTML的信息标记

    HTML通过预定义的<>...</>标签形式组织不同类型的信息,如文本、图像、声音、视频。

    信息标记的三种形式

    XML、JSON、YAML

    信息标记的作用

    • 标记后的信息可形成信息组织结构,增加了信息维度
    • 标记的结构与信息一样具有重要价值
    • 标记后的信息可用于通信、存储或展示
    • 标记后的信息更利于程序理解和运用

    XML:

    Extensible Markup Language,是一种用于标记电子文件使其具有结构性的标记语言,被设计用来传输和存储数据。

    简单来说,XML通过标签形式来构建所有的信息。

    • <name> ... </name>,当标签内有内容时,用一对标签来表达该信息
    • <name />,无内容时,用一对尖括号来表达
    • <!‐‐ ‐‐>,增加注释

    JSON:

    JavaScript Object Notation,即:JS 对象标记。是存储和交换文本信息的语法,类似XML,但比XML更小、更快,更易解析。

    一般来讲,JSON格式用在程序对接口处理的地方,是有数据类型的键值对。

    • “key” : “value”,单键对应单值
    • “key” : [“value1”, “value2”] ,单键对应多值,用中括号表示
    • “key” : {
      “value1” : “value2”,
      “value1” : “value2”
      },键值对嵌套使用,用大括号表示

    YAML:

    Yet Another Markup Language,这种语言强调以数据做为中心;类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。

    YAML是无类型的键值对。

    • key :
      key1 : value1
      key2 : value2,缩进形式表示从属关系
    • key : # Comment
      ‐value1
      ‐value2,其中#表示注释,-表示并列关系
    • key : |
      value,用 | 来表示整块数据,键值对之间可以嵌套

    三种信息标记形式对比

    信息提取的方法

    解析信息的标记形式,再结合搜索方法,提取关键信息,需要标记解析器及文本查找函数。

    例如:提取HTML中的所有URL链接

    思路:搜索到所有a标签;解析a标签格式,提取href后的链接内容。

    import requests
    from bs4 import BeautifulSoup
    
    res = requests.get('http://www.pmcaff.com/site/selection')
    soup = BeautifulSoup(res.text,'lxml')
    
    for link in soup.find_all('a'):
        print(link.get('href'))
    
    # soup.find_all(...)也可简写为soup(...);同样,标签<tag>.find_all(...)方法也可简写为<tag>(...)
    

    这里使用到了find_all()方法,上面代码括号内的a为检索的标签名称。

    操作环境:Mac,Python 3.6,PyCharm 2016.2
    参考资料:中国大学MOOC课程《Python网络爬虫与信息提取》

    相关文章

      网友评论

        本文标题:Python爬虫:信息的标记与提取

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