У меня есть файл .txt, который содержит список URL. Структура URL-адресов различна - некоторые могут начинаться с https , некоторые с http , другие с www*1006*, а другие только с именем домена ( * 1009 stackoverflow.com *). Итак, пример содержимого файла .txt: -
www.google.com
microsoft.com
https://www.yahoo.com
http://www.bing.com
Что я хочу сделать, это проанализировать список и проверить, являются ли URL действующими. Для этого структура URL должна быть правильной, иначе запрос не будет выполнен. Вот мой код: -
import requests
with open('urls.txt', 'r') as f:
urls = f.readlines()
for url in urls:
url = url.replace('\n', '')
if not url.startswith('http'): #This is to handle just domain names and those that begin with 'www'
url = 'http://' + url
if url.startswith('http:'):
print("trying url {}".format(url))
response = requests.get(url, timeout=10)
status_code = response.status_code
if status_code == 200:
continue
else:
print("URL {} has a response code of {}".format(url, status_code))
print("encountered error. Now trying with https")
url = url.replace('http://', 'https://')
print("Now replacing http with https and trying again")
response = requests.get(url, timeout=10)
status_code = response.status_code
print("URL {} has a response code of {}".format(url, status_code))
else:
response = requests.get(url, timeout=10)
status_code = response.status_code
print("URL {} has a response code of {}".format(url, status_code))
Я чувствую, что несколько усложнил это, и должен быть более простой способ попробовать варианты (ie. Domain name, домен с 'www' на начиная с «http» в начале и с «https: //» в начале, пока сайт не будет определен как работающий или нет (ie. все переменные исчерпаны).
Any предложения по моему коду или лучший способ подойти к этому? По сути, я хочу обработать форматирование URL, чтобы затем попытаться проверить статус URL.
Заранее спасибо