取得html檔
在python可以很輕易的用urllib來達(dá)成
webfile = urllib.urlopen(url)
讀取內(nèi)容可以用
webcontext = wefbfile.read()
or
webcontext = webfile.read().decode("UTF-8")
如果不指定decode方式則以系統(tǒng)預(yù)設(shè)方式decode
交由BeautifulSoup處理
soup = BeautifulSoup.BeautifulStoneSoup(webcontext)
此時soup為html(<html></html>節(jié)點)或xml的root node
在html可以用soup = soup.body移至<head>節(jié)點上
使用soup = soup.nextSibling可以將point移至<body>上
可以利用這些數(shù)狀結(jié)構(gòu)的操作在tree裡面移動
以CSS樣式來存取node
以上方式當(dāng)檔案在結(jié)構(gòu)上有些問題的時候就會出問題
所以可以利用findAll的方式直接去存取想要的node
htmldata = soup.findAll("p", {"class" : "right"})
尋找所有<p class="right"></p>的node並return一個list給htmldata變數(shù)
以屬性方式存取node
htmltitle = soup.findAll(id = "title")
尋找所有<XX id = "title"></XX>的node(XX為任意名稱)
取得node裡的內(nèi)容
取得屬性
想取得像href這類超連結(jié)時可用(以下為soup指到<a>node情況下)
url = soup['href']
取得內(nèi)容
如果是<node>string</node>的情況下可以使用
context = soup.string
如果要取得所有內(nèi)容的話,可使用
plist = soup.contents
把所有內(nèi)容都存入plist內(nèi)
基本上使用上面這些技巧就能應(yīng)付一般需求了
中文文檔:
http://www./software/BeautifulSoup/documentation.zh.html