Масштабируемый фреймворк для создания сетевых пауков. Он охватывает весь жизненный цикл сетевого паука: загрузку, управление URL, извлечение содержимого и хранение данных. Это может упростить разработку конкретного сетевого паука.
Добавьте зависимости в ваш pom.xml
:
<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 с реализацией slf4j-log4j12. Если вы используете свою реализацию slf4j, пожалуйста, исключите slf4j-log4j12.
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
```## Начало работы:
### Первый сетевой паук:
Напишите класс, который реализует `PageProcessor`. Например, я создал сетевой паук для получения информации о репозиториях GitHub.
```java
public class GithubRepoPageProcessor implements PageProcessor {
private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);
``````markdown
@Override
public void process(Page page) {
page.addTargetRequests(page.getHtml().links().regex("(https://github\\.com/\\w+/\\w+)").all());
page.putField("автор", page.getUrl().regex("https://github\\.com/(\\w+)/.*").toString());
page.putField("название", page.getHtml().xpath("//h1[@class='public']/strong/a/text()").toString());
if (page.getResultItems().get("название") == null) {
// пропустить эту страницу
page.setSkip(true);
}
page.putField("readme", page.getHtml().xpath("//div[@id='readme']/tidyText()"));
}
``````java
@Override
public Site getSite() {
return site;
}
public static void mainMethod(String[] args) {
Spider.create(new GithubRepoPageProcessor()).addUrl("https://github.com/code4craft").thread(5).run();
}
}
страница.addTargetRequests(ссылки)
Добавляет url для парсинга.
Вы также можете использовать аннотацию:
@TargetUrl("https://github.com/\\w+/\\w+")
@HelperUrl("https://github.com/\\w+")
public class GithubRepo {
@ExtractValue(value = "//h1[@class='public']/strong/a/text()", notNull = true)
private String имя;
@ExtractByUrl("https://github\\.com/(\\w+)/.*")
private String автор;
@ExtractValue("//div[@id='readme']/tidyText()")
private String readme;
public static void mainMethod(String[] args) {
OOSpider.create(Site.me().setSleepTime(1000),
new ConsolePageModelPipeline(), GithubRepo.class)
.addUrl("https://github.com/code4craft").thread(5).run();
}
}
Архитектура WebMagic (аналогична Scrapy):
Есть больше примеров в пакете webmagic-samples
.
Лицензировано по лицензии Apache 2.0
Чтобы создать WebMagic, я использовал следующие проекты:
Scrapy
Фреймворк для создания пауков на Python.
Spiderman
Другой фреймворк для создания пауков на Java.
https://groups.google.com/forum/#!forum/webmagic-java
http://list.qq.com/cgi-bin/qf_invite?id=023a01f505246785f77c5a5a9aff4e57ab20fcdde871e988
QQ Группа: 373225642 542327088
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )