Эта серия будет охватывать, как я построил скребок 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”