Size: a a a

2020 June 15

SS

Sergey Sergey in Scrapy
Добрый день!
По этому адресу https://www.perekrestok.ru/catalog/skidki-mesyatsa/tovary-za-1-rubl?page=1&sort=rate_desc&ajax=true
получаю JSON. Но он разный в скрейпи и при помощи requests. При получении из скрейпи не получается привести его в нормальный вид. Замучился с кодировками.
При этом из реквеста все отлично. Есть ли способ либо нормально перекодировать либо заменить запрос скрейпи на запрос через реквест не сбивая логику?
источник

МС

Михаил Синегубов... in Scrapy
Sergey Sergey
Добрый день!
По этому адресу https://www.perekrestok.ru/catalog/skidki-mesyatsa/tovary-za-1-rubl?page=1&sort=rate_desc&ajax=true
получаю JSON. Но он разный в скрейпи и при помощи requests. При получении из скрейпи не получается привести его в нормальный вид. Замучился с кодировками.
При этом из реквеста все отлично. Есть ли способ либо нормально перекодировать либо заменить запрос скрейпи на запрос через реквест не сбивая логику?
1. чем он разный
2. заголовки те же самые шлешь? вообще, волшебства не бывает. если ты заголовки шлешь одни и те же, то и результат получишь соответствующий. За редким исключением.
источник

SS

Sergey Sergey in Scrapy
Михаил Синегубов
1. чем он разный
2. заголовки те же самые шлешь? вообще, волшебства не бывает. если ты заголовки шлешь одни и те же, то и результат получишь соответствующий. За редким исключением.
1) Разный в кодировке.
со скрейпи вижу так
data-gtm-category-name=\"\u0422\u0432\u043e\u0440\u043e\u0433,
а реквест выдает так
data-gtm-category-name="Творог, сырки"
2) Заголовки идентичные. Грешу на то, как сами запросы передают мне ответы.
источник

AR

Andrey Rahmatullin in Scrapy
не надо читать джсон глазами
источник

МС

Михаил Синегубов... in Scrapy
1. засунь ответ в объект JSON идивись
источник

SS

Sergey Sergey in Scrapy
Sergey Sergey
1) Разный в кодировке.
со скрейпи вижу так
data-gtm-category-name=\"\u0422\u0432\u043e\u0440\u043e\u0433,
а реквест выдает так
data-gtm-category-name="Творог, сырки"
2) Заголовки идентичные. Грешу на то, как сами запросы передают мне ответы.
Дальше пытаюсь перекодировать при помощи .encode('utf-8').decode('unicode-escape')
но остаются лишние символы, которые не позволяют нормально обрабатывать парсинг
источник

AR

Andrey Rahmatullin in Scrapy
лол
источник

SS

Sergey Sergey in Scrapy
Михаил Синегубов
1. засунь ответ в объект JSON идивись
да, так и делаю
источник

МС

Михаил Синегубов... in Scrapy
Sergey Sergey
да, так и делаю
нет, не делаешь, просто сделай json.loads(response.text)
источник

МС

Михаил Синегубов... in Scrapy
и погугли что означают всякие непонятные \uXXXX
источник

SS

Sergey Sergey in Scrapy
Михаил Синегубов
нет, не делаешь, просто сделай json.loads(response.text)
Делаю
jsonresponse = json.loads(response.text)
page = jsonresponse["html"]
productdata = response.xpath('//*[contains(@class, "js-catalog-product")]'@class, "js-catalog-product")]').extract()
for item in productdata:
   # print(item.encode('utf-8').decode('unicode-escape'))
   и тут уже жопа
   
pass
источник

AR

Andrey Rahmatullin in Scrapy
response.xpath по респонсу, в котором джсон?
источник

SS

Sergey Sergey in Scrapy
Михаил Синегубов
и погугли что означают всякие непонятные \uXXXX
это юникод, но привести его к нормальному виду не выходит
источник

AR

Andrey Rahmatullin in Scrapy
это не юникод, это джсоновые и/или питоньи эскейпы
источник

МС

Михаил Синегубов... in Scrapy
ахах 😂
источник

МС

Михаил Синегубов... in Scrapy
на самом деле, определись как ты работаешь со страницей. Либо через JSON, либо через XML (и еже с ними, в смысле, просто как с HTML текстом)
источник

SS

Sergey Sergey in Scrapy
Михаил Синегубов
на самом деле, определись как ты работаешь со страницей. Либо через JSON, либо через XML (и еже с ними, в смысле, просто как с HTML текстом)
мне HTML приходит в JSON по ключу «html».
То есть страница по аяксу получает хтмл, который просто добавляет в дом.
И этот хтмл я пытаюсь распарсить
источник

AR

Andrey Rahmatullin in Scrapy
из кода этого не видно
источник

✏d

✏️ Oleksandr dntPani... in Scrapy
Sergey Sergey
мне HTML приходит в JSON по ключу «html».
То есть страница по аяксу получает хтмл, который просто добавляет в дом.
И этот хтмл я пытаюсь распарсить
тогда полученый хтмл надо преобрразовать в структурированое дерево, прежде чем юзать х-паз
источник

МС

Михаил Синегубов... in Scrapy
Sergey Sergey
мне HTML приходит в JSON по ключу «html».
То есть страница по аяксу получает хтмл, который просто добавляет в дом.
И этот хтмл я пытаюсь распарсить
productdata = response.xpath('//*[contains(@class, "js-catalog-product")]'@class, "js-catalog-product")]').extract()

тогда почему ты ищешь по респонсу а не по page ?
источник