Python检查网站是否存在以获取网站列表

时间:2018-08-22 17:24:01

标签: python web

给定格式为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,我知道它是否存在。

任何建议都会很棒!

2 个答案:

答案 0 :(得分:0)

尝试在循环中结合使用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, ...}

答案 1 :(得分:0)

我将假设您有大量的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)