鉄は熱いうちに打て
=============================
Webスクレイピング入門の予習 - Webのページを取得する¶
2019-02-05
あらすじ¶
2/11に PyLadies Tokyo Meetup #38 Webスクレイピング入門 でスクレイピングのハンズオンの進行をすることになりました。 まぁ、やりたいことは調べながら実装はできるくらいですが、せっかくなので、勉強会駆動学習ということで、なるべく予習していこうと思います。
使うのは以下のライブラリ。
とりあえず、Webのページを取得する予習をしよう
Webのページを取得する¶
標準ライブラリの urllib.request を使ってみます。
from urllib.request import urlopen
f = urlopen("https://kamekokamekame.net/index.html")
print(f.read())
実行するとエラー出た。しょんぼり。
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)
解決方法は以下のページに有りました。
macOS用公式インストーラーのPython 3.6でCERTIFICATE_VERIFY_FAILEDとなる問題
Python3.7を使っているので、 /Applications/Python\ 3.7/Install\ Certificates.command
を実行したら取得できるようになりました。ありがたやー。
なんか取得できたけど、文字化けしているぞ。てことで、ページの文字コードを調べてデコードだ!
encoding = f.info().get_content_charset(failobj="utf-8")
text = f.read().decode(encoding)
print(text)
with open("sample.html", "w", encoding=encoding) as fp:
fp.write(text)
ちょこっと書き換えました。ついでに sample.html
ファイルに保存。
ハンズオンでは、 Requests の方を使ってますが、こっちでも充分ですね。
どっちがいいですかね?って聞かれたらどうしよう。Webページ取得くらいならどっちでもいいと思う。 ブラウザで右クリックすれば取れるわけですし。まぁ、urllib.requestはインストールしなくていいのは楽かな。