本記事ではPythonで取得したWebページをHTMLに保存する方法を解説します。
取得したデータを保存する方法には、大きく分けて2種類あります。
それぞれの方法を丁寧に解説していきましょう。
また、スクレイピングにおける注意点にも併せて触れてあります。
本記事を読むことで、スクレイピングの基礎が分かるようになります。
WebページのデータをHTMLに保存する方法
WebページのデータをHTMLに保存する方法を紹介します。
まずはrequestsモジュールを使った、一般的な方法を解説しましょう。
次のSTEPに分けて解説します。
- Step1.Webページのデータを取得する
- Step2.htmlファイルに保存する
1つ1つのSTEPについて詳しく解説しましょう。
Step1.Webページのデータを取得する
Webページのデータを取得する方法です。
○コード例
import requests
site_data = requests.get("https://news.yahoo.co.jp/")
requestsモジュールをまずimportします。
次にgetメソッドを使って、Webページを取得します。
ここまでは前回の記事でも解説したので、お分かり頂けるかと思います。
Step2.htmlファイルに保存する
getメソッドで取得したWebページをHTMLに保存する方法です。
Pythonでは、外部のファイルに保存する場合、open関数を使う必要があります。
○コード例
import requests
site_data = requests.get("https://news.yahoo.co.jp/")
with open("yahoo_news.html", "w") as f:
f.write(site_data.text)
print("書き込みが完了しました")
○実行結果
openの第一引数に「ファイル名」、第二引数に「”w”」を入れています。
第二引数に「”w”」を入れてることで、open関数が「書き込みモード」になります。
書き込みモードでファイルを開いた後は、writeメソッドで書き込みます。
open関数に関して詳しく知りたい方は、【初級編2】Pythonでファイルを作成したり削除したりする方法を学ぼうを読んでください。
ここでは、Yahoo!ニュースのHTMLをそのまま書き込んでいます。
プログラムを実行し終わったら、プログラムと同じフォルダに「yahoo_news.html」があることを確認してください。
「yahoo_news.html」をダブルクリックすると、ページが開き、Yahoo!ニュースサイトがそのまま取得できたことが分かります。
urllib.requestを使ってHTMLに保存する方法
つづいて、urllib.requestモジュールを使う方法を見ていきましょう。
以下のSTEPに分けて解説します。
- Step1.urllib.requestをimportする
- Step2.WebページのURLとファイルを指定する
- Step3.Webページをダウンロードする
こちらの方法もたまに使うので覚えておくと良いでしょう。
Step1.urllib.requestをimportする
まずは、urllib.requestをimportする必要があります。
いつも通り、ソースの冒頭にimport文を書きましょう。
○コード例
import urllib.request
urllib.requestは、HTTPリクエストの送信処理を行うためのモジュールです。
こちらを使うことで、Webページを取得できます
Step2.WebページのURLとファイルを指定する
つづいて、取得したいWebページのURLと、保存するファイル名を指定します。
○コード例
import urllib.request
url = "https://news.yahoo.co.jp/"
file = "yahoo_news.html"
ここでは、Yahoo!ニュースのURLを取得し、それを「yahoo_news.html」に保存します。
Step3.Webページをダウンロードする
最後にurlretrieveメソッドを使って、Webページをダウンロードすれば完了です。
○コード例
import urllib.request
url = "https://news.yahoo.co.jp/"
file = "yahoo_news.html"
urllib.request.urlretrieve(url, file)
print("書き込みが完了しました")
○実行結果
urlretrieveメソッドの第一引数にURL、第二引数にファイル名を入れてください。
こちらを実行すると、yahoo_news.htmlが先程と同じようにできています。
このように、urllib.requestモジュールを使っても同様のことが可能です。
PythonでWebスクレイピングする際の注意点
PythonでWebスクレイピングする際、注意点がいくつかあります。
- Webサイトに負荷を与えない
- Webサイトが「スクレイピング禁止」か確認
- 取得したデータを販売しない
特にWebサイトに負荷を与えてしまわないか、チェックしてださい。
プログラムから何度もサイトにアクセスすると、サイトに負荷を与えてしまい、迷惑がかかってしまいます。
何度もサイトにアクセスする場合、時間を開けて行うなど、工夫しましょう。
その他、サイトが「スクレイピング禁止」かも事前に確認してください。(Yahoo!ニュースはスクレイピング禁止ではありません)
また、他人のWebサイトは著作物ですので、取得データを複製して他人に譲渡することは法律で禁じられています。
まとめ
本記事では、WebページデータをHTMLに保存する方法を解説しました。
requestsモジュールやurllib.requestモジュールを使うことで、Webページのデータが取得できます。
次回は、Webページの一部のみを取得する方法をご紹介しましょう。
これができるようになると、スクレイピングが実用的なものになります。