Официальный сайт http://webmagic.io/
WebMagic — это открытый Java-фреймворк для создания вертикальных веб-скраперов. Цель состоит в том, чтобы упростить процесс разработки скраперов, позволяя разработчикам сосредоточиться на реализации логики.
Основные характеристики WebMagic:
Архитектура и дизайн WebMagic были вдохновлены следующими двумя проектами, за что мы благодарим авторов этих проектов:Python-скрапер Scrapy https://github.com/scrapy/scrapy
Java-скрапер Spiderman http://git.oschina.net/l-weiwei/spiderman
GitHub-адрес WebMagic: https://github.com/code4craft/webmagic.
WebMagic использует Maven для управления зависимостями. В проекте следует добавить соответствующие зависимости для использования WebMagic:
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.7.5</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.5</version>
</dependency>
WebMagic использует slf4j-log4j12
как реализацию slf4j
. Если вы используете свою реализацию slf4j
, удалите эту зависимость из проекта.
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
WebMagic состоит в основном из двух пакетов:
webmagic-core
Основной пакет WebMagic, содержащий базовые модули для создания пауков и простого извлечения данных. Цель webmagic-core
— стать образцовым примером реализации веб-скрапинга.
webmagic-extension
Расширяемый пакет WebMagic, предоставляющий удобные инструменты для создания пауков. Включает поддержку аннотаций для определения пауков, работы с JSON, распределённых систем и т.д.
Кроме того, WebMagic включает два доступных расширения, которые были выделены из основных пакетов из-за зависимости от тяжёлых инструментов. Эти пакеты требуют самостоятельной компиляции после скачивания исходного кода:* webmagic-saxon
Пакет, объединяющий WebMagic с Saxon. Saxon — это инструмент для парсинга XPath и XSLT, который используется WebMagic для поддержки парсинга XPath версии 2.0.
webmagic-selenium
Пакет, объединяющий WebMagic с Selenium. Selenium — это инструмент для имитации браузера и рендера страниц, используемый WebMagic для сбора динамических страниц.
В проекте можно использовать различные пакеты в зависимости от потребностей.
В директории lib проекта находятся все необходимые jar-файлы, которые можно импортировать непосредственно в IDE.
PageProcessor является частью webmagic-core, и его настройка позволяет создать логику своего паука. Ниже приведён пример кода для сбора блогов с сайта OSChina:
public class OschinaBlogPageProcessor implements PageProcessor {
private Site site = Site.me().setDomain("my.oschina.net");
@Override
public void process(Page page) {
List<String> links = page.getHtml().links().regex("http://my\\.oschina\\.net/flashsword/blog/\\d+").all();
page.addTargetRequests(links);
page.putField("title", page.getHtml().xpath("//div[@class='BlogEntity']/div[@class='BlogTitle']/h1").toString());
page.putField("content", page.getHtml().$("div.content").toString());
page.putField("tags", page.getHtml().xpath("//div[@class='BlogTags']/a/text()").all());
}
@Override
public Site getSite() {
return site;
}
public static void main(String[] args) {
Spider.create(new OschinaBlogPageProcessor()).addUrl("http://my.oschina.net/flashsword/blog")
.addPipeline(new ConsolePipeline()).run();
}
}
---Перевод выполнен согласно указанным правилам:
Здесь методом page.addTargetRequests()
добавляются URL для парсинга, а методом page.putField()
сохраняются извлечённые данные. Метод page.getHtml().xpath()
используется для извлечения данных по определённому правилу; здесь поддерживаются цепочки вызовов. После завершения операции, toString()
преобразует данные в одну строку, а all()
— в список строк.
Класс Spider
является входной точкой для пауков. Pipeline представляет собой интерфейс для вывода данных и их сохранения; здесь ConsolePipeline
указывает на то, что данные будут выводиться в консоль.Выполнение этого основного метода позволит вам видеть результаты парсинга в консоли. По умолчанию WebMagic имеет интервал между запросами в три секунды, поэтому будьте терпеливы и подождите.
WebMagic-extension включает методы создания пауков с использованием аннотаций. Для этого достаточно добавить аннотации к POJO. Ниже приведён пример кода, который выполняет ту же задачу, что и OschinaBlogPageProcesser:
@TargetUrl("http://my.oschina.net/flashsword/blog/\\d+")
public class OschinaBlog {
@ExtractBy("//title")
private String title;
@ExtractBy(value = "div.BlogContent", type = ExtractBy.Type.Css)
private String content;
@ExtractBy(value = "//div[@class='BlogTags']/a/text()", multi = true)
private List<String> tags;
public static void main(String[] args) {
OOSpider.create(Site.me(), new ConsolePageModelPipeline(), OschinaBlog.class).addUrl("http://my.oschina.net/flashsword/blog").run();
}
}
Этот пример определяет модельный класс, поля которого — title
, content
и tags
— являются атрибутами для извлечения. Этот класс может быть переиспользован в Pipeline.
Документация доступна по адресу http://webmagic.io/docs/.
В каталоге webmagic-samples представлены примеры использования PageProcessor для извлечения данных с различных сайтов.
Использование WebMagic можно рассмотреть на примере: oschina openapi приложение: перемещение блога
WebMagic использует лицензию Apache 2.0 [http://opensource.org/licenses/Apache-2.0]### Электронные письма:
Google Groups: https://groups.google.com/forum/#!forum/webmagic-java
QQ: http://list.qq.com/cgi-bin/qf_invite?id=023a01f505246785f77c5a5a9aff4e57ab20fcdde871e988
373225642 (полностью заполнена) 542327088
Платформа Gather Platform представляет собой набор инструментов для сбора данных, основанная на ядре Webmagic, которая предоставляет веб-интерфейсы для конфигурации и управления задачами.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )