1. 程式人生 > >【Python】beautifusoup解析HTML並將資料寫入檔案

【Python】beautifusoup解析HTML並將資料寫入檔案

Python版本:3.6

IDE:PyCharm


1.解析HTML(這裡以www.baidu.com為例)

headers = {
    'Connection': 'Keep-Alive',
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'
}
soup = BeautifulSoup(requests.get("https://www.baidu.com/",headers=headers).content,'lxml')
2.wb方式寫入檔案
# saveFile:將資料儲存為檔案
# @param data 
def saveFile(data):
    save_path = 'E:\PythonProject/reptile.html'
    f_obj = open(save_path, 'wb') # wb 表示開啟方式,也可用w
    f_obj.write(data)
    f_obj.close()

saveFile(soup.encode('utf-8'))  # 對soup進行了編碼處理!!! 
這裡對soup進行了編碼處理,因為我們當前是用wb進行開啟的,所以不進行編碼處理通不過編譯;

如果我們使用w開啟檔案,那麼soup.text是可以寫入的,但是會出現亂碼現象,這是因為soup無編碼!!!

3.w方式寫入檔案

# saveFile:將資料儲存為檔案
# @param data 
def saveFile(data):
    save_path = 'E:\PythonProject/reptile.html'
    f_obj = open(save_path, 'w') # w 表示開啟方式,也可用wb
    f_obj.write(data)
    f_obj.close()

saveFile(soup.text)  # 無編碼處理

問題

如果你出現瞭如下問題,

UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 21475: illegal multibyte sequence

這是檔案的編碼問題,解決方法如下

f_obj = open(save_path, 'w', encoding="utf-8") # 開啟檔案時將檔案編碼設定為utf-8(或者其他...)


好了,解決了上述問題後,檔案就正常寫入了,之後我們開啟檔案


檔案寫入成功!!!