五、信息標記與查找

一、信息標記的四種形式

信息標記為了是我們更加了解信息真實的含義,比如我們給北京理工大學標記一個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方法www.crummy.com

還有其他七種find方法:


推薦閱讀:

回顧一個月的爬蟲學習
愛奇藝人物信息scrapy-redis
初識Scrapy,在充滿爬蟲的世界裡做一個好公民
python中 if-else 與 try-except的轉換 與while 與 whileTrue-try-except的轉換
八、示例

TAG:爬蟲計算機網路 | 網頁爬蟲 | python爬蟲 |