2 回答

TA贡献1848条经验 获得超2个赞
尝试将组合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, ...}

TA贡献1790条经验 获得超9个赞
我将假设您有一个很大的 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)
添加回答
举报