Python Beautiful Soup簡介

svoid發表於2015-03-15

Beautiful Soup簡介

Beautiful Soup 是一個可以從HTML或XML檔案中提取資料的Python庫.它能夠通過你喜歡的轉換器實現慣用的文件導航,查詢,修改文件的方式.

BeautifulSoup

BeautifulSoup 物件表示的是一個文件的全部內容.大部分時候,可以把它當作 Tag 物件,它支援 遍歷文件樹 和 搜尋文件樹 中描述的大部分的方法.

因為 BeautifulSoup 物件並不是真正的HTML或XML的tag,所以它沒有name和attribute屬性.但有時檢視它的 .name 屬性是很方便的,所以 BeautifulSoup 物件包含了一個值為 “[document]” 的特殊屬性 .name

文件解析錯誤

文件解析錯誤有兩種.一種是崩潰,Beautiful Soup嘗試解析一段文件結果卻拋除了異常,通常是 HTMLParser.HTMLParseError .還有一種異常情況,是Beautiful Soup解析後的文件樹看起來與原來的內容相差很多.

這些錯誤幾乎都不是Beautiful Soup的原因,這不會是因為Beautiful Soup得程式碼寫的太優秀,而是因為Beautiful Soup沒有包含任何文件解析程式碼.異常產生自被依賴的解析器,如果解析器不能很好的解析出當前的文件,那麼最好的辦法是換一個解析器.

最常見的解析錯誤是 HTMLParser.HTMLParseError: malformed start tag 和 HTMLParser.HTMLParseError: bad end tag .這都是由Python內建的解析器引起的,解決方法是 安裝lxml或html5lib

最常見的異常現象是當前文件找不到指定的Tag,而這個Tag光是用眼睛就足夠發現的了. find_all() 方法返回 [] ,而 find() 方法返回 None .這是Python內建解析器的又一個問題: 解析器會跳過那些它不知道的tag.解決方法還是 安裝lxml或html5lib

示例程式碼

# -*- coding:UTF-8 -*-
#!/usr/bin/python3
import requests
from bs4 import BeautifulSoup

r = requests.get('http://www.163.com/')
soup = BeautifulSoup(r.text)
print("---------------------------------")
print(soup.title)
print("---------------------------------")
print(soup.title.name)
print("---------------------------------")
print(soup.title.string)
print("---------------------------------")
print(soup.title.parent.name)
print("---------------------------------")
print(soup.p)
print("---------------------------------")
print(soup.p['class'])
print("---------------------------------")
print(soup.a)
print("---------------------------------")
for link in soup.find_all('a'):
  print(link.get('href'))
print("---------------------------------")
print(soup.body.text)
print("---------------------------------")

輸出結果:
---------------------------------
網易
---------------------------------
title
---------------------------------
網易
---------------------------------
head
---------------------------------

一週圖片精選:2015.3.7-3.13

--------------------------------- ['pos-abs'] --------------------------------- 應用 --------------------------------- http://www.163.com/#f=topnav http://m.163.com/newsapp/#f=topnav http://music.163.com/#f=topnav http://yuedu.163.com/#f=topnav http://note.youdao.com/#f=topnav http://love.163.com/ http://open.163.com/#f=topnav http://caipiao.163.com/mobile/client_cp.jsp#from=yingyong http://cidian.youdao.com/?vendor=topnav http://mail.163.com/client/dl.html?from=mail46 http://www.lofter.com/?act=qb163rk_20141031_01 ··· --------------------------------- 應用 網易新聞 網易雲音樂 網易雲閱讀 有道雲筆記 ··· ---------------------------------

更多介紹可參考官方文件

整理自網路

svoid
2015-03-14

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29733787/viewspace-1460106/,如需轉載,請註明出處,否則將追究法律責任。

相關文章