@Wolron

Как получить все значения ключа «title» из кода спарсеной страницы?

Спарсилась страница в переменную. В ней есть HTML теги и част JSON кода в виде набора ключей и значений.
Вопрос- как записать значение определенного ключа в этой куче разных данных?

Вот часть кода спарсенной страницы:
[<form action="/fater/json/productlist?type=PRODUCT_LIST" class="js-ajax-request" data-ajax='{"url":"/fater/json/productlist?type=PRODUCT_LIST" ,  "requestParamSeries": [{"name":"standardFilters","checkFor":"values"},{"name":"rangeFilters","checkFor":"minValue","checkFor2":"maxValue"}], "dataRendering":true, "method":"POST"}' data-ajax-id="ajax-productlist" data-current-state-ajax-uri="/fater/json/productlist?categoryString=outletproducts&amp;type=PRODUCT_LIST" id="command" method="post" onsubmit="return false;"><script data-init-data="ajax-productlist" data-no-initial-callup="true" type="application/json">
                        {"response":{"cheap":"0","expensive":"0","items":[{"productIndex":"0","sku":"KA90IVI20R","type":"shop","title":"Холодильник Side by Side","isInComparison":false,"comparable":true,"productsInComparisonSize":0,"headers":["iQ500","Холодильник Side by Side","","177 x 91 cm","Inox-easyclean","KA90IVI20R"],"price":{"value":164990.0,"displayValue":"164 990,00 ₽"},"stockStatus":{"trafficLight":"green","text":"[G11]","buyable":true,"permanentlyNotAvailable":false},"link":"/fater/outlet/KA90IVI20R?breadcrumb=","productImage":{"src":"//media3.123.com/Product_Shots/{width}x{height}/MCSA00762608_E6797_KA90IVI20G_407519_def.jpg","alt":"KA90IVI20R"},"hookline":"Холодильник coolDuo серии iQ 500 типа \"side-by-side\" с технологией NoFrost, дополнительно оснащен дозатором для воды и льда.","keyBenefits":["Многопоточная система охлаждения multiAirflow обеспечивает равномерное распределение воздуха и охлаждение на всех уровнях холодильника.","Технология noFrost защищает от образования инея и избавит вас от необходимости размораживать холодильник.","Холодильник шириной 70см - существенное увеличение полезного объема для хранения продуктов.","Функция superFreezing понижает температуру на заданный промежуток времени, чтобы быстрее заморозить только что добавленные продукты.","Функция superCooling, или 'суперохлаждение', уменьшает температуру на заданное время,


Во сам скрипт:
import requests # модуль для парсинга
from bs4 import BeautifulSoup #модуль для парсинга

s = requests.Session()
loging = s.get(URL, headers=HEADERS, params=None)
soup = BeautifulSoup(loging.content, 'html.parser')


Пример : ключ "title" , значение "Холодильник Side by Side". И эти данные записать в словарь. В результате должен появится словарь со всеми значениями ключей "title", которые в коде страницы встречаются. Их там несколько десятков набирается.
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Полного кода страницы не видно, если там много JSON объектов, но их можно найти и отделить друг от друга, то сперва стоит найти все JSON строки, перевести их, собственно, в JSON (json.loads(s)) и там уже пробегая по всем ключам, искать title.

Могу предложить более простой вариант - регулярки.

import re

titles = re.findall(r'[\'\"]title[\'\"]: [\'\"](.+?)[\'\"]', loging.text)


[\'\"] для поддержки двух вариантов,
{"title": "Холодильник Side by Side"} и {'title': 'Холодильник Side by Side'}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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