python beautifulsoup 用於分析網頁示例
阿新 • • 發佈:2018-12-23
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協議,轉載請註明來源