PythonでURLの有無、存在をチェックするスクリプト
2017/04/29
Pythonで URLの有無を確認するスクリプト
Pythonの urllib2で URLの有無をチェック
入力された URLが正しいか、否かをチェックする処理を考えていたのですが、日本語ドメインのことまで考慮すると、果たしてチェックができるのだろうか?と考えるに至りました。
ですが、pythonには「urllib2」という便利なライブラリがありまして、入力された URLにアクセスしてみることで、入力された URLが存在するか、しないかをチェックすることができることが分かりました。
というわけで、入力された URLが存在するか、しないかをチェックする処理を解説します。
URLが存在しているか、否かを確認するスクリプト
サンプルのスクリプトは以下の通りとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# -*- coding: utf-8 -*- # 文字列検索・置換モジュールの import import re # URLを取得するモジュールの import import urllib2 # URLチェック関数 def checkURL(url): if re.match(r"^https?:\/\/", url): try: response = urllib2.urlopen(url) response.close() return "OK" except urllib2.HTTPError as e: print "NotFound: " + url return "NG Error Code: ", e.code except urllib2.URLError as e: print "NotFound: " + url return "NG Reason: ", e.reason else: return u"URLは http://、https:// から記述してください。" input_url = "http://yahoo.co.jp" check_result = checkURL(input_url) if check_result == "OK": print u"アクセスOK" else: print check_result |
URLが存在しているか、否かを確認するスクリプトの解説
解説というほど解説する内容はありませんが、入力された URLを「input_url」に入れて、URLのチェック関数を通しています。
URLは、まず最初に、「http://」「https://」のいずれかで始まっているかをチェックしています。
「http://」「https://」がないと、次の行の「urllib2.urlopen(url)」でエラーが出るためです。
続いて、「urllib2.urlopen(url)」で入力された URLにアクセスをしてサイトの情報を取得します。
サイトの情報が取得できれば、入力された URLは有効な URLとして判断します。
この時、エラーが返ってきた場合は、例外処理としてそのエラーを補足して、エラー処理を行います。
エラーの補足の順番は、「urllib2.HTTPError」「urllib2.URLError」である必要があります。
詳しくは、下記のページに解説がありますので参考にしてください。
http://docs.python.jp/2/howto/urllib2.html
SSL認証エラー「urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)」の対処方法
ブラウザでは表示される URLでも、Pythonで実行すると「urllib2.URLError」の例外処理で、「urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)」のエラーが発生する場合があります。
これは、Python 2.7.9以降では SSL証明書が正しくない場合に SSL認証エラーを出すように仕様が変更になったためです。
対処方法は、下記の 2行をプログラムに追記すれば OKです。
「import urllib2」を編集している次の行あたりに追記するといいでしょう。
1 2 |
import ssl ssl._create_default_https_context = ssl._create_unverified_context |
解説は、英語のページですが下記にありますので、あわせて参考にしてください。
https://www.python.org/dev/peps/pep-0476/
selenium+Pythonで処理の自動化に関する記事
Selenium WebDriver、Pythonをインストールしブラウザ自動操作の環境構築手順のまとめ
PythonでUTF-8など日本語(全角文字)を使う方法。コメントにも必要。
Pythonをコマンドラインで実行。全角文字(日本語)を引数にする場合の対処方法
Selenium WebDriverでFirefoxをプライベートウィンドウ/Chromeをシークレットモードで起動する方法・言語はpython
Selenium WebDriver、Pythonをインストールし Chromeの自動操作の環境構築手順のまとめ
Beautiful Soupを利用してPythonでスクレイピングを行う環境構築方法の解説
PythonでMySQLへの接続ライブラリMySQL-pythonの簡単インストール方法
PythonでURLの有無、存在をチェックするスクリプト
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
開発進行中の環境、公開中の環境にGitを導入する。その基本的な手続きを解説。Gitの導入、ローカルリポジトリを作成。リモートリポジトリを利用し、本番環境にデプロイする手続きを解説。
-
-
.htaccessのmod_expiresでブラウザキャッシュで高速化でSEO対策!
Page Speed Insightsの指摘事項のファイルのブラウザキャッシュの設定方法。解説もしてるけど、.htaccessにコピペするだけの簡単設置で効果抜群!SEOにも威力を発揮!
-
-
mod_pagespeedでWebサイトを超簡単高速化・Google謹製の最終兵器
Webサイトの表示スピード高速化の最終兵器、Google謹製mod_pagespeedの解説です。レンタルサーバではX-Serverでしか利用できませんが、ワンクリックで高速化します。
-
-
X Serverへの引越しの注意点まとめ。ロリポップとの違いと対処方法 6事例
ロリポップからX Serverに引越し。ロリポップとX Serverの違いに注目することでX Serverの設定方法を明確にします。またX Serverならではの設定ポイントなども解説。
-
-
ロリポップからX-Serverに引越し。サーバの月額費用が増えても求めた理由は?
ロリポップからX-Serverに引越すその理由とは?SEOの観点からも少しでもサーバレスポンスが早いサーバが求められロリポップでは限界を感じたからです。
-
-
chromedriver.exe – ディスクがありませんと出てSeleniumの設定が上手くいかない
Selenium WebDriverを使ってChromeを自動操作する仕組みを作る際、chromedriver.exeを利用しますが、ディスクがありません、というエラーが発生する場合があります。その対処方法を解説します。
-
-
日本語は2バイト文字?3バイト文字?
日本語は2バイトという理解でしたが、UTF-8では事情が違います。その説明です。
-
-
Selenium WebDriverでFirefoxをプライベートウィンドウ/Chromeをシークレットモードで起動する方法・言語はpython
Seleniumでは初期状態でブラウザを起動する Seleniumでブラウザ …
-
-
直リンク禁止の.htaccessを超分かりやすく解説。日本語じゃなくてPHPで説明
直リンクを禁止する.htaccessの記述内容を日本語ではなくPHPで解説!私自身もこの方法ですっかり理解できました。.htaccessって簡単!って思えますよ。
-
-
FTPでダウンロード時にファイルが重複するため上書きしますか?と表示される問題
FTPでファイルをダウンロードする際に「ファイルが重複しています。上書きしますか?」というメッセージが出る場合がありますが、これの原因と対策、解決策の記事です。