1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wycm-zhihu-crawler

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

zhihu-crawler

zhihu-crawler — это основанный на Java проект, посвящённый практике использования краулеров. Основная функция проекта — сбор основных данных пользователей Zhihu. Если проект вам нравится, пожалуйста, поставьте ему звезду.

Результаты сбора данных

  • На приведённом ниже графике представлены результаты сбора данных о 117 миллионах пользователей Zhihu (простой статистический анализ).

Необходимые условия

  1. JDK 1.8.
  2. Redis.
  3. MongoDB.

Быстрый старт

  1. Измените конфигурацию Redis и MongoDB в файле zhihu/src/main/resources/application.yaml. application.yaml
  2. Инициализируйте MongoDB с помощью файла zhihu/src/main/resources/mongo-init.sql. mongo-init.sql
  3. Установите путь к журналу по умолчанию в /var/www/logs. logback-spring.xml
  4. Запустите приложение с помощью ZhihuCrawlerApplication.java.

Используемые интерфейсы

  • Адрес (URL): https://www.zhihu.com/api/v4/members/${userid}/followees.

  • Тип запроса: GET.

  • Параметры запроса | Параметр | Тип | Обязательный | Значение | Описание | | :------------ | :------------ | :------------ | :----- | :------------ | | include | String | Да | data[*]answer_count,articles_count | Поле, которое необходимо вернуть (это значение можно изменить в соответствии с требованиями, см. пример URL ниже) | | offset | int | Да| 0 | Смещение (можно настроить для получения информации обо всех пользователях, за которыми следит определённый пользователь) | | limit | int | Да | 20 | Количество возвращаемых пользователей (максимум 20, больше 20 не действует) |

  • Пример URL: https://www.zhihu.com/api/v4/members/wo-yan-chen-mo/followees?include=data[*].educations,employments,answer_count,business,locations,articles_count,follower_count,gender,following_count,question_count,voteup_count,thanked_count,is_followed,is_following,badge[?(type=best_answerer)].topics&offset=0&limit=20.

  • Ответ: данные JSON, содержащие информацию о пользователях, которые следят за определённым пользователем.

Особенности

  • Широко используется HTTP-прокси для обхода ограничений на количество запросов от одного клиента.
  • Поддерживает постоянное хранение данных (MongoDB).
  • Многопоточность, высокая скорость сканирования, поддержка распределённого сканирования.

Задачи

  • Добавить сбор данных о вопросах, ответах и статьях.
  • Поддержка сканирования в реальном времени, обновление популярных материалов на всём сайте Zhihu каждый час.

Обновления

2019.02.21

  • Проект был перестроен на основе Spring Boot для поддержки горизонтального расширения и распределённого сканирования.
  • Для постоянного хранения данных используется MongoDB.
  • AsyncHttpClient на базе Netty используется вместо HttpClient4.5.

2018.07.09

  • Сайт Zhihu был обновлён, и авторизация больше не требуется.
  • Завершено модульное тестирование.
  • Исправлены известные ошибки.

2017.11.05

  • Файл авторизации Zhihu был обновлен, а способ получения авторизации изменён.

2017.05.26

  • Ошибка прокси-сервера, приводящая к исключению java.lang.reflect.UndeclaredThrowableException, была исправлена.

2017.03.30

  • API Zhihu изменился, и список подписчиков страницы нельзя использовать для получения количества подписчиков, что приводит к невозможности продолжения работы пула потоков задач. Режим сканирования переключён на старый режим ListPageThreadPool и DetailPageThreadPool.

2017.01.17

  • Добавлена сериализация прокси.
  • Структура проекта была оптимизирована, что значительно повысило скорость сканирования. Больше не используются ListPageThreadPool и DetailPageThreadPool, а список страниц подписчиков напрямую загружается для непосредственного получения подробной информации о подписчиках.

2017.01.10

  • Метод сканирования с использованием входа в систему больше не используется, и соответствующий модуль был удалён. Основной код логики имитации входа в систему см. в ModelLogin.java.
  • Оптимизирована структура проекта, что ускорило сканирование. Используются два пула потоков: ListPageThreadPool отвечает за загрузку списка страниц подписчиков и анализирует подписчиков, затем помещает URL-адреса подписчиков в DetailPageThreadPool; DetailPageThreadPool отвечает за загрузку страниц сведений о пользователях и анализ основной информации о пользователях для сохранения в базе данных, а также за получение URL-адресов страниц списков подписчиков для помещения в ListPageThreadPool.

2016.12.26

  • Удалены неиспользуемые пакеты, исправлены исключения ConcurrentModificationException и NoSuchElementException.
  • Добавлен режим сканирования без входа в систему.
  • Добавлен модуль сканирования через прокси.

В заключение, если вы хотите сканировать другие данные, такие как вопросы, ответы и т. д., вы можете легко настроить этот проект под свои нужды. Если у вас есть какие-либо вопросы или проблемы, пожалуйста, создайте проблему. Мы приветствуем вклад кода. Сканер Zhihu Q&A группа: 633925314, добро пожаловать, чтобы присоединиться. Если вам нужны данные (117 миллионов основных сведений о пользователях Zhihu), вы можете следить за общедоступной учётной записью: lwndso.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

zhihu-crawler — это проект краулера на основе Java, основная функция которого заключается в сборе основных данных пользователей Zhihu. Развернуть Свернуть
Java
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/wycm-zhihu-crawler.git
git@api.gitlife.ru:oschina-mirror/wycm-zhihu-crawler.git
oschina-mirror
wycm-zhihu-crawler
wycm-zhihu-crawler
3.0