Ввод ссылки без протокола - 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)