Как отделить json от всего кода полученного requests.get ?

contikiv1

Новичок
Пользователь
Фев 10, 2022
19
2
3
Здравст.

выполняю такой скрипт:
===
Python:
url = 'https://yandex.ru/images/search?from=tabbar&text=газоанализатор авг-4-0.01'

# params = {}

# headers = {}

rs = requests.get(url, proxies=proxies, verify = path_sert)

print(rs)

print(rs.json())
===
команда print(rs) работает - “<Response 200>”
команда print(rs.json()) - ошибка

вот похожий рабочий пример, в нем для реквеста заданы парамс и хидерс, подозреваю что и мне надо их задать, но не знаю какие они должны быть для моей ссылки, где это прочитать?, плз помочь :

Python:
url = 'https://1xstavka.ru/results/getmain'

params = {'showAll': ‘true’, ‘date’: ‘2020-04-30’}

headers = {'X-Requested-With': ‘XMLHttpRequest’}

print(“”)

print(url)

rs = requests.get(url, params=params, headers=headers, proxies=proxies, verify = path_sert)

print(rs.json())
 
Последнее редактирование:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
1) Как вставлять код
1644494056942.png
2) Что ты надеешься получить в json коде, когда делаешь запрос на страницу с картинками? На сколько я знаю Яндекс картинки не возвращают json
 

contikiv1

Новичок
Пользователь
Фев 10, 2022
19
2
3
1) Как вставлять код
Посмотреть вложение 1621
2) Что ты надеешься получить в json коде, когда делаешь запрос на страницу с картинками? На сколько я знаю Яндекс картинки не возвращают json

если сделать запрос в таком виде, то получаю некий сырой код, как из него получить например все "img_href"?

Python:
url = 'https://yandex.ru/images/search?from=tabbar&text=%D0%B3%D0%B0%D0%B7%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%20%D0%B0%D0%B2%D0%B3-4-0.01'
rs = requests.get(url, proxies=proxies, verify = path_sert).content
soup = BeautifulSoup(rs, 'html.parser')
print(soup)
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Писать парсер, почитай про BeautifulSoup
 

contikiv1

Новичок
Пользователь
Фев 10, 2022
19
2
3
БС дает мне общий сырой код, но из него не выходит БСом добыть например img_href.
Вот попробуй добыть img_href из параметра soup с помощью БС.

Python:
url = 'https://yandex.ru/images/search?from=tabbar&text=%D0%B3%D0%B0%D0%B7%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%20%D0%B0%D0%B2%D0%B3-4-0.01'
rs = requests.get(url).content
soup = BeautifulSoup(rs, 'html.parser')
print(soup)
 
Последнее редактирование:

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
А, я понял, там картинки генерятся с помощью js.
Тогда думаю проще всего будет найти python библиотеку для поиска картинок
 

contikiv1

Новичок
Пользователь
Фев 10, 2022
19
2
3
А, я понял, там картинки генерятся с помощью js.
Тогда думаю проще всего будет найти python библиотеку для поиска картинок
В этом примере нужную часть кода успешно получается отделить. Только там автор парамс и хидерс задает. У моей ссылки другая специфика? Нельзя как то выудить этот код?
Вот так он начинется и з него я уже умею достать параметр:
{'title': 'Access to website is restricted', 'message': 'COUNTRY', 'template': 'block/v2/block_v2', 'data': {'CURRENT_IP': '50.114.31..................

Python:
url = 'https://1xstavka.ru/results/getmain'
params = {'showAll': 'true', 'date': '2020-04-30'}
headers = {'X-Requested-With': 'XMLHttpRequest'}
print("")
print(url)
rs = requests.get(url, params=params, headers=headers, proxies=proxies, verify = path_sert)
print(rs.json())
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
парамс и хидерс, это параметры и заголовки. Логика у всех ссылок своя, некоторые возвращают json, некоторые (чаще так) html. Иногда в html содержится js код, и с ним уже сложнее, его должен выполнять браузер. И если содержимое страницы создается js кодом, то получить это содержимое уже сложней. На ютубе есть виде про парсинг сайтов, можешь там посмотреть попробовать, например вот
 

contikiv1

Новичок
Пользователь
Фев 10, 2022
19
2
3
а если все так копать в сторону добычи нужного кода из сырого кода, то как правильно формулировать запрос в гугл для моего случая:
достать json из реквест
или как ?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
в твоем случае (получение картинки) json вообще нет, не возвращает твоя ссылка json с информацией о картинках, ни как. Ты можешь сам распарсить сайт, и собрать данные в json, но доставать в твоем случае нечего.

Ты лучше определи цель, что ты вообще хочешь сделать, получить картинки по запросу?
 

contikiv1

Новичок
Пользователь
Фев 10, 2022
19
2
3
попробую сначала)
с помощью BeautifulSoup получаю некий сырой код (переменная soup)

Python:
url = 'https://yandex.ru/images/search?from=tabbar&text=%D0%B3%D0%B0%D0%B7%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%20%D0%B0%D0%B2%D0%B3-4-0.01'
rs = requests.get(url).content
soup = BeautifulSoup(rs, 'html.parser')
print(soup)

В этом коде есть нужные мне данные, например поле img_href.
Получить это поле с помощью BeautifulSoup как делал до этого со стандартным хтмл-кодом не выходит.
Подозреваю что все таки можно какими то командами достать поле img_href .
На вид это данные типа: "пп":"рр", "сс":"вв",....
Плз подсказать.

пример части кода
Код:
-13u-sp-11-photo-7.jpg&amp;text=%D0%B3%D0%B0%D0%B7%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80+%D0%B0%D0%B2%D0%B3-4-0.01&amp;rpt=simage","img_href":"https://zapadpribor.com/static/images/catalog/15799/800x600/ltk-13u-sp-11-photo-7.jpg","useProxy":false,"pos":0,"id":"51b7a978701461a5bb9687c324805027","rimId":"5c26b59f433a7811058d7911543d3121","docid":"Z56E4025DF18EE1BC","similarOffers":[],"otherOffers":[],"isMarketIncut":false,"counterPath":"thumb/normal"}}' data-size="[426,320]" data-type="o" id="51b7a978701461a5bb9687c324805027" role="listitem"><div class="serp-item__preview"
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Держи:
Python:
import requests
import re
url = 'https://yandex.ru/images/search?from=tabbar&text=%D0%B3%D0%B0%D0%B7%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80%20%D0%B0%D0%B2%D0%B3-4-0.01'
rs = requests.get(url).text
rez = re.findall(r'"img_href":"([^"]+)', rs)
print(*rez, sep='\n')
 

contikiv1

Новичок
Пользователь
Фев 10, 2022
19
2
3
Большое спасибо!

Это что то по типу поиска со звездочками, типа найти "img_href*jpg"
Верно понимаю?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Большое спасибо!

Это что то по типу поиска со звездочками, типа найти "img_href*jpg"
Верно понимаю?
Да, верно, это регулярные выражения. Очень мощная штука

Пара статей про их использование:
 

contikiv1

Новичок
Пользователь
Фев 10, 2022
19
2
3
Да, верно, это регулярные выражения. Очень мощная штука

Пара статей про их использование:

вчера начал думать в эту сторону - типа как найти "img_href*jpg" в строке", но еще не добрался до команд пайтона
ты меня опередил)
спасибо!!!
 
  • Мне нравится
Реакции: Vershitel_sudeb

Форум IT Специалистов