Я хочу проверить, существует ли веб-сайт, учитывая список веб-сайтов в формате 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-адреса я знаю, существует он или нет.
Любой совет будет полезен!
Я хочу, чтобы он перебирал список, поэтому мне нужно повторно запустить его для каждого числа от 00000 до 99999
Отлично, вы гуглили, как перебирать список? Как составить список от 00000 до 99999? Как выполнить функцию для каждого элемента в списке? На самом деле ваш пост не показывает, что вы прилагаете какие-либо усилия для решения своей проблемы.






Попробуйте объединить 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)
Так что не так с вашим кодом? Вы получили ошибку? Разве это не дает ожидаемого результата?