591 подписчик

Как мне удалось быстро извлечь скрытое содержимое веб-страницы с Python

119 прочитали

Все настоящие смыслы скрыты. Жизнь полна секретов, и ограниченных людей, и сладких пустых разговоров, в которых нет смысла. Реально то, что скрыто в нас. (Л. Дж. Шэн)

Работая с веб-страницами, помните, что знания Python вам сильно пригодятся при необходимости извлечь труднодоступное содержимое, в том числе намеренно скрытое. Так, мне удалось получить исходный код Jupyter блокнота, который передавался в словаре как параметр одной из функций.

Стандартом де-факто при парсинге веб-страниц является библиотека BeautifulSoup, о которой я неоднократно писал ранее. Однако не редко встречаются задачи, с которыми легко справиться, имея только базовые знания о Python.

В моем конкретном примере нужный код располагался в json строке с ключом notebook. Начало фрагмента имеет следующий вид:

Все настоящие смыслы скрыты. Жизнь полна секретов, и ограниченных людей, и сладких пустых разговоров, в которых нет смысла. Реально то, что скрыто в нас. (Л. Дж.

В голову пришло два решения задачи: найти идентификаторы начала, конца ноутбука и считать между ними или начать с первой скобки '{' и считать все до ее завершающей пары. Сначала считаем содержимое файла (сохранил страницу локально):

Все настоящие смыслы скрыты. Жизнь полна секретов, и ограниченных людей, и сладких пустых разговоров, в которых нет смысла. Реально то, что скрыто в нас. (Л. Дж.-2

Считываем содержимое между двумя идентификационными частями

Первым способом я нашел уникальные подстроки начала и конца, "рядом" с которыми располагались символы старта и завершения json строки:

Все настоящие смыслы скрыты. Жизнь полна секретов, и ограниченных людей, и сладких пустых разговоров, в которых нет смысла. Реально то, что скрыто в нас. (Л. Дж.-3

Считывание содержимого между парой скобок

Во втором способе я написал цикл поиска парной скобки (та, после которой счетчики вхождений "{" и "}" сравняются):

Все настоящие смыслы скрыты. Жизнь полна секретов, и ограниченных людей, и сладких пустых разговоров, в которых нет смысла. Реально то, что скрыто в нас. (Л. Дж.-4

Теперь можно просматривать файлы в любой Jupyter среде.

Все настоящие смыслы скрыты. Жизнь полна секретов, и ограниченных людей, и сладких пустых разговоров, в которых нет смысла. Реально то, что скрыто в нас. (Л. Дж.-5