Уведомления

Группа в Telegram: @pythonsu

#1 Март 17, 2015 17:36:56

jerr
Зарегистрирован: 2015-03-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

парсинг веб страницы

Всех приветсвую.
Есть веб страница, например:
https://repka.ua/smartfony/samsung-galaxy-ace-4-duos-g313hu-charcoal-grey-152171/
на которой для поля цены, такой блок кода:

<div class="price">
<span class="price-name">Цена</span>
<span>
<span class="KKUrAhs tmbIfKo uRbOnyHO iXdCFBxQr XdStt HXVQb">2 719</span>
<span class="UJmkvgDr dgzacsn vPCMx BdXLjwMrL lozUVr">2 699</span>
<span class="NkndCPS lHgPQJFrq hdAxDbdnQ Lpjbc iXdCFBxQr">2 734</span>
<span class="iXdCFBxQr Lpjbc lGLsj bwOwP fcVFXx">2 786</span>
<span class="HXVQb Lpjbc twFhTEECR krqpfC zKKwJyrpm blmQDdHFb">2 614</span>
<span class="UiXQF YTyPhBzYr iXdCFBxQr XdStt kEnXCoUg">2 605</span>
<span class="JeAHZ dCOqmeLb CWVnBH uHZOM QMYQOMO">2 621</span>
<span class="dpOVY UPVbyNH JeAHZ Lpjbc">2 709</span>
<span class="iXdCFBxQr JeAHZ UBYkUzS BloNKgGPZ UMbhfxjJ">2 669</span>
</span>
<span class="price-currency">грн</span>
</div>

если вы откроете фаербагом то увидите что одно из этих полей светится а остальные спрятаны.
И как можно заметить свойства CSS вычисляются как то хитро, а не однотипно передаются.

Подскажите какими средствами Python можно выдрать свойства CSS для этого блока.
сам кусок кода, получить могу.. прилинкованные css тоже могу получать, но в них эти стили не задаются)
Интересно как можно на питоне получить атрибуты этих стилей, которые все время меняются динамически.

Зы. цену получить я могу другим способом из других полей на странице) интересно именно как получать css свойства которые меняются как то динамически.

Заранее всем спасибо)

Офлайн

#2 Март 17, 2015 17:43:19

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

парсинг веб страницы

jerr
как получать css свойства которые меняются как то динамически
получать css файл вместе со страницой

Офлайн

#3 Март 17, 2015 19:15:29

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

парсинг веб страницы

jerr
но в них эти стили не задаются)
jerr
которые все время меняются динамически.
или эти стили прописаны не в линкованых файлах, а в самой html-ки
или стили задаются js, поищите в js скриптах, может там будет



————————————————
-*- Simple is better than complex -*-

Офлайн

#4 Март 18, 2015 11:49:06

jerr
Зарегистрирован: 2015-03-17
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

парсинг веб страницы

Наверное здесь вопрос, не столько по питону, склько по вебу)
помогите понять как формируется стиль для классов данного блока)
с этим у меня трудность.

Когда в фаербаге для любого элемента смотришь стиль, он справа показывает файл в котором этот стиль прописан и строку) можно скачать файл по ссылке, распарсить и понять какой из дивов скрытый а какой нет.
В этом случае путь стиля файрбаг показывает в таком виде, что для меня является загадкой, что с ним дальше делать)

data:text/css;base64,LnNqV2Fyc0xGYntkaXNwbGF5Om5vbmU7fS56UGpjalZNZ1N7ZGlzcGxheTpub25lO30uTUllb2VRe2Rpc3BsYXk6aW5saW5lO30uZ2RoRWp7ZGlzcGxheTpub25lO30uZ09BenR1UntkaXNwbGF5OmlubGluZTt9LkN0S3B2ZntkaXNwbGF5Om5vbmU7fS5IaGhVRXVVcHtkaXNwbGF5OmlubGluZTt9Lm1WZlB4e2Rpc3BsYXk6aW5saW5lO30uZkh1bkdjYm57ZGlzcGxheTpub25lO30udVVBZ3ZnQm97ZGlzcGxheTpub25lO30udXhVWFRsY3J7ZGlzcGxheTppbmxpbmU7fS52akVBc1lFeGJ7ZGlzcGxheTpub25lO30ucGNyTUNFbHtkaXNwbGF5OmlubGluZTt9LnhlWVhqRXtkaXNwbGF5Om5vbmU7fS50Z1JTQmZ7ZGlzcGxheTpub25lO30uRGZMVXluWE57ZGlzcGxheTppbmxpbmU7fS5kYm5QR3hoU3tkaXNwbGF5OmlubGluZTt9LmtKRVl3e2Rpc3BsYXk6aW5saW5lO30udUh3cXRke2Rpc3BsYXk6bm9uZTt9Lm91YmpIVXdMWXtkaXNwbGF5OmlubGluZTt9

но, всетаки, если фаербаг может показывать
.tgRSBf {
display: none;}
может есть возможность как то это свойство получить) сори, даже не знаю как правильно сформулировать вопрос))

да, я как то догадываюсь что стиль меняеся JS, но вот ни опыта ни знаний не хватило что бы эту мысль дальше развить. И найти как именно вычисляется скрытое поле или нет.

Буду благодарен, кто поможет)


upd. Вроде дошло) погуглил по “data:text/css;base64”
и вроде разобрался) стиль действительно пишется в HTML толькко кодирован)
первый раз с таким столкнулся и подумал, вот же магия) а нет, все просто)

Отредактировано jerr (Март 18, 2015 13:10:01)

Офлайн

#5 Март 18, 2015 18:47:07

john123
Зарегистрирован: 2013-12-22
Сообщения: 56
Репутация: +  7  -
Профиль   Отправить e-mail  

парсинг веб страницы

jerr
В этом случае путь стиля файрбаг показывает в таком виде, что для меня является загадкой, что с ним дальше делать)
Вот, почитайте: https://ru.wikipedia.org/wiki/Data:_URL

Вкратце: это такой способ подключения каких-либо мелких файлов прямо в страницу.
Кодируется всё это, как Вы уже успели заметить в base64 (data:text/css;base64).

Следовательно Вам просто нужно извлечь закодированную строку после запятой и раскодировать её при помощи модуля base64:

from base64 import b64decode
  
src = 'data:text/css;base64,LnNqV2Fyc0xGYntkaXNwbGF5Om5vbmU7fS56UGpjalZNZ1N7ZGlzcGxheTpub25lO30uTUllb2VRe2Rpc3BsYXk6aW5saW5lO30uZ2RoRWp7ZGlzcGxheTpub25lO30uZ09BenR1UntkaXNwbGF5OmlubGluZTt9LkN0S3B2ZntkaXNwbGF5Om5vbmU7fS5IaGhVRXVVcHtkaXNwbGF5OmlubGluZTt9Lm1WZlB4e2Rpc3BsYXk6aW5saW5lO30uZkh1bkdjYm57ZGlzcGxheTpub25lO30udVVBZ3ZnQm97ZGlzcGxheTpub25lO30udXhVWFRsY3J7ZGlzcGxheTppbmxpbmU7fS52akVBc1lFeGJ7ZGlzcGxheTpub25lO30ucGNyTUNFbHtkaXNwbGF5OmlubGluZTt9LnhlWVhqRXtkaXNwbGF5Om5vbmU7fS50Z1JTQmZ7ZGlzcGxheTpub25lO30uRGZMVXluWE57ZGlzcGxheTppbmxpbmU7fS5kYm5QR3hoU3tkaXNwbGF5OmlubGluZTt9LmtKRVl3e2Rpc3BsYXk6aW5saW5lO30udUh3cXRke2Rpc3BsYXk6bm9uZTt9Lm91YmpIVXdMWXtkaXNwbGF5OmlubGluZTt9'
print b64decode(src.split(',')[1])

Отредактировано john123 (Март 18, 2015 18:47:39)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version