Pythonと本と子供と雑談と

いつからはじめても遅くない

【Python】スクレイピングでファイルをダウンロードするときのメモ

スクレイピングでファイルをダウンロードするときに少し困ったのですが、ちょっとググればすぐに答えが出てきたのでメモしておきます。

普段やっていた方法

普段は、次のような感じでurllib.requestモジュールのurlretrieve関数を使っていました。

from urllib.request import urlretrieve

urlretrieve(get_file_url, "file_name")

docs.python.org

しかし、これではエラーが出てしまいました。

HTTPError: HTTP Error 403: Forbidden

ググったら出てきた答え

ググったらすぐに答えが出てきました。

stackoverflow.com

なるほど。実はこれは探した時に見た解答とは違うのですが、最後に似たような回答が書かれているので、これで良いです。超単純化するとurlretrieveは403が出るともう何もしてくれないということみたいです。というわけで、requestsを用いてファイルを開いてローカルに保存するという方法が書かれていました。

ほう。ということで、下のようにやったらうまいこと行きました。

from requests_html import HTMLSession

session = HTMLSession()
r = session.get(get_file_url")
with open("test.txt", "w") as f:
    f.write(r.content)

という感じで、requests_htmlを使っても大丈夫でした。