Этот паук в основном ориентирован на вертикальный сбор данных с динамических веб-страниц. Идея дизайна аналогична коллектору осьминога.
В настоящее время он совершенствуется, некоторые функции могут содержать ошибки, ждём вас...
Основное различие между сбором данных с динамического веб-сайта и статического веб-сайта заключается в необходимости анализа JS.
Каталог driver (здесь хранятся драйверы, необходимые для запуска Selenium). Для разных платформ, пожалуйста, обратитесь к этому руководству и скомпилируйте его самостоятельно. На данный момент предоставляется только Windows GhostDriver, интегрированный в Phantomjs.exe.
Простой пример сбора данных В tasks\test_ghost под каждым файлом конфигурации показано, как настроить сбор данных паука для различных веб-сайтов. Ниже приведено описание каждого файла:
jd_1product.xml Демонстрирует, как собрать данные с простой страницы продукта (название продукта, количество динамических комментариев).
jd_products_comments.xml Демонстрирует, как собирать комментарии к продукту (циклический сбор данных).
jd_shop_allproducts.cml Показывает, как циклически собирать все продукты магазина (циклический переход по страницам).
Другие задачи аналогичны, имена сохраняемых данных и способы их сохранения определяются в файле конфигурации. После настройки паука запуск программы автоматически создаст файлы данных, которые нужно сохранить.
Использование Selenium имеет серьёзное ограничение — управление параллелизмом многопоточных операций. Лучший подход — использовать одноэлементный режим WebDriver. Это легко реализуется с помощью Spring Framework. Вертикальный веб-паук не просто скачивает страницы, скачивание страниц — это всего лишь один из его компонентов.
Объединив эти три структуры, можно выполнить любую сложную последовательность программ. Сбор данных с вертикального веб-сайта также можно описать с помощью трёх вышеупомянутых процессов: Например, при сборе данных с веб-сайта:
do for 循环列表页(循环方式 点击下一页,结束条件(指定最大次数等))
do for 每一个内容页面(循环方式 依次抓取,结束条件)
提取信息(异步提取,同步提取)
done
点击下一页
done
Например, более сложный веб-сайт:
do
填写表单,点击提交,指定页面跳转
done
do then
do 循环列表页(循环方式 点击下一页,结束条件(指定最大次数等))
提取信息
done
do then
点击某个按钮
do
do for 循环内容
提取信息(
if (未提取到信息,或者提取到信息有什么问题)
dosome
endif
done
done
点击按钮
done
done
Основываясь на этой логике, была разработана эта система.
Абстрагируясь, разработка веб-паука состоит из трёх структур обработки, которые есть в любом языке программирования.
1) Процессор бизнес-логики (содержит несколько экстракторов контента)
2) Экстрактор контента (на нижнем уровне состоит из серии атомарных действий по извлечению, и каждое из этих основных абстрактных действий требует выполнения определённых условий)
3) Действия по преобразованию состояния *
Каждый раз после действия преобразования состояния появляется новая страница, и перед переходом необходимо оценивать. Например: (поддержка транзакций, либо все атомарные операции выполняются успешно, либо все терпят неудачу)
Все вышеперечисленные процессы вложены друг в друга, то есть циклы могут содержать условные обозначения, условные обозначения могут содержать циклы и так далее. Кроме того, по сравнению с веб-пауками, каждый процесс обработки должен открывать страницу в качестве эталона. Процессор бизнес-логики включает в себя набор действий преобразования состояний. Набор действий преобразования состояний включает серию процессоров обработки контента. Процессоры обработки контента могут включать группу бизнес-логики.
Сбор данных с отдельного веб-сайта, требуемые компоненты Выполнение процессора обработки 1 последовательно ( Действие перехода на новую страницу преобразования состояния ( Последовательный экстрактор (несколько экстракторов единиц, компонент дедупликации и хранения) ) )
Сбор данных со страницы входа Последовательное выполнение процессора обработки 2 ( Группа действий входа (без действий извлечения) Последовательное выполнение процессора обработки 1 )
Циклический сбор данных со страницы Циклическое выполнение процессора обработки 2 ( Условие инициализации цикла Цикл выполнения действий (экстрактор) Условие завершения цикла )
Сбор данных путём нажатия на страницу Последовательное выполнение процессора обработки 3 ( Действие перехода на новую страницу преобразования состояния ( Последовательный экстрактор (несколько экстракторов единиц, компонент дедупликации и хранения) ) Группа действий нажатия кнопки на странице ( Последовательный экстрактор (несколько экстракторов единиц, компонент дедупликации и хранения)? ) ) Можно комбинировать эти четыре ситуации, чтобы создать более сложные сценарии. Абстрактная обработка выглядит следующим образом:
Домашняя страница проекта: https://github.com/code4craft/webmagic http://webmagic.io/docs/zh/
Описание архитектуры проекта: http://my.oschina.net/flashsword/blog/145796
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )