信息标记


信息标记的三种形式

  • XML(eXtensible Markup Language)
  • YAML(YAML Ain’t Markup Language)
  • JSON(JaveScript Object Notation)

    XML

    使用标签标记信息的表达形式
    <people>
      <!--这是注释-->
      <firstname>Shan</firstname>
      <lastname>Ye</lastname>
      <address>
          <streetAddre>None</streetAddre>
          <city>Gui Lin</city>
          <zipcode>541004</zipcode>
      </address>
      <prof>boy</prof><prof>boring</prof>
    </people>

JSON

有类型键值对标记信息的表达形式

{
    "firstname": "Shan",
    "lastname" : "Ye",
    "address":
        {
            "streetAddre":"None",
            "city": "Gui Lin",
            "zipcode": "541004"
        }

}

YML

无类型键值对标记信息的表达形式

firstname: Shan
lastname: Ye
address:   #缩进表达所属关系
    streetAddre: None
    city: Gui Lin
    zipcode: 541004
prof:  #this is a comment
-boy     #并列关系
-boring

text: |     #整块数据
ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(简称ACM-ICPC或ICPC))
是由国际计算机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。
经过近40年的发展,ACM国际大学生程序设计竞赛已经发展成为全球最具影响力的大学生程序设计竞赛。赛事目前由IBM公司赞助。

'''
提取HTMl中的所有信息
(1)搜索到所有的<a>标签
(2)解析<a>标签格式,提取href后的链接内容
'''
import requests
from bs4 import BeautifulSoup

url = "http://python123.io/ws/demo.html"
r = requests.get(url)
demo = r.text

soup = BeautifulSoup(demo,"html.parser")
for link in soup.find_all('a'):
    print(link.get("href"))

基于bs4库的信息提取的一般方法

<>.find_all()方法

<>.find_all(name,attrs,recursive,string,**kwargs)
  • name: 对应标签名称的检索字符串
  • attrs:对应标签属性值的检索字符串,可标注属性检索
  • recursive:是否对子孙全部检索,默认为True
  • string:<>…</>字符串区域的检索字符串

soup.find_all(…)等价于soup(…)
.find_all(…)等价于(…)



扩展方法

方法 说明
<>.find() 搜索且只返回一个结果,同.find_all()参数
<>.find_parents() 在先辈节点中搜索,返回列表类型,同.find_all()参数
<>.find_parent() 在先辈节点中返回一个结果,同.find()参数
<>.find_next_siblings() 在后续平行节点中搜索,返回一个列表,同.find_all()参数
<>.find_next_sibling() 在后续节点中返回一个结果,用.find()参数
<>find_previous_siblings() 在前续平行结点中搜索,返回列表类型,同.find_all()参数
<>find.previous_sibling() 在前续节点中返回一个节点,同.find()参数


文章作者: ShanSan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ShanSan !
 上一篇
XXX XXX
2018-10-12 ShanSan
下一篇 
C++面向对象-4 C++面向对象-4
继承和派生 新类拥有原有类的全部属性为继承!原有类产生新类的过程为派生。 原有类称为基类,产生的新类称为派生类。http://www.dotcpp.com/course/cpp/200027.html 继承方式(派生权限) 公有继承
2018-10-11
  目录