https://automatetheboringstuff.comからウェブサイトをスクラップする方法を学びました。内容が中国語であるhttp://www.piaotian.net/html/3/3028/1473227.htmlをスクラップして、その内容を.txtファイルに書きたいと思っていました。しかし、.txtファイルにはランダムなシンボルが含まれています。これはエンコード/デコードの問題です。中国語の文字を掻き集める
私はこのスレッド「how to decode and encode web page with python?」を読んで、自分のサイトのエンコード方法が「gb2312」と「windows-1252」であると考えました。私はこれらの2つのエンコード方法でデコードしようとしましたが失敗しました
誰かが私のコードの問題を親切に説明できますか?私は非常にプログラミングに新しいので、私も誤解を教えてください!
また、コードから "html.parser"を削除すると、.txtファイルは少なくともシンボルを持つ代わりに空であることがわかります。これはなぜですか?
import bs4, requests, sys
reload(sys)
sys.setdefaultencoding("utf-8")
novel = requests.get("http://www.piaotian.net/html/3/3028/1473227.html")
novel.raise_for_status()
novelSoup = bs4.BeautifulSoup(novel.text, "html.parser")
content = novelSoup.select("br")
novelFile = open("novel.txt", "w")
for i in range(len(content)):
novelFile.write(str(content[i].getText()))
ウェブサイトで正しいエンコーディングを見つけて適用するだけです。ここにagentyに関する詳細なチュートリアルがあります - https://www.agenty.com/doc/hosted-app/248/scraping-chinese-or-japanese-websites –