CoderCastrov logo
CoderCastrov
Квора

Как раскрыть все ответы и комментарии на Quora с помощью Python и Selenium

Как раскрыть все ответы и комментарии на Quora с помощью Python и Selenium
просмотров
4 мин чтение
#Квора

Недавно мне понадобилось создать PDF-файл со всеми ответами и обсуждениями определенного пользователя Quora, в которого я заинтересован - https://www.quora.com/profile/Artem-Boytsov.

Сделать это вручную заняло бы у меня много часов работы, и я не мог быть уверен, что я действительно получил все ответы. У этого пользователя на Quora более 700 ответов и, вероятно, более 4000 комментариев, обсуждающих эти ответы, а также множество других, которые отображаются как удаленные.

Чтобы усложнить задачу, Quora имеет различные способы скрытия ответов и комментариев, и раскрытие одного вида раскрывает другие виды и наоборот.

Чтобы решить эту проблему, я написал скрипт на Python, который я назвал quora-expander, который повторно ищет все различные виды ссылок, которые Quora предлагает для раскрытия свернутого контента, и нажимает на них, пока не останется ни одной ссылки для нажатия. Чтобы убедиться, что я получил все ссылки, я сделал так, чтобы программа сама пыталась раскрыть все, что можно, но после завершения она дает пользователю возможность вручную выполнить любые или все те же команды снова.

Если вы хотите попробовать, перейдите по ссылке https://github.com/swiss-chris/quora-expander, где вы найдете инструкции по установке. Если вы хотите узнать немного больше о том, как это работает, читайте дальше.


В следующих абзацах я рассмотрю различные способы, которыми Quora скрывает свой контент. Я буду обсуждать их в том же порядке, в котором скрипт quora-expander выполняет свои команды:

1. Ленивая загрузка

Первое, что делает Quora, это показывает только несколько первых ответов для данного профиля пользователя. Чтобы увидеть больше, вам нужно прокрутить вниз, и дополнительные ответы будут загружаться по мере прокрутки. Поэтому первая команда, которую выполняет quora-expander, это do_scrolldown(). Он выполняет это до тех пор, пока страница не перестанет удлиняться.

2. Усечение (ответов)

Далее Quora загружает только первые несколько строк ответа, предлагая вам возможность показать "(еще)". Команда для автоматического выполнения этого для всех ответов на странице называется do_show_more_of_answers().

Нажатие на «(еще)» покажет остаток этого ответа

3. Просмотр большего количества комментариев

Теперь, когда все ответы загружены и развернуты, пришло время получить комментарии. Первый способ, которым Quora скрывает комментарии, заключается в том, что большинство непосредственных ответов скрываются за кнопкой "Просмотреть больше комментариев". Нажав на эту кнопку, Quora загрузит еще несколько комментариев, но только по несколько за раз. Команда для выполнения этого действия для всей страницы называется do_view_more_comments().

Кнопка «Просмотреть больше комментариев» загрузит несколько дополнительных комментариев верхнего уровня

4. Свернутые комментарии

Аналогично кнопке "Просмотреть больше комментариев", Quora иногда также показывает кнопку "Просмотреть свернутые комментарии", которая, кажется, делает примерно то же самое, что и кнопка "Просмотреть больше комментариев". Она загружает больше ответов первого уровня на ответ. После нажатия на кнопку "Просмотреть свернутые комментарии" может появиться новая кнопка "Просмотреть больше комментариев" после нее. Обе они, кажется, делают примерно одно и то же. Команда для автоматического выполнения этого действия для всей страницы называется do_view_collapsed_comments().

Кнопка «Просмотреть свернутые комментарии» делает примерно то же самое, что и «Просмотреть больше комментариев»

5. Предварительные просмотры продолжающихся комментариев

Когда у комментария первого уровня есть несколько уровней ответов, Quora скрывает большую часть этого обсуждения под однострочным предварительным просмотром следующего ответа в цепочке. Нажатие на эту строку загрузит следующие несколько строк и так далее. Команда для автоматического выполнения этого действия называется do_expand_hidden_comments().

Нажатие на более темно-серую область внизу этой цепочки полностью загрузит этот последний комментарий, а также возможные последующие комментарии

6. Скрытие дополнительных ответов

Еще один способ, которым Quora может скрывать продолжающиеся обсуждения, - это кнопка "Показать еще ответы". Команда для нажатия на все кнопки этого типа называется do_view_more_replies().

Нажатие на кнопку «Показать еще ответы» загрузит больше комментариев в этой цепочке

7. Усечение комментариев

Наконец, Quora будет делать то же самое с отдельными комментариями, что и с ответами, усекая их, если они слишком длинные, и предлагая кнопку «(еще)», чтобы показать остальное. Команда для автоматического выполнения этого называется do_show_more_of_comments().

Нажатие на «(еще)» покажет остальную часть этого комментария

8. Попробуйте снова

Есть еще один способ, которым Quora может скрывать информацию, и это просто если у вас пропала интернет-соединение перед нажатием одной из кнопок. В этом случае Quora благодарно покажет вам кнопку «Попробуйте снова», позволяя вам повторить попытку, когда вы восстановите подключение к интернету и/или серверам Quora. Команда для поиска и нажатия этих кнопок на вашей странице называется do_try_again().

Нажатие на «Попробуйте снова» попытается загрузить тот же контент после последней неудачной попытки

Итак, теперь вы знаете все, что нужно знать о различных способах скрытия контента на странице профиля пользователя Quora. Чтобы запустить скрипт самостоятельно, перейдите по ссылке https://github.com/swiss-chris/quora-expander, где вы найдете инструкции по установке.


PS, есть еще один финальный трюк, который я хочу поделиться с вами. Если вы все же создаете PDF-файл с Quora страницы, одна интересная функция заключается в том, что при нажатии на даты любого ответа или комментария вы сразу перейдете к этому ответу или комментарию на веб-сайте Quora, даже если этот комментарий затерян в длинной цепочке вложенных комментариев. Quora автоматически развернет все комментарии в этой цепочке до комментария, на который вы нажали. Довольно круто!


Если вам понравилась эта статья, пожалуйста, нажмите на кнопку 👏. Спасибо!