BeautifulSoup的使用
BeautifulSoup的第一個參數是將要解析的 HTML內容,可以是檔案,也可以是網路上傳回來的內容;第二個參數是決定使用哪個解析器來解析第一個參數的文本字符串。
預設情況下,Beautiful Soup會將當前文檔作為HTML格式解析,如果要解析XML文檔,要在 BeautifulSoup函式中第二個參數使用 “xml”。
「html.parser」 是 Python 內置的解析器,「lxml」 則是一個基於c語言開發的解析器,它的執行速度更快,不過它需要額外安裝。
使用方法:
bs = BeautifulSoup(html_doc, 'html.parser')
將完整個 HTML 結構經過排版後輸出,使用print(bs .prettify())
取得節點文字內容
用print(bs.title)可以輸出<title>標籤和內容;如果只要輸出內容,可以使用string,print(bs.title.string)。
搜尋某節點的所有內容
使用 find_all 找出所有特定的 HTML 標籤節點:
# 所有的超連結
a_tags = bs.find_all('a')
for tag in a_tags:
print(tag.string) # 輸出超連結的文字
如果只找尋次一層的子節點,可以加上第二個參數 recursive=False 關閉遞迴搜尋功能。
取出節點屬性
for tag in a_tags:
print(tag.get('href'))# 輸出超連結網址
同時搜尋多種標籤
tags = bs.find_all(["a", "b"], limit=2) # 搜尋所有超連結與粗體字
print(tags)
limit可以指定搜尋節點數量的上限值,這樣它就只會找出前幾個符合條件的節點。
只抓出第一個符合條件的節點,可以直接使用 find:
a_tag = soup.find("a")
print(a_tag)
解析HTML 檔案
想要用 Beautiful Soup 解析已經下載的 HTML 檔案,可以直接將開啟的檔案交給 BeautifulSoup 處理:
from bs4 import BeautifulSoup
with open("index.html") as f:
soup = BeautifulSoup(f)# 從檔案讀取 HTML 程式碼進行解析
使用 Pandas 來撈資料
Pandas 一樣是 Python 套件,可以擷取 JSON、CSV、Excel 與 HTML 等等格式的資料。資料型態為 DataFrame 格式,可以使用 Index(Row) 或 Column 存取資料,整理資料的時候相當好用。
使用 Pandas 匯入資料
可以匯入 CSV、Excel 與 HTML 等多種格式,使用方式簡單如下:
import pandas as pd
data = pd.read_csv('file.csv')
data = pd.read_excel('file.xls', 'sheet')
data = pd.read_html('url')
然後可以參考 Pandas 網站上的 Visualization 章節,使用 Matplotlib API 繪圖。
Pandas 也提供data.describe()、data.corr()直接顯示統計資訊與相關係數。
直接利用 read_html 抓取網站資料,table = pandas.read_html('http://www.stockq.org/market/asia.php')[4],其中4代表第5個筆資料。
用 drop 指令把不要的 Row 與 Column 丟掉,留下想要的部份:
table = table.drop(table.columns[[0,1,2,3,4]],axis=0)
table = table.drop(table.columns[9:296],axis=1)
沒有留言:
張貼留言