Python 检查网站是否存在网站列表



我想检查一个网站是否存在,给定格式为 XXXXX.com 的网站列表,其中 XXXXX=一个 5 位数字。所以我想从 00000 到 99999 通过,看看网站的这些变体是否存在。

我想做类似的事情

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

但是生成某种列表(甚至只是将列表导出为 csv(,因此对于每个 URL,我知道它是否存在。

任何建议都会很棒!

我将假设您有一个大型 URL 列表,并且您想从某个源文件(例如文本文件(中读取它们,而不是在 Python 文件中硬编码大量 URL,对吧。 如果是这种情况,请运行下面的脚本,您将获得所需的内容。

import urllib.request
import urllib.error
import time
from multiprocessing import Pool
start = time.time()
file = open('C:\your_path\check_me.txt', 'r', encoding="ISO-8859-1")
urls = file.readlines()
print(urls)
def checkurl(url):
try:
conn = urllib.request.urlopen(url)
except urllib.error.HTTPError as e:
# Return code error (e.g. 404, 501, ...)
# ...
print('HTTPError: {}'.format(e.code) + ', ' + url)
except urllib.error.URLError as e:
# Not an HTTP-specific error (e.g. connection refused)
# ...
print('URLError: {}'.format(e.reason) + ', ' + url)
else:
# 200
# ...
print('good' + ', ' + url)

if __name__ == "__main__":
p = Pool(processes=20)
result = p.map(checkurl, urls)
print("done in : ", time.time()-start)

尝试在循环中组合xrange和字符串zfill方法。

import requests

def test_for_200(url):
req = requests.get(url)
return req.status_code == 200

def numbers():
for n in xrange(100000):
yield str(n).zfill(5)

results = {}
for num in numbers():
url = "http://{}.com".format(num)
results[num] = test_for_200(url)

results看起来像这样:

>>> results
{'00000': True, '00001': False, ...}

最新更新