Python проверяет, существует ли веб-сайт для списка веб-сайтов

Я хочу проверить, существует ли веб-сайт, учитывая список веб-сайтов в формате XXXXX.com, где XXXXX = пятизначное число. Итак, я хочу пройти от 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-адреса я знаю, существует он или нет.

Любой совет будет полезен!

Так что не так с вашим кодом? Вы получили ошибку? Разве это не дает ожидаемого результата?

dfundako 22.08.2018 19:26

Я хочу, чтобы он перебирал список, поэтому мне нужно повторно запустить его для каждого числа от 00000 до 99999

sappgob 22.08.2018 19:29

Отлично, вы гуглили, как перебирать список? Как составить список от 00000 до 99999? Как выполнить функцию для каждого элемента в списке? На самом деле ваш пост не показывает, что вы прилагаете какие-либо усилия для решения своей проблемы.

dfundako 22.08.2018 19:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
3
601
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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, ...}

Я собираюсь сделать предположение, что у вас есть большой список URL-адресов, и вы хотите прочитать их из некоторого исходного файла, скажем, текстового файла, а не жестко кодировать большой список URL-адресов в файле Python, верно. В таком случае запустите приведенный ниже сценарий, и вы получите то, что хотите.

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)

Другие вопросы по теме