Рубрики
Без рубрики

Построить скребок Reddit: проблема и решение

Цель этой серии Эта серия будет охватывать, как я построил скребок Reddit с помощью React / JS … Теги от реагирования, JavaScript, Node, Mongodb.

Эта серия будет охватывать, как я построил скребок Reddit, используя React/JavaScript, и я надеюсь, что могу помочь объяснить, но о том, как работает API Reddit. Моя цель также заключается в том, чтобы сделать этот новичок, однако, знание HTML/CSS/JS будет обязательно, но, надеюсь, я могу помочь вам понять основы.

Как началось Reddex

Reddex – это приложение, которое я построен для использования API Reddit. Будучи рассказчиком истории, который получает мои истории из Reddit, мне нужен способ ускорить процесс открытия. Потребовалось около 3-4 месяцев (работает над моим временем), чтобы построить, то, что я чувствую, является очень твердым и полезным приложением.

Эта проблема

Прежде чем построить это приложение, процесс нахождения истории читать было довольно утомительной задачей. Я бы вошел в Reddit и поиск в Subreddit NoSleep и прокручиваю сотни записей, чтобы найти тот, который имел разумное количество УПЗО и комментариев. Я позволил сообществу решить, какие истории были хорошими, поэтому я в основном посмотрел на счет Упвита.

Для каждого поста, имеющего 1000 UPVOTES, вы должны прокрутить мимо около 30 записей, которые находятся между 0-100 UPVOTes. Это количество времени впустую прокрутку, застроенное и накопленное с течением времени до точки, где задача только потому, что монотонные; Я не с нетерпением ждал этого.

Мне нужен был способ сократить на этот раз, а кроме попытки создать AI, который редактирует мой аудио для меня, я решил, что это может быть более осуществимым.

Reddex сократил мое время открытия на 99%. Там, где он использовал, чтобы получить 5-10 минут, чтобы найти от 1 до 2 историй, всего в нескольких кликах я могу отправлять предварительно сохраненные сообщения нескольким авторам статьи, а не:

  • Копирование названия истории
  • Перейдите к своей учетной записи
  • Нажмите Отправить сообщение
  • Вставить заголовок в тему строку
  • Открыть документ блокнота и Скопировать сценарию сообщение
  • Вставьте сообщение в поле сообщения и нажмите Отправить

И повторять для каждой отдельной истории.

Решение

Решение этой массивной проблемы и отстой времени, должно было создать приложение, которое воспользовалось API Reddit. Это было намного сложнее, чем можно подумать. Документы API Reddit не удобны пользователем, и вы часто хотите, пытаясь найти свой путь (Google) через Docs Reddit.

Я бы рекомендовал заблокировать критические документы только для вашего здравомыслия.

Я опишу в общем смысле, как я решил эту проблему и построил скребок Reddit с React/JavaScript и Nodejs с Express и MongoDB. В будущих постах я пойду на все основные компоненты приложения, чтобы надеяться помочь вам создать свой собственный скребок Reddit с помощью JavaScript.

Привлечение постов из подпудренногоdit

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

Если вы перейдите к подрезыванию и добавьте .json до конца URL, вы увидите версию этой страницы JSON и все посты там. Это здорово, потому что мы можем получить этот URL с включенным .json и получить доступ к этим значениям.

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

Как только эта большая выборка сделана, я сохранил сообщения в браузере, используя dexie.js, что использует indexedddb. Я бы порекомендовал проверить это.

Я пошел с dexie.js, потому что данные, которые я тянул, был слишком большой, чтобы быть спасенным в локальной табличке. Имейте в виду, когда вы тянете посты из Reddit, вы хватаете много постов, с большим количеством текста, которые добавляют со временем. Было небольшое обучение кривой с использованием dexie.js, но я покажу вам, как я настрою свою базу данных (я могу перенести это на свою собственную Backend, но в любом случае).

После того, как мы схватием посты, я звоню в функцию, которая возвращает элементы в базе данных и отображает их на странице.

Фильтрация сообщений поддарита

После того, как посты отображаются на экране, появляется метод фильтрации. Для фильтрации я могу отфильтровать с помощью UPVote Count, ключевые слова (которые будут искать название и тело), а по ряду только (это будет расширено, чтобы использовать другие летания).

Это позволяет мне пробивать несколько номеров, применить фильтры и немедленно (это мгновенно) см. Сообщения, соответствующие моему запросу фильтра.

Отправка сообщений авторам

Это было безусловно, самая сложная часть, и мне понадобилось пару месяцев, чтобы выяснить и создать.

Я пойду в больше, как я построил UI и мой выбор в этом отношении, но в общей схеме вещей вы выбираете 1 или несколько сообщений, откройте модал для подтверждения каждого отдельного сообщения, оттуда вы можете отправить сообщение оригинальный плакат.

Это была последняя часть, чтобы полностью устранить хлопот отправки сообщений людям. Я могу выбрать 10 сообщений, и когда я пойду, чтобы подтвердить каждое сообщение, субъект превышен названием The Story, имя автора вы отправите ваше сообщение, если есть, ваше собственное имя пользователя, а также изготовленное в текстуареа Сообщение по умолчанию Вы можете определить в разделе учетной записи приложения. Если вы хотите изменить сообщение, вы можете сделать это на индивидуальном уровне. Таким образом, заполните предварительно заполненное сообщением и изменять индивидуально.

Оригинал: “https://dev.to/imtyrelchambers/build-a-reddit-scraper-problem-solution-337k”