猿问

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,我知道它是否存在。


任何建议都很好!


慕的地8271018
浏览 218回答 2
2回答

慕尼黑5688855

尝试将组合xrange和字符串zfill方法组合成一个循环。import requestsdef test_for_200(url):    req = requests.get(url)    return req.status_code == 200def 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, ...}

富国沪深

我将假设您有一个很大的 URL 列表,并且您想从某个源文件中读取它们,假设是一个文本文件,而不是在 Python 文件中对大量 URL 进行硬编码,对吧。如果是这种情况,请运行下面的脚本,你会得到你想要的。import urllib.requestimport urllib.errorimport timefrom multiprocessing import Poolstart = 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)
随时随地看视频慕课网APP

相关分类

Python
我要回答