@Fee1in

Как получить русский текст (который отображается не по- русски) из html ссылки и вставить в название файла?

Добрый день!
Писал простенький парсер, и название конечного csv файла брал из html ссылки которая была подана на ввод. Но если с английскими символами файл сохранялся, то с русскоязычными html ссылка пишется в кодировке без русских символов и взять русскоязычное название не получается.
URL = input('Введите URL: ')
URL = URL.strip()
a = str(URL)
#Первая часть забирает регион (город), вторая часть пишет search -, третья часть забирает запрос поиска
a = (((a.split('/')).pop(3)).split('?')).pop(0) + ' search- ' + ((((a.split('/')).pop(-1)).split('=')).pop(-1)).replace('+',' ')
FILE = f'{a}.csv'
save_file(item, FILE)


пример:
https://www.сайт.ru/moscow?q=%D0%BA%D0%BD%D0%B8%D0%B3%D0%B0+%D0%B4%D0%BB%D1%8F+%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D1%8F

вот такого вида ссылка
из этой ссылки я забираю moscow и надо забрать текст после
'https://www.сайт.ru/moscow?q='
и конечный результат должен быть такой:
a='moscow search- книга для чтения'
Я понимаю, что когда получаю название для файла приходится использовать большие "грабли" в виде split(),pop(). Может есть еще проще способ? И как лучше преобразовать кодировку в русскую?
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
from urllib.parse import unquote
unquote('https://www.сайт.ru/moscow?q=%D0%BA%D0%BD%D0%B8%D0%B3%D0%B0+%D0%B4%D0%BB%D1%8F+%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D1%8F')
'https://www.сайт.ru/moscow?q=книга+для+чтения'

или

from urllib.parse import urlparse, parse_qs
v = parse_qs(urlparse('https://www.сайт.ru/moscow?q=%D0%BA%D0%BD%D0%B8%D0%B3%D0%B0+%D0%B4%D0%BB%D1%8F+%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D1%8F').query)
v['q']
['книга для чтения']


учитесь гуглить, и читайте книги без этого так и будете плодить элементарные вопросы
еще есть удобная либа furl для всей ентой магии, она несколько удобнее стандартной
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Fee1in Автор вопроса
По совету Влад Григорьев воспользовался furl
from furl import furl
from datetime import datetime
URL='https://www.сайт.ru/город/категория/book-dfgdfge?pmax=100&pmin=10&q=книга+для+чтения'
a = (furl(URL)).asdict()
a=datetime.strftime(datetime.now(), "%Y_%m_%d__%H_%M__") +a['path']['segments'][0] + '_' + a['query']['params'][-1][-1]

в итоге 'a' получим в формате ГГГГ_ММ_ДД__ЧЧ_ММ__город_книга+для+чтения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы