エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


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の有無、存在をチェックするスクリプト

 - プログラミング・Web関連技術

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

mod_pagespeedカスタマイズで高速化を詳細解説・Google謹製

mod_pagespeedをデフォルトのまま使っていませんか?mod_pagespeedはデフォルトのままでも速い!でも仕組みを理解し設定し直せばより速くなる!

WordPress、Webサイトの表示高速化!画像を軽くする基本的な考え方

画面表示の高速化には画像のファイル容量を小さくする方法があります。ツールを使わなくても小さくするための基本的な考え方を解説します。

エックスサーバーで独自SSLは永久無料で取り放題。利用方法と理由を解説!

エックスサーバーでは独自SSLが無料でいくつでも設置できるように!しかも、国、都道府県などの数項目の入力と数クリックだけという超簡単!SSL化しない理由がない!

コピーコンテンツ対策.htaccessで直リンク禁止しリダイレクトで対応

不正なコピーコンテンツからの直リンクを拒否する.htaccessの設定方法。拒否するサイトを指定、許可するサイトを指定する方法、単純な拒否と画像の差し替えを解説。

コピーコンテンツ・直リンクの3つの対策Google通報などのまとめ

コピーコンテンツを発見したときにやること!Googleに通報、画像の直リンクを禁止、RSSの全文配信を停止。この対策をしないとあなたのサイトの評価も下がるかも!

.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点

Gitで管理する対象、対象外のファイル、フォルダの指定は .gitignoreに記述する。その基本的な記述の方法に加え、無視対象にしたフォルダの中の特定のファイルを管理対象にする記述方法を解説。

Pythonをコマンドラインで実行。全角文字(日本語)を引数にする場合の対処方法

Pythonをコマンドラインで実行する際、引数を付与して実行する方法の解説。その時問題となる日本語(全角文字)を利用する方法を解説。Windows環境での解説。

さくらサーバのmb_send_mailでメール送信時にmalformed header from script 'xxx.php': Bad header: xxxのエラーが
さくらサーバのmb_send_mailでメール送信時にmalformed header from script ‘xxx.php’: Bad header: xxxのエラーが

さくらインターネットのレンタルサーバからPHPのmb_send_mail()関数を利用してメールを送信するとInternal Server Errorが発生。その原因は、メールアドレスが登録されていないこと。

.htaccessのmod_expiresでブラウザキャッシュで高速化でSEO対策!

Page Speed Insightsの指摘事項のファイルのブラウザキャッシュの設定方法。解説もしてるけど、.htaccessにコピペするだけの簡単設置で効果抜群!SEOにも威力を発揮!

Gitで「fatal: Authentication failed for 'https://example.com/git_repositories/example.git/'」のエラーが出た場合の対処方法の一つ
Gitで「fatal: Authentication failed for ‘https://example.com/git_repositories/example.git/’」のエラーが出た場合の対処方法の一つ

Gitのリモートリポジトリにアクセスする際、Authentication failedのエラーが。しかし、ID、PASSが間違っているのではなく、リモートリポジトリのURLが間違っている場合もあるので再度確認を。


Warning: Trying to access array offset on null in /home/ss-giken/s-giken.net/public_html/blog/wp-content/plugins/amazonjs/amazonjs.php on line 637