Android Crawler — это программа для сбора данных, использующая Retrofit + OkHttp + RxJava + EventBus + GreenDAO + Jsoup + Material Design. Проект вдохновлен webmagic-фреймворком для пауков и реализован с использованием RxJava.
Далее приведены примеры, которые можно адаптировать под свои нужды:```
Обратите внимание на изменение файла gradle/wrapper/gradle-wrapper.properties
,
`distributionUrl=file:///D:/android/gradle/gradle-2.14.1-all.zip`.
Замените его на свой локальный путь к Gradle.
### Проектирование базы данных
**Столбец article**
public class Article { private String title; private String content; private Date time; // раздел private String column; @Id private String url; }
Используется `url` как первичный ключ для отслеживания того, был ли уже собран данный URL.
### Фреймворк для сбора данных
Основной идеей является разделение задач на `schedule` и `processor`.
- `Schedule` отвечает за предоставление URL, в данном примере это страница списка статей, которая возвращает массив URL статей. При реализации `schedule` можно определять поля для сбора информации, а также поддерживать текущую страницу списка. Когда `spider` требует больше URL, он возвращает массив URL. Если список страниц не имеет следующей страницы, `spider` может быть активно остановлен.
- `Processor` анализирует HTML и передает данные `pipeline` для выполнения других задач, таких как сохранение данных в базе данных.
├── `ISpider.java`
├── `Spider.java`
├── `SpiderListener.java`
├─`pipeline`
│ `GreenDaoPipeline.java`
│ `IPipeline.java`
├─`processor`
│ `ContentProcessor.java`
│ `IContentProcessor.java`
│ `IUrlProcessor.java`
│ `ListProcessor.java`
└─`schedule`
`CommonSchedule.java`
`ISchedule.java`**ISpider** — класс управления сборкой данных
**IContentProcessor**, **IUrlProcessor** — парсеры содержимого HTML
**ISchedule** — предоставляет очередь URL; при отсутствии URL может активно остановить текущий spider
**IPipeline** — обеспечивает долговременное хранение данных, записывает данные в базу данных и т.д.Дополнительные сведения см. в документации реализации Spider.
## JavaScript для извлечения JSON строки категории
Перейдите на [сайт](http://fec.mofcom.gov.cn/article/fwydyl/zgzx/) и введите следующее в консоли разработчика:
```js
function getList() {
var arr = [];
$('dl.menu').find('dd').each(function () {
var $this = $(this);
var text = $this.text();
var href = $this.find('a').attr('href');
var node = {};
node.text = text;
node.href = href;
arr.push(node);
});
return JSON.stringify(arr);
}
getList();
Результат:
[
{
"text": "Политические документы",
"href": "/article/fwydyl/zcwj"
},
{
"text": "Статистические данные",
"href": "/article/fwydyl/tjsj"
},
{
"text": "Связанные новости",
"href": "/article/fwydyl/zgzx"
}
]
Программа распространяется на условиях лицензии GPL. Подробнее см. основной код проекта.## Дополнительные материалы
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )