Сделать запрос через requests
Не знаю, как правильно передать параметры через requests при отправке запроса на сайт? Когда я пытался множеством разных способов, я не получал необходимый результат, всё что имел это сообщение от сайта "Нет результатов".
Я хочу отправить параметры, которые есть на скриншоте на сайт https://www.057.ua/map
Вот сами параметры:
jsonrpc: "2.0"
method: "catalogSearch"
params: {searchWord: "героев труда"}
Результатом должен быть текст на сайте:
"вулиця Героїв Праці, Харків"
Ответы (1 шт):
Автор решения: Jack_oS
→ Ссылка
import requests
url = 'https://www.057.ua/map/jsonrpc'
headers = {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36",
"accept": "application/json, text/javascript, */*; q=0.01"
}
payload = {
"jsonrpc":"2.0",
"method":"catalogSearch",
"params":{"searchWord":"героев труда"}
}
r = requests.post(url, headers=headers, json=payload)
В r.status_code - статус, в r.json() - результат:
>>> r.status_code
200
>>> r.json()
{"jsonrpc":"2.0","id":"75720d7d25f3b81ca6caefa987308e6c","result":"<div class=\"map-card map-card--lux\"> <div class=\"map-card__logo\">\n <img class=\"img-fluid\" src=\"https:\/\/s.057.ua\/section\/cataloglogo\/subdir\/list\/upload\/images\/catalog\/000\/000\/744\/tkfiwulkauy_14762088511059521c995208e.png\" alt=\"\"\/> <\/div>\n <div class=\"map-card__info\">\n <div class=\"map-card__title\">\n <a href=\"https:\/\/operativnaya-poligrafiya.057.ua\" rel=\"nofollow\" target=\"_blank\">\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u043e\u043b\u0438\u0433\u0440\u0430\u0444\u0438\u044f, \u043a\u043e\u043f\u0438-\u0446\u0435\u043d\u0442\u0440 \u00ab\u041a\u0443\u0442\u0443\u0437\u043e\u0432\u0441\u043a\u0438\u0439\u00bb<\/a> <\/div>\n <div class=\"map-card__info-items\">\n <div class=\"map-card__info-item map-card__info-item--address\">\n <svg width=\"12\" height=\"12\"><use xlink:href=\"#svg-map-placeholder\"><\/use><\/svg>\n <span>\n 61000, \u0425\u0430\u0440\u044c\u043a\u043e\u0432, \u0413\u0435\u0440\u043e\u0435\u0432 \u0422\u0440\u0443\u0434\u0430, 24, \u0437\u0430 \u043a\u043b\u0443\u0431\u043e\u043c "\u041a\u043e\u043c\u043f\u0430\u0441" <\/span>\n <div class=\"address-info\" data-address='{\"lat\":50.0233691,\"lng\":36.3366664,\"title\":\"\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u043e\u043b\u0438\u0433\u0440\u0430\u0444\u0438\u044f, \u043a\u043e\u043f\u0438-\u0446\u0435\u043d\u0442\u0440 \u00ab\u041a\u0443\u0442\u0443\u0437\u043e\u0432\u0441\u043a\u0438\u0439\u00bb\",\"balloonContent\":\"61000, \u0425\u0430\u0440\u044c\u043a\u043e\u0432, \u0413\u0435\u0440\u043e\u0435\u0432 \u0422\u0440\u0443\u0434\u0430, 24, \u0437\u0430 \u043a\u043b\u0443\u0431\u043e\u043c \\u0022\u041a\u043e\u043c\u043f\u0430\u0441\\u0022\",\"icon\":\"https:\\\/\\\/www.057.ua\\\/design\\\/images\\\/map_icons\\\/01.png\",\"address\":\"\\u0022\u041e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u043e\u043b\u0438\u0433\u0440\u0430\u0444\u0438\u044f, \u043a\u043e\u043f\u0438-\u0446\u0435\u043d\u0442\u0440 \u00ab\u041a\u0443\u0442\u0443\u0437\u043e\u0432\u0441\u043a\u0438\u0439\u00bb\\u0022 - 61000, \u0425\u0430\u0440\u044c\u043a\u043e\u0432, \u0413\u0435\u0440\u043e\u0435\u0432 \u0422\u0440\u0443\u0434\u0430, 24, \u0437\u0430 \u043a\u043b\u0443\u0431\u043e\u043c \\u0022\u041a\u043e\u043c\u043f\u0430\u0441\\u0022\"}'><\/div> <\/div>\n <div class=\"map-card__info-item\">\n <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 578.106 578.106\" width=\"12\" height=\"12\"><path d=\"M577.83 456.128c1.225 9.385-1.635 17.545-8.568 24.48l-81.396 80.781c-3.672 4.08-8.465 7.551-14.381 10.404-5.916 2.857-11.729 4.693-17.439 5.508-.408 0-1.635.105-3.676.309-2.037.203-4.689.307-7.953.307-7.754 0-20.301-1.326-37.641-3.979s-38.555-9.182-63.645-19.584c-25.096-10.404-53.553-26.012-85.376-46.818-31.823-20.805-65.688-49.367-101.592-85.68-28.56-28.152-52.224-55.08-70.992-80.783-18.768-25.705-33.864-49.471-45.288-71.299-11.425-21.828-19.993-41.616-25.705-59.364S4.59 177.362 2.55 164.51-.306 141.56.102 134.216c.408-7.344.612-11.424.612-12.24.816-5.712 2.652-11.526 5.508-17.442s6.324-10.71 10.404-14.382L98.022 8.756c5.712-5.712 12.24-8.568 19.584-8.568 5.304 0 9.996 1.53 14.076 4.59s7.548 6.834 10.404 11.322l65.484 124.236c3.672 6.528 4.692 13.668 3.06 21.42-1.632 7.752-5.1 14.28-10.404 19.584l-29.988 29.988c-.816.816-1.53 2.142-2.142 3.978s-.918 3.366-.918 4.59c1.632 8.568 5.304 18.36 11.016 29.376 4.896 9.792 12.444 21.726 22.644 35.802s24.684 30.293 43.452 48.653c18.36 18.77 34.68 33.354 48.96 43.76 14.277 10.4 26.215 18.053 35.803 22.949 9.588 4.896 16.932 7.854 22.031 8.871l7.648 1.531c.816 0 2.145-.307 3.979-.918 1.836-.613 3.162-1.326 3.979-2.143l34.883-35.496c7.348-6.527 15.912-9.791 25.705-9.791 6.938 0 12.443 1.223 16.523 3.672h.611l118.115 69.768c8.571 5.308 13.67 12.038 15.303 20.198z\"><\/path><\/svg>\n <span>+380(93)565-00-65<\/span> <\/div>\n <\/div>\n <\/div>\n<\/div><div class=\"map-card map-card--premium\"> <div class=\"map-card__logo\">\n <img class=\"img-fluid\"
...
<\/div>\n <\/div>\n <\/div>\n<\/div>"}
заберите оттуда html и парсьте с BeautifulSoup:
from bs4 import BeautifulSoup
html = r.json()['result']
soup = BeautifulSoup(html, 'html.parser')
