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

OSCHINA-MIRROR/gitclebeg-nlp-spider-dynamic

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

Компонент для сбора данных для компонентов системы обработки естественного языка, веб-паук для динамической информации

Этот паук в основном ориентирован на вертикальный сбор данных с динамических веб-страниц. Идея дизайна аналогична коллектору осьминога.

Обратите внимание, что этот паук был разработан исключительно из личного интереса к разработке, при возникновении любых вопросов, пожалуйста, присылайте сообщения об ошибках. Адрес электронной почты: 276708284@qq.com

В настоящее время он совершенствуется, некоторые функции могут содержать ошибки, ждём вас...

1. Описание

Основное различие между сбором данных с динамического веб-сайта и статического веб-сайта заключается в необходимости анализа JS.

    1. Один из способов — отслеживать реальные запросы JS (сложно).
    1. Другой способ — напрямую имитировать анализ JS браузером. Эта программа использует второй метод, используя браузерный тестовый фреймворк Selenium, чтобы реализовать веб-веб-паука, который может анализировать JS страницы, тем самым позволяя собирать данные с динамических веб-страниц.

2. Учебник для начинающих

  1. Каталог driver (здесь хранятся драйверы, необходимые для запуска Selenium). Для разных платформ, пожалуйста, обратитесь к этому руководству и скомпилируйте его самостоятельно. На данный момент предоставляется только Windows GhostDriver, интегрированный в Phantomjs.exe.

  2. Простой пример сбора данных В tasks\test_ghost под каждым файлом конфигурации показано, как настроить сбор данных паука для различных веб-сайтов. Ниже приведено описание каждого файла:

jd_1product.xml				Демонстрирует, как собрать данные с простой страницы продукта (название продукта, количество динамических комментариев).
jd_products_comments.xml	Демонстрирует, как собирать комментарии к продукту (циклический сбор данных).
jd_shop_allproducts.cml		Показывает, как циклически собирать все продукты магазина (циклический переход по страницам).

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

  1. Выполнение паука Выполните org.wisdomdata.main.MainCrawler, добавьте адрес файла конфигурации в tasksFiles, чтобы запустить программу. В настоящее время поддерживается только один паук, в будущем возможно поддержка распределённых пауков.

3. Архитектура проекта

Использование Selenium имеет серьёзное ограничение — управление параллелизмом многопоточных операций. Лучший подход — использовать одноэлементный режим WebDriver. Это легко реализуется с помощью Spring Framework. Вертикальный веб-паук не просто скачивает страницы, скачивание страниц — это всего лишь один из его компонентов.

    1. Обработка страниц Необходимо обрабатывать определённые страницы, например: нажать кнопку на странице (по сути, выполнить фрагмент JS); перейти непосредственно на другую страницу (например, загрузить новую страницу). Обработка особых ситуаций (например, всплывающее окно ввода кода подтверждения, невозможность извлечения содержимого страницы и т. д.). Извлечение содержимого страницы (включая ссылки и основные показатели темы).
    1. Обработка ссылок Как сохранить пакет ссылок? Вертикальные веб-пауки получают относительно небольшое количество ссылок.
    1. Стратегия сбора данных Как выполнять инкрементный сбор данных? Как решить проблему блокировки веб-паука? Эти процессы абстрагируются и соответствуют трём основным структурам потока программ в языках программирования:

1、Последовательность 2、Цикл 3、Условие

Объединив эти три структуры, можно выполнить любую сложную последовательность программ. Сбор данных с вертикального веб-сайта также можно описать с помощью трёх вышеупомянутых процессов: Например, при сборе данных с веб-сайта:

do for 循环列表页(循环方式 点击下一页,结束条件(指定最大次数等))
	do for 每一个内容页面(循环方式 依次抓取,结束条件)
		提取信息(异步提取,同步提取)
	done
点击下一页
done

Например, более сложный веб-сайт:

do
	填写表单,点击提交,指定页面跳转
done

do then
	do 循环列表页(循环方式 点击下一页,结束条件(指定最大次数等))
		提取信息
	done
	do then
		点击某个按钮
		do
			do for 循环内容
				提取信息(
					if (未提取到信息,或者提取到信息有什么问题)
						dosome
					endif
			done
		done
	点击按钮
	done
done

Основываясь на этой логике, была разработана эта система.

4. Как разработать веб-паука

Абстрагируясь, разработка веб-паука состоит из трёх структур обработки, которые есть в любом языке программирования.

  • 1) Процессор бизнес-логики (содержит несколько экстракторов контента)

    • Условные обозначения (необходимо оценить условия, если они выполнены, выполнить, если нет, то выполнить другое).
    • Циклы (необходимы начальные условия, интервал цикла, условие завершения цикла).
    • Последовательность (просто серия казней).
  • 2) Экстрактор контента (на нижнем уровне состоит из серии атомарных действий по извлечению, и каждое из этих основных абстрактных действий требует выполнения определённых условий)

    • Условные обозначения (необходимо оценить условия, если они выполнены, выполнить, если нет, то выполнить другое).
    • Циклы (необходимы начальные условия, интервал цикла, условие завершения цикла).
    • Последовательность (просто серия казней).
  • 3) Действия по преобразованию состояния *

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

  • щелчок по следующей странице (есть ли кнопка «Далее», что делать, если её нет?);
  • нажатие кнопки для загрузки нового фрагмента страницы (существует ли необходимая кнопка, что делать, если она не существует?);
  • переход на новую страницу (является ли ссылка на новую страницу действительной?). (Каждое действие, описанное выше, содержит атомарные действия, такие как выполнение нажатия кнопки).
  • 4) Компоненты дедупликации и сохранения извлечённой информации

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

4.1 Пример

  1. Сбор данных с отдельного веб-сайта, требуемые компоненты Выполнение процессора обработки 1 последовательно ( Действие перехода на новую страницу преобразования состояния ( Последовательный экстрактор (несколько экстракторов единиц, компонент дедупликации и хранения) ) )

  2. Сбор данных со страницы входа Последовательное выполнение процессора обработки 2 ( Группа действий входа (без действий извлечения) Последовательное выполнение процессора обработки 1 )

  3. Циклический сбор данных со страницы Циклическое выполнение процессора обработки 2 ( Условие инициализации цикла Цикл выполнения действий (экстрактор) Условие завершения цикла )

  4. Сбор данных путём нажатия на страницу Последовательное выполнение процессора обработки 3 ( Действие перехода на новую страницу преобразования состояния ( Последовательный экстрактор (несколько экстракторов единиц, компонент дедупликации и хранения) ) Группа действий нажатия кнопки на странице ( Последовательный экстрактор (несколько экстракторов единиц, компонент дедупликации и хранения)? ) ) Можно комбинировать эти четыре ситуации, чтобы создать более сложные сценарии. Абстрактная обработка выглядит следующим образом:

  1. В процессоре есть группа действий.
  2. Каждое действие содержит группу экстракторов.
  3. Каждый экстрактор содержит компоненты сохранения и атомарный экстрактор.

5. Информация о проекте

Специализированный веб-паук, предназначенный для сбора динамической информации, высоконастраиваемый веб-паук

Волшебный веб-паук

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

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

Введение

Основы фреймворка проекта NLP: специализированный веб-краулер для динамических веб-страниц (JS). Расширить Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/gitclebeg-nlp-spider-dynamic.git
git@gitlife.ru:oschina-mirror/gitclebeg-nlp-spider-dynamic.git
oschina-mirror
gitclebeg-nlp-spider-dynamic
gitclebeg-nlp-spider-dynamic
master