各位前輩大家好,小弟最近在學python爬蟲,然後遇到問題如下,我現在可以抓到所爬的網站資料原始碼,不過想要將把抓到的原始碼自動寫入txt檔存檔。
執行Python後發生問題:
Traceback (most recent call last):
File "tomy-request.py", line 32, in
file.write(root.html)
TypeError: write() argument must be str, not Tag
再請前輩們指教,謝謝!!
#抓取網站 原始碼
import urllib.request as req
url="https://www.cac.edu.tw/apply107/system/107ColQry_forapply_4hgd9/html/107_002012.htm"
#建立一個Request物件,附加Request Headers的資訊
request=req.Request(url,headers={
"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Mobile Safari/537.36"
})
with req.urlopen(request) as response:
data=response.read().decode("utf-8") #讀出資料
#解析原始碼
import bs4
root=bs4.BeautifulSoup(data,"html.parser")
print (root.html) #印出html內的原始碼
with open("html1.txt","w",encoding="utf-8") as file:
file.write(root.html)
TypeError: write() argument must be str, not Tag
轉換成str()格式即可:
with open("html1.txt","w",encoding="utf-8") as file:
file.write(str(root.html))
其實我剛看了一下。它的錯誤訊息是告訴你不是str(也就是文字格式)
所以我在想說,你的root.html會不會它是一個物件?
或許需要轉換一下成文字類型才行??
太久沒用BS4了
file.write(root.prettify())
請學著看debug
TypeError: write() argument must be str, not Tag
這句其實已經告訴你一切