天天看點

python爬蟲提取a标簽_05 Python爬蟲之資訊标記與提取方法

一、資訊标記的三種形式

XML格式資料

python爬蟲提取a标簽_05 Python爬蟲之資訊标記與提取方法

JSON格式資料

python爬蟲提取a标簽_05 Python爬蟲之資訊标記與提取方法

YAML格式資料

python爬蟲提取a标簽_05 Python爬蟲之資訊标記與提取方法

二、資訊标記形式的比較

XML

最早的通用資訊标記語言,可擴充性好,但繁瑣。

Internet上的資訊互動與傳遞

JSON

資訊有類型,适合程式處理(js),較XML簡潔

移動應用雲端和節點的資訊通信,無注釋、

YAML

資訊無類型,文本資訊比例最高,可讀性好

各類系統的配置檔案,有注釋易讀

三、資訊提取的一般方法

方法一:

完整解析資訊的标記形式,再提取關鍵資訊

XML JSON YAML

需要标記解析器,例如:bs4庫的标簽樹周遊

優點:資訊解析準确

缺點:提取過程繁瑣,速度慢

方法二:

無視标記形式,直接搜尋關鍵資訊

搜尋

對資訊的文本查找函數即可

優點:提取過程簡潔,速度較快

缺點:提取結果準确性與資訊内容相關

融合方法:

融合方法:結合形式解析與搜尋方法,提取關鍵資訊

XML JSON YAML 搜尋

需要标記解析器及文本查找函數

執行個體:

提取HTML中所有URL連結

思路:

搜尋到所有标簽

解析标簽格式,提取href後的連結内容

import requests

r = requests.get("http://www.baidu.com") # 得到response響應資料

r.encoding = r.apparent_encoding # 指定字元編碼

demo = r.text

import bs4

# 制作soup

soup = bs4.BeautifulSoup(demo,"html.parser") # 要解析的内容,html解析器

# 提取連結内容

for link in soup.find_all("a"):# 查找所有a标簽,并周遊

print(link.get("href")) # 标簽類型,搜尋href标簽後的連結内容

四、基于bs4庫的HTML内容查找方法

<>.find_all(name,attrs,recursive, string, **kwargs) 方法:

傳回一個清單類型,存儲查找的結果

name : 對标簽名稱的檢索字元串

attrs: 對标簽屬性值的檢索字元串,可标注屬性檢索

recursive: 是否對子孫全部檢索,預設True

string: <>…>中字元串區域的檢索字元串

擴充方法

方法

說明

<>.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()參數

總結:

python爬蟲提取a标簽_05 Python爬蟲之資訊标記與提取方法