鉄は熱いうちに打て
=============================

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はインストールしなくていいのは楽かな。