Часть 1: Начало работы — Использование автоматизации с Python

Если вы в чем-то похожи на меня, вы видите то, что выглядит захватывающим произведением, и добавляете его в список для чтения. Но давайте будем честными, вы когда-нибудь читали эти статьи и очищали список? Или он просто растет и растет? В моем случае он просто вырос до списка из 960 историй! LinkedIn только предполагает, что у меня есть более 10 сохраненных статей, что скрывает количество вещей, которые я хотел прочитать, но так и не сделал! Так как же решить длинный список чтения? Когда я заметил длину своего списка, я сказал, что мне нужен скрипт Python, чтобы разобраться в нем!

Разбираемся

Я всегда говорю, что надо разобраться! Но часто нужно сделать шаг назад и спросить, как это выглядит? Как будет выглядеть конечный продукт?

  • Будет ли результатом отсутствие ничего в списке для чтения?
  • Будет ли общее снижение до 10+ хорошим результатом?
  • Поможет ли составление резюме статей?
  • Мы вообще знаем, какие темы освещаются? некоторые случаи важнее других?
  • Все статьи доступны? Или некоторые удалены?

Важно начать с однозначного определения того, что сделано!

Удаление статьи из списка

Так как у меня 960 статей, мне нужно выполнить кучу шагов 960 раз, что сейчас кажется очень скучным!

Шаг 1 — нажмите кнопку сохранения статьи, как показано желтым цветом ниже.

Шаг 2 — нажмите на запись в списке для чтения, чтобы удалить статью из списка во всплывающих окнах, как показано ниже.

Шаг 3 — перейдите к следующей статье и повторите шаги 1 и 2 960 раз!

Выполнение шагов 1, 2 и 3 займет примерно 6 секунд на итерацию. В целом, простое удаление всех статей заняло бы более 1,5 часов, что похоже на вечность.

(6 * 960)/60/60 = 1,6 часа

Если предположить, что чтение каждой статьи занимает в среднем 3 минуты, то на чтение и удаление элементов уходит более 50 часов человеческих усилий, чего никогда не произойдет!

Некоторые истории были удалены!

Как видно из изображения ниже, некоторые истории по каким-то причинам удалены из публикации. Это дает мне другой сценарий и другую последовательность кликов!

И ни на одной странице нет всех статей!

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

Итак, с некоторым пониманием предстоящей задачи, я направился к IDE и написал код. В конце концов, ничто так не заставляет меня думать, как код.

время питона

Естественно, я создал совершенно новый репозиторий и делаю все возможное, чтобы комментировать свой код и объяснять все, что я делаю.

Строки 1–21 имеют дело только с импортом и настройкой объекта браузера. Строки 25–36 связаны с входом в Medium и получением страницы списка чтения. Для переменной «urlSignIn» в строке 26 вы должны войти в Medium по электронной почте, а затем скопировать URL-адрес из электронного письма в этот фрагмент кода.

Строки 37–55 вдохновлены статьей, написанной Джейкобом Ферусом в его работе о том, как счищать код с Medium с помощью Python. Мне пришлось изменить концепцию, но код автоматически прокручивает страницу до тех пор, пока не будут перечислены все отдельные статьи. Эти строки решают элемент нумерации страниц, который мы обсуждали ранее.

Строки 58–60 читают страницу, создавая список объектов HTML для статей и еще один для удаленных статей (кнопки «Удалить»).

soup = BeautifulSoup(wd.page_source, features="lxml")
articles = soup.find_all('article')
Removebuttons = soup.find_all('div','tv l tw')

Итак, у нас есть два списка объектов HTML после выполнения:

  • Список статей — HTML с ‹article› и ‹/article›
  • Список удаленных статей — HTML между ‹div class="tv l tw" и ‹/div›

Запуск скрипта дает показанный вывод:

Я ожидал, что в моем списке будет 960 элементов, но у нас есть 956, потому что я удалил некоторые из них во время исследования.

Теперь я чувствую, что разобрался с этой проблемой, но это большая задача, поэтому во второй части я займусь удалением этих 102 объявлений, нажав кнопку «удалить». В части III мы будем иметь дело с чтением этих 854 элементов, чтобы сделать некоторую аналитику, а затем после этого принять некоторые решения по вопросам, поставленным в начале, и выполнить эти решения в последующих статьях.

Если вы не являетесь участником Medium, почему бы не присоединиться, это того стоит!



Возможно, вам также понравятся мои видео, в которых я сделал систему домашнего мониторинга с нуля. «Последний эпизод был моим любимым.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.