Найти - Пользователи
Полная версия: парсинг веб страницы
Начало » Python для новичков » парсинг веб страницы
1
jerr
Всех приветсвую.
Есть веб страница, например:
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 свойства которые меняются как то динамически.

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

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

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

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

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


upd. Вроде дошло) погуглил по “data:text/css;base64”
и вроде разобрался) стиль действительно пишется в HTML толькко кодирован)
первый раз с таким столкнулся и подумал, вот же магия) а нет, все просто)
john123
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])
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB