Как грамотно составить запрос на сайт с правильной кодировкой?

Пишу простенькую программу для подбора синонимов заданного слова.
Она обращается к сайту, потом должен происходить парсинг и т.д.
Вот код на данный момент:
import requests

word = input('Введите слово для поиска синонимов: ')
url = 'http://trishin.net'
data = {"searchText": url, "mode": "leftPart"}
response = requests.get(url, data=data)
print(response.text)

Как мне изменить кодировку параметра моего запроса?
Вот правильные параметры, взятые сниффером с сайта: searchText=%E1%F0%E0%F2%E0%ED&mode=leftPart
Вот то, что мой скрипт передаёт: searchText=%D0%B1%D1%80%D0%B0%D1%82%D0%B0%D0%BD&mode=leftPart
  • Вопрос задан
  • 37 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Это - url закодированая строка в кодировке cp1251. Так что сначала кодируем ее в cp1251 через .encode('cp1251'), затем делаем urlencoding через urllib.parse.quote_plus()
Затем. Запрос там не get, а post, так что ставим его. Но сайт ничего не хотел возвращать, ему нужно побольше информации. Добавил куки + некоторые заголовки. Почему-то в словарь с formdata вы вместо word добавили url, так что исправим на word. Ну и приобразил немного в другой формат всю formdata

import requests
import urllib.parse


word = urllib.parse.quote_plus(input('Введите слово для поиска синонимов: ').encode('cp1251'))
url = 'http://trishin.net/'


headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
            'Referer': 'http://trishin.net/',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
            'Content-Type': 'application/x-www-form-urlencoded'}

s = requests.Session()
s.get('http://trishin.net')

payload = 'mode=leftPart&searchText={}&left=456511&right=2726'.format(word)
response = s.post(url, data=payload, headers=headers)

print(response.text)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы