- 導入
from bs4 import BeautifulSoup
我們創(chuàng)建一個字符串,后面的例子我們便會用它來演示
- html = """
- <html><head><title>The Dormouse's story</title></head>
- <body>
- <p class="title" name="dromouse"><b>The Dormouse's story</b></p>
- <p class="story">Once upon a time there were three little sisters; and their names were
- <a class="sister" id="link1"></a>,
- <a class="sister" id="link2">Lacie</a> and
- <a class="sister" id="link3">Tillie</a>;
- and they lived at the bottom of a well.</p>
- <p class="story">...</p>
- """
創(chuàng)建 beautifulsoup 對象
- soup = BeautifulSoup(html)
另外,我們還可以用本地 HTML 文件來創(chuàng)建對象喂走,例如
- soup = BeautifulSoup(open('index.html'))
上面這句代碼便是將本地 index.html 文件打開黔夭,用它來創(chuàng)建 soup 對象宰缤。下面我們來打印一下 soup 對象的內(nèi)容琐鲁,格式化輸出
- print soup.prettify()
指定編碼:當html為其他類型編碼(非utf-8和asc ii)菠齿,比如GB2312的話志膀,則需要指定相應的字符編碼熙宇,BeautifulSoup才能正確解析。
htmlCharset = "GB2312"
soup = BeautifulSoup(respHtml, fromEncoding=htmlCharset)
!/usr/bin/python
-- coding: UTF-8 --
from bs4 import BeautifulSoup
import re
-
待分析字符串 :
html_doc = """
<html>
<head>
<title>The Dormouse's story</title>
</head>
<body>
<p class="title aq">
<b>
The Dormouse's story
</b>
</p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a class="sister" id="link1">Elsie</a>,
<a class="sister" id="link2">Lacie</a>
and
<a class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.
.</p>
<p class="story">...</p>
"""
html字符串創(chuàng)建BeautifulSoup對象 :
soup = BeautifulSoup(html_doc, 'html.parser', from_encoding='utf-8')
輸出第一個 title 標簽 :
print soup.title
輸出第一個 title 標簽的標簽名稱 :
print soup.title.name
輸出第一個 title 標簽的包含內(nèi)容 :
print soup.title.string
輸出第一個 title 標簽的父標簽的標簽名稱 :
print soup.title.parent.name
輸出第一個 p 標簽
print soup.p
輸出第一個 p 標簽的 class 屬性內(nèi)容 :
print soup.p['class']
輸出第一個 a 標簽的 href 屬性內(nèi)容 :
print soup.a['href']
'''''
soup的屬性可以被添加,刪除或修改. 再說一次, soup的屬性操作方法與字典一樣
'''
修改第一個 a 標簽的href屬性為 http://www.baidu.com/
soup.a['href'] = 'http://www.baidu.com/'
給第一個 a 標簽添加 name 屬性 :
soup.a['name'] = u'百度'
刪除第一個 a 標簽的 class 屬性為 :
del soup.a['class']
輸出第一個 p 標簽的所有子節(jié)點 :
print soup.p.contents
輸出第一個 a 標簽 :
print soup.a
輸出所有的 a 標簽溉浙,以列表形式顯示 :
print soup.find_all('a')
輸出第一個 id 屬性等于 link3 的 a 標簽 :
print soup.find(id="link3")
獲取所有文字內(nèi)容 :
print(soup.get_text())
輸出第一個 a 標簽的所有屬性信息 :
print soup.a.attrs
for link in soup.find_all('a'):
獲取 link 的 href 屬性內(nèi)容
print(link.get('href'))
對soup.p的子節(jié)點進行循環(huán)輸出 :
for child in soup.p.children:
print(child)
正則匹配烫止,名字中帶有b的標簽 :
for tag in soup.find_all(re.compile("b")):
print(tag.name)
import bs4#導入BeautifulSoup庫
Soup = BeautifulSoup(html)#其中html 可以是字符串,也可以是句柄
需要注意的是戳稽,BeautifulSoup會自動檢測傳入文件的編碼格式馆蠕,然后轉(zhuǎn)化為Unicode格式
通過如上兩句話,BS自動把文檔生成為如上圖中的解析樹。