Python爬蟲學習日誌(5)

信息的標記與提取

1.HTML的信息標記

  • HTML(Hyper Text Markup Language)是WWW(World Wide Web)的信息組織方式。
  • 超文本可以將聲音、圖像和視頻嵌入的文本中。
  • HTML通過預定義的<>…</>標籤形式組織不同類型的信息。
  1. XML(eXtensible Makeup Language)

在這裏插入圖片描述

  1. JSON(JavaScript Object Notation)

在這裏插入圖片描述

  1. YAML(YAML Ain’t Makeup Language)
  • 無類型的鍵值對,無雙引號,#表示註釋,-表示並列的值信息,通過縮進表示嵌套關係。
    在這裏插入圖片描述

2.信息提取的一般方法

  1. 完整解析信息的標記形式,再提取關鍵信息
  • XML JSON YAML
    需要標記解析器 例如:bs4庫的標籤樹遍歷。
  • 優點:信息解析準確。
  • 缺點:提取過程繁瑣,速度慢。
  1. 無視標記形式,直接搜索關鍵信息
  • 搜索
    對信息的文本查找函數即可。
  • 優點:提取過程簡潔,速度較快。
  • 缺點:提取結果準確性與信息內容相關。
  1. 融合方法:結合形式解析與搜索方法,提取關鍵信息。
    XML JSON YAML 搜索
    需要標記解析器及文本查找函數。

3.基於bs4庫的HTML內容查找方法

  1. find_all函數
    在這裏插入圖片描述
  • find_all函數非常常用,可以用其簡寫形式。
    (…) 等價於find_all(…)
    即有:soup(…) 等價於soupfind_all(…)
import requests
from bs4 import BeautifulSoup
import re
r = requests.get("http://python123.io/ws/demo.html")
demo = r.text
soup = BeautifulSoup(demo, "html.parser")
print(soup.find_all('a'))#標籤名稱name
print("--------------")
print(soup.find_all('a', 'b'))
print("--------------")
print(soup.find_all('p', 'course'))#標籤屬性值attrs
print("--------------")
print(soup.find_all('a', recursive= False))#子孫檢索recursive
print("--------------")
print(soup.find_all(string = "Basic Python"))#字符串string
print("--------------")
print(soup.find_all(string= re.compile("python")))#正則表達式
[<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>, <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">Advanced Python</a>]
--------------
[]
--------------
[<p class="course">Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a> and <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">Advanced Python</a>.</p>]
--------------
[]
--------------
['Basic Python']
--------------
['This is a python demo page', 'The demo python introduces several python courses.']
  1. 其他函數
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章