1. ホーム
  2. python

PythonでWebサイトが存在するかどうかをチェックする

2023-10-27 06:52:41

質問

あるサイトが存在するかどうかを調べたいのですが、こんな感じです。

user_agent = 'Mozilla/20.0.1 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent':user_agent }
link = "http://www.abc.com"
req = urllib2.Request(link, headers = headers)
page = urllib2.urlopen(req).read() - ERROR 402 generated here!

ページが存在しない場合(402エラーやその他のエラー)、何をすればよいのでしょうか? page = ... の行で、私が読んでいるページが終了することを確認するために何ができますか?

どのように解決するのですか?

GETの代わりにHEADリクエストを使用することができます。これは、ヘッダのみをダウンロードし、コンテンツはダウンロードしません。その後、ヘッダーから応答ステータスを確認することができます。

Python 2.7.x の場合、以下のようになります。 httplib :

import httplib
c = httplib.HTTPConnection('www.example.com')
c.request("HEAD", '')
if c.getresponse().status == 200:
   print('web site exists')

または urllib2 :

import urllib2
try:
    urllib2.urlopen('http://www.example.com/some_page')
except urllib2.HTTPError, e:
    print(e.code)
except urllib2.URLError, e:
    print(e.args)

または2.7と3.xの場合は、インストール時に requests

import requests
response = requests.get('http://www.example.com')
if response.status_code == 200:
    print('Web site exists')
else:
    print('Web site does not exist')