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