1. 程式人生 > >python beautifulsoup 用於分析網頁示例

python beautifulsoup 用於分析網頁示例

2012-10-31

周海漢 http://abloz.com 2012.10.31 聽說11.3要來暖氣?

beautifulsoap只有一個py檔案,但功能強大,可分析不完整的html頁面。下面是用法示例。 安裝: [[email protected] test1]$ sudo pip install BeautifulSoup 或者去官網下載:http://www.crummy.com/software/BeautifulSoup/

python操作

>>> from BeautifulSoup import BeautifulSoup

>>> doc = ['<html><head><title>
用BeautifulSoup對不完整網頁分析測試 from abloz.com</title></head>', ... '<body><p id="f" class="test" >我的網站 <b>分析</b> from abloz.com.', ... '<p id="s" >第二行', ... '<a href="http://abloz.com">瀚海星空</a>', ... '<a href="http://google.com">google</a>', ... '</html>
'] >>> soup = BeautifulSoup(''.join(doc)) >>> soup.html.title <title>用BeautifulSoup對不完整網頁分析測試 from abloz.com</title> >>> soup.html.body.p <p id="f" class="test">我的網站 <b>分析</b> from abloz.com.</p> >>> soup.html.title.name u'title' >>> soup.html.title.text u'u7528BeautifulSoupu5bf9u4e0du5b8cu6574u7f51u9875u5206u6790u6d4bu8bd5 from abloz.com' >>> soup.html.title.string u'u7528BeautifulSoupu5bf9u4e0du5b8cu6574u7f51u9875u5206u6790u6d4bu8bd5 from abloz.com' >>> print soup.html.title.string 用BeautifulSoup對不完整網頁分析測試 from abloz.com >>> soup.title <title>
用BeautifulSoup對不完整網頁分析測試 from abloz.com</title> >>> ps = soup.findAll("p") >>> for p in ps: ... print p ... <p id="f" class="test">我的網站 <b>分析</b> from abloz.com.</p> <p id="s">第二行<a href="http://abloz.com">瀚海星空</a><a href="http://google.com">google</a></p> >>> ps[1] <p id="s">第二行<a href="http://abloz.com">瀚海星空</a><a href="http://google.com">google</a></p> >>> ps[0] <p id="f" class="test">我的網站 <b>分析</b> from abloz.com.</p> >>> aes=soup.findAll("a") >>> for a in aes: ... print a.text ... print a["href"] ... 瀚海星空 http://abloz.com google http://google.com >>> import re >>> ts = soup.findAll(text=re.compile("分析")) >>> print ts [] >>> ts = soup.findAll(text=re.compile("goo")) >>> print ts [u'google']

注意如何支援中文:轉為unicode

>>> ts = soup.findAll(text=re.compile(u"分析"))
>>> ts
[u'u7528BeautifulSoupu5bf9u4e0du5b8cu6574u7f51u9875u5206u6790u6d4bu8bd5 from abloz.com', u'u5206u6790']
>>> for t in ts:
... print t
...
用BeautifulSoup對不完整網頁分析測試 from abloz.com
分析
>>> ids = soup.findAll(id=re.compile("f"))
>>> ids
[<p id="f" class="test">我的網站 <b>分析</b> from abloz.com.</p>]

和上一個等價的方式
>>> ids = soup.findAll(attrs={"id":re.compile("f")})
>>> ids
[<p id="f" class="test">我的網站 <b>分析</b> from abloz.com.</p>]
>>> soup.find("p")
<p id="f" class="test">我的網站 <b>分析</b> from abloz.com.</p>
>>> soup.find("a")
<a href="http://abloz.com">瀚海星空</a>

參考: 中文文件:http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html 官網:http://www.crummy.com/software/BeautifulSoup/

如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源