PythonでURLの有無、存在をチェックするスクリプト
2017/04/29
Pythonで URLの有無を確認するスクリプト
Pythonの urllib2で URLの有無をチェック
入力された URLが正しいか、否かをチェックする処理を考えていたのですが、日本語ドメインのことまで考慮すると、果たしてチェックができるのだろうか?と考えるに至りました。
ですが、pythonには「urllib2」という便利なライブラリがありまして、入力された URLにアクセスしてみることで、入力された URLが存在するか、しないかをチェックすることができることが分かりました。
というわけで、入力された URLが存在するか、しないかをチェックする処理を解説します。
URLが存在しているか、否かを確認するスクリプト
サンプルのスクリプトは以下の通りとなります。
# -*- 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」を編集している次の行あたりに追記するといいでしょう。
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の有無、存在をチェックするスクリプト
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
.gitignoreを更新しても反映されないときは「git rm -r –cached .」でキャッシュを削除
gitの.gitignoreを変更しても記述内容が反映されない時がある。それはGitのキャッシュが残っているため。そんなときは「git rm」コマンドを使ってキャッシュを削除すれば解決する。
-
-
コピーコンテンツ対策.htaccessで直リンク禁止しリダイレクトで対応
不正なコピーコンテンツからの直リンクを拒否する.htaccessの設定方法。拒否するサイトを指定、許可するサイトを指定する方法、単純な拒否と画像の差し替えを解説。
-
-
エックスサーバーで独自SSLは永久無料で取り放題。利用方法と理由を解説!
エックスサーバーでは独自SSLが無料でいくつでも設置できるように!しかも、国、都道府県などの数項目の入力と数クリックだけという超簡単!SSL化しない理由がない!
-
-
さくらサーバのmb_send_mailでメール送信時にmalformed header from script ‘xxx.php’: Bad header: xxxのエラーが
さくらインターネットのレンタルサーバからPHPのmb_send_mail()関数を利用してメールを送信するとInternal Server Errorが発生。その原因は、メールアドレスが登録されていないこと。
-
-
Gitはフォルダ自体を管理対象にはできない。空のフォルダを設定する手順
Gitはフォルダだけを管理対象にすることはできない。そのため空の.gitkeepファイルを作成し管理対象にすることで、それが入っているフォルダも管理対象にする、と言う手順で管理を行う。
-
-
PythonでUTF-8など日本語(全角文字)を使う方法。コメントにも必要。
Pythonの標準では日本語(全角文字)を利用できないので、利用する際は文字コードを宣言する必要がある。「# coding: utf-8」の様に記述すればOK。
-
-
Selenium WebDriver、Pythonをインストールしブラウザ自動操作の環境構築手順のまとめ
ブラウザを自動操作しテストを実行するロボットをselenium WebDriver+Pythonの環境を構築し、動作確認までの手順のまとめ。初心者向けに詳細解説。サンプルソースも。
-
-
日本語は2バイト文字?3バイト文字?
日本語は2バイトという理解でしたが、UTF-8では事情が違います。その説明です。
-
-
Git管理のソースを元に新しく構築する環境に反映させる手順
Gitで管理しているソースを使って環境を構築する方法を解説。CakePHPを使う想定で、環境を構築したのちpullして、重複ファイルを削除して、改めてpullすれば出来上がる。
-
-
Pythonをコマンドラインで実行。全角文字(日本語)を引数にする場合の対処方法
Pythonをコマンドラインで実行する際、引数を付与して実行する方法の解説。その時問題となる日本語(全角文字)を利用する方法を解説。Windows環境での解説。