BeautifulSoup 库 & 信息标记与提取方法

版权声明:猪小哥 https://blog.csdn.net/food_for_thought/article/details/83109549
from bs4 import BeautifulSoup
import requests

soup = BeautifulSoup('<p>data</p>', 'html.parser')


'''
===BeautifulSoup类的基本元素 
<p class=“title”> … </p>
基本元素            说明 
Tag             标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾 
Name            标签的名字,<p>…</p>的名字是'p',格式:<tag>.name 
Attributes      标签的属性,字典形式组织,格式:<tag>.attrs 
NavigableString 标签内非属性字符串,<>…</>中字符串,格式:<tag>.string 
Comment         标签内字符串的注释部分,一种特殊的Comment类型
'''

'''
===bs4库的遍历功能
.contents .children .descendants  下行遍历
.parent .parents  上行遍历
.next_sibling .previous_sibling .next_siblings .previous_siblings  平行遍历
'''

'''
            HTML基本格式
               <html>
<head>                      <body>
<title>             <p>             <p>
               <b>      <a>      <a>    <>…</>
        构成了所属关系,形成了标签的树形结构
'''


# ===信息标记与提取方法

'''
===三种形式

==XML 
<person> 
    <firstName>Jiawei</firstName> 
    <lastName>Yan</lastName> 
    <address> 
        <streetAddr>江夏区藏龙岛</streetAddr> 
        <city>武汉市</city> 
        <zipcode>430205</zipcode> 
    </address> 
    <prof>Finance</prof><prof>Innovation</prof> 
</person>

==JSON 
{
“firstName”:“Jiawei”, 
“lastName” :“Yan”, 
“address”  :{ 
                “streetAddr” :“江夏区藏龙岛”, 
                “city”       :“武汉市”, 
                “zipcode”    :“430205”
               }, 
“prof”     :[ “Finance”,“Innovation”]
}

==YAML
firstName:Jiawei 
lastName :Yan 
address : 
    streetAddr :江夏区藏龙岛 
    city      :武汉市 
    zipcode    :430205 
prof    : 
‐Finance 
‐Innovation


===比较
XML  最早的通用信息标记语言,可扩展性好,但繁琐   Internet上的信息交互与传递
JSON 信息有类型,适合程序处理(js),较XML简洁     移动应用云端和节点的信息通信,无注释
YAML 信息无类型,文本信息比例最高,可读性好      各类系统的配置文件,有注释易读
'''

'''
===方法

方法一:完整解析信息的标记形式,再提取关键信息 
XML JSON YAML
需要标记解析器,例如:bs4库的标签树遍历
优点:信息解析准确 
缺点:提取过程繁琐,速度慢

方法二:无视标记形式,直接搜索关键信息 
搜索
对信息的文本查找函数即可
优点:提取过程简洁,速度较快 
缺点:提取结果准确性与信息内容相关
'''

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

for link in soup.find_all('a'):
    print(link.get('href'))

猜你喜欢

转载自blog.csdn.net/food_for_thought/article/details/83109549