为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕的地8271018 2021-05-30 07:53:05
我想检查一个网站是否存在,给出一个格式为 XXXXX.com 的网站列表,其中 XXXXX=一个 5 位数字。因此,我想浏览从00000到99999,看看这些网站是否存在这些变体。我想做类似的事情import requestsrequest = 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 回答

?
慕尼黑5688855

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, ...}


查看完整回答
反对 回复 2021-06-01
?
富国沪深

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)


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号