五、信息標記與查找
一、信息標記的四種形式
信息標記為了是我們更加了解信息真實的含義,比如我們給北京理工大學標記一個name表明它是一個名字,給北京市海淀區標記一個addr表明它是一個地址
●標記後的信息可形成信息組織結構,增加了信息維度
●標記後的信息可用於通信、存儲或展示
●標記後的信息可用於通信、存儲或展示
●標記後的結構與信息一樣具有重要價值
●標記後的信息更利於程序理解和運用
①XML:eXtensible Markup Language
中文:擴展標記語言
採用以標籤為主的來構建表達信息,比如:
<img scr="china.jpg" size="10">…</img>
img是標籤的name,scr="china.jpg" size="10"是標籤的屬性,用鍵值對來表示,與HTML非常相似
空元素(省略號部分沒有內容)的縮寫形式:
<img scr="china.jpg" size="10"/>
注釋書寫形式:<!--This is a comment, very useful -->
備註:XML是基於HTML格式發展而來的一種通用信息表達形式,XML通過標籤形式來表達信息,最早的通用信息標記語言,可擴展性好,但繁瑣;互聯網上信息交互與傳遞的主要形式。
②JSON:JavaScript Object Notation
用有類型的鍵值對表達信息的標記形式
"name":"北京理工大學"
如果鍵或者值是數字則直接寫數字,當值的部分有多個值的時候用數組表達,如:
"name":["北京理工大學","延安自然科學院"]
鍵值對可以嵌套使用,如:
"name":{
"newName":"北京理工大學",
"oldName":"延安自然科學院"
}
備註:信息有類型適合程序處理(js),較XML簡潔;移動應用雲端和節點的信息通信,無注釋,用在程序對介面處理的地方。
③YAML:YAML Aint Markup Language
用無類型的鍵值對表達信息的標記形式,如:
name:北京理工大學
所屬關係表達:
name:
newName:北京理工大學
oldName:延安自然科學院
用-表達並列關係,如:
name:
-北京理工大學
-延安自然科學院
用|表示整塊信息#表示注釋
text:| #學校介紹
北京理工大學創建於1940年,前身是延安自然科學院,是中國共產黨創辦的第一所理工大學……
備註:信息無類型,文本信息比例最高,可讀性好;各類系統的配置文件,有注釋易讀。
④HTML:HyperText Markup Language
超文本(圖片、音頻、視頻)標記語言,它是Internet上組織信息的主要形式,它將圖片、音頻、視頻等超文本信息嵌入到文本信息當中,HTML通過預定義的<>……<>標籤形式組織不同類型的信息,它不是通用信息標記語言,以上三種為通用信息標記語言
二、信息提取的一般方法
方法一:完整解析信息的標記形式,再提取關鍵信息。
方法二:無視標記形式,直接搜索關聯信息。
最好的方法是將二者融合
實例:提取url中的所有鏈接
思路:1)搜索到所有a標籤2)解析<a>標籤格式,提取href後的鏈接內容
from bs4 import BeautifulSoup
soup = BeautifulSoup(demo, "html.parser")
for link in soup.find_all(a):
print(link.get(href))
返回略
三、基於bs4庫的HTML內容查找方法
import requestsfrom bs4 import BeautifulSoupr = requests.get("https://python123.io/ws/demo.html")demo = r.text
soup = BeautifulSoup(demo,html.parser)
soup.find_all(a)
以列表類型返回所有的a標籤
find_all方法
還有其他七種find方法:推薦閱讀:
※回顧一個月的爬蟲學習
※愛奇藝人物信息scrapy-redis
※初識Scrapy,在充滿爬蟲的世界裡做一個好公民
※python中 if-else 與 try-except的轉換 與while 與 whileTrue-try-except的轉換
※八、示例