Ввод ссылки без протокола - py requests

Задача заключается в вводе ссылки для requests без протокола и без ://. Должны приниматься и после обрабатываться ссылки типа:

https://stackoverflow.com/
stackoverflow.com
http://cppstudio.com/

код:

import re, requests
from collections import Counter
from prettytable import PrettyTable

url_input = str(input("Enter url: "))

url_checked = re.findall(r'regex here', url_input)[0]

response = requests.get(url_checked)

result = re.findall( r"\"(?:http[s]?://)([^:/\s\"]+)/?[^\"]*\"", response.text)

result.sort()

pt = PrettyTable(field_names = ["word", "counter"])
pt.add_rows(list(Counter(result).most_common()))
print(pt)

измененный код:

import re, requests, validators
from collections import Counter
from prettytable import PrettyTable

url_input = str(input("Enter url: ").strip())

validators.url(url_input)
if not validators.url(url_input):
    print("Entered link is not correct...")
    quit()

if not url_input.startswith(('http://', 'https://')):
    try:
        response = requests.get("https://" + url_input)
    except:
        response = requests.get("http://"  + url_input)

result = re.findall( r"\"(?:http[s]?://)([^:/\s\"]+)/?[^\"]*\"", response.text)
result.sort()

pt = PrettyTable(field_names=["word", "counter"])
pt.add_rows(list(Counter(result).most_common()))
print(pt)

Ответы (1 шт):

Автор решения: NEWME0

Не везде нужно использовать regex.

В python есть масса более понятных функций для работы со строками.

import re
import requests
from collections import Counter
from prettytable import PrettyTable


url_input = input("Enter url: ").strip()

if url_input.startswith('http://'):
    url_input = url_input[7:]
if url_input.startswith('https://'):
    url_input = url_input[8:]

try:
    response = requests.get("https://" + url_input)
except:
    response = requests.get("http://" + url_input)

result = re.findall( r"\"(?:http[s]?://)([^:/\s\"]+)/?[^\"]*\"", response.text)
result.sort()

pt = PrettyTable(field_names=["word", "counter"])
pt.add_rows(list(Counter(result).most_common()))

print(pt)
→ Ссылка