こんにちは! O'Reilly Japanカタログページをrequests.get
で取得すると、日本語部分に文字化けが発生します。これまで何度かスクレイピングをした経験はあるのですが、文字化けが発生したのは初めてです。
ゆくゆくは本のタイトルとリンクを取得し (Pythonに絞った結果を取得できれば更に嬉しい)、そのリンクに飛んで著者や価格、発行年を取得したいです。。。が、それ以前に文字化けの対処法がわからず困っています。
f1 = open('r.txt', 'w', encoding = 'utf-8')
としてみましたが、結果が変わりませんorz
どうか知恵をお貸しください(._.)
現在のコード
from bs4 import BeautifulSoup import requests import warnings warnings.filterwarnings('ignore') r = requests.get("https://www.oreilly.co.jp/catalog/") html_doc = r.text soup = BeautifulSoup(html_doc) print(soup.prettify()) f1 = open('r.txt', 'w', encoding = 'utf-8') f1.write(html_doc)
取得データ一部
<tr><td>4-87311-061-0</td><td id="4873110610" class="title"><a href="../books/4873110610/">Javaãããã¯ã¼ã¯ããã°ã©ãã³ã° 第2ç</a></td><td class="price">6,264 </td><td>2001/10/01</td></tr>
望む結果
<tr><td>4-87311-061-0</td><td id="4873110610" class="title"><a href="../books/4873110610/">Javaネットワークプログラミング 第2版</a></td><td class="price">6,264 </td><td>2001/10/01</td></tr>
できましたー(≧∇≦)
hayataka2049様のアドバイスでr.encoding = r.apparent_encoding
を追加したら日本語がきちんと表示されるようになりました<3
完成コード
import requests import warnings warnings.filterwarnings('ignore') r = requests.get("https://www.oreilly.co.jp/catalog/") r.encoding = r.apparent_encoding html_doc = r.text soup = BeautifulSoup(html_doc) print(soup.title) f1 = open('r.txt', 'w') f1.write(html_doc)
GitHubにも上げました!

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/17 03:45
2018/10/17 10:29