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

OSCHINA-MIRROR/zhupingqi-RuiJi.Net

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.03.2025 13:07 c27d6c6

[Объявление]

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

Поддержите мой магазин

Поп-чай https://www.paopaocha.top/

NuGet Статус сборки КодФактор

Статус сборки Статус сборки

О RuiJi Scraper

RuiJi Scraper — это плагин браузера на основе выражений RuiJi с визуальным редактированием правил и генерацией выражений RuiJi для RuiJi.Net. firefox chrome

Внимание

Мы не можем вернуть пожертвования через Open Collective, поэтому нам пришлось отключить серверы представлений и документов ruiji.net

Поддержка

Если вы хотите возобновить проект по сбору пожертвований, свяжитесь с нами по электронной почте 416803633@qq.com

О RuiJi.Net

RuiJi.Net — это распределенная система парсинга, написанная на .NET Core.

RuiJi.Net — это автономный веб-API, использующий Microsoft.AspNetCore.Owin. Основные возможности включают распределенный парсер, распределенный извлечение данных и управление cookies.

RuiJi.Net поддерживает опрос IP адресов, используя публичный сетевой адрес сервера и прокси-сервер.

Документация (закрыта)

Сборка http://doc.ruijihg.com/

Примеры

Парсинг с использованием локального IP автоматически

var crawler = new RuiJiCrawler();
var request = new Request("https://www.baidu.com");
var response = crawler.Request(request);

Парсинг с использованием специфического IP

var crawler = new RuiJiCrawler();
var request = new Request("https://www.baidu.com");
request.Ip = "192.168.31.196";
var response = crawler.Request(request);

Парсинг с использованием прокси

var crawler = new RuiJiCrawler();
var request = new Request("https://www.baidu.com");
request.Proxy = new RequestProxy("223.93.172.248", 3128);
var response = crawler.Request(request);

Извлечение URL

var crawler = new RuiJiCrawler();
var request = new Request("https://www.oschina.net/blog");
var response = crawler.Request(request);
var content = response.Data.ToString();
var parser = new RuiJiParser();
var eb = parser.ParseExtract("css a.blog-title-link[href]\nexp https://my.oschina.net/*/blog/*");
var result = RuiJiExtractor.Extract(content, eb.Block);

Извлечение заголовков

var crawler = new RuiJiCrawler();
var request = new Request("http://www.ruijihg.com/archives/category/tech/bigdata");
var response = crawler.Request(request);
var content = response.Data.ToString();
var parser = new RuiJiParser();
var eb = parser.ParseExtract(@"[tile]\ncss article:html\n[meta]\n#title\ncss .entry-header:text\n#summary\ncss .entry-header + p:text ex /Read more »/ -e");
var result = RuiJiExtractor.Extract(content, eb.Block);

Извлечение метаданных

var crawler = new RuiJiCrawler();
var request = new Request("https://my.oschina.net/zhupingqi/blog/1826317");
var response = crawler.Request(request);
var content = response.Data.ToString();
var parser = new RuiJiParser();
var eb = parser.ParseExtract(@"[meta]\n#title\ncss h1.header:text\n#author\ncss div.blog-meta .avatar + span:text\n#date\ncss div.blog-meta > div.item:first:text regS /发布于/ 1\n#words_i\ncss div.blog-meta > div.item:eq(1):text regS / / 1\n#content\ncss #articleContent:html");
var result = RuiJiExtractor.Extract(content, eb.Block);

Обнаружение типа файла

var crawler = new RuiJiCrawler();
var request = new Request("http://img10.jiuxian.com/2018/0111/cd51bb851410404388155b3ec2c505cf4.jpg");
var response = crawler.Request(request);
var ex = response.Extensions;

Кластеризация RuiJi.Net

  1. Скачайте ZooKeeper с официальных зеркал Apache http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/

  2. Добавьте тот же файл zoo_sample.cfg в папку conf и переименуйте его в zoo.cfg. Измените dataDir на ваш.

  3. Убедитесь, что установлено средство выполнения Java.

  4. Запустите bin/zkServer.cmd в папке zookeeper.

  5. Запустите ZooKeeper.

  6. Скомпилируйте RuiJi.Net.Cmd и запустите RuiJi.Net.Cmd.exe.

  7. Если вы видите следующую информацию:

    Сервер запущен по адресу http://x.x.x.x:x прокси x.x.x.x:x готов к запуску! попытка подключения к серверу ZooKeeper: x.x.x.x:2181 соединение с сервером ZooKeeper установлено!

то запуск службы завершен успешно!

RuiJi.Net.Cmd.exe следует запускать с правами администратора!
var request = new Request("http://www.ruijihg.com/%e5%bc%80%e5%8f%91/");
var response = Crawler.Request(request);
if (response.StatusCode != System.Net.HttpStatusCode.OK) return;
var content = response.Data.ToString();
var block = new ExtractBlock();
block.Selectors = new List<ISelector>
{
	new CssSelector(".entry-content",CssTypeEnum.InnerHtml)
};
block.TileSelector = new ExtractTile
{
	Selectors = new List<ISelector>
	{
		new CssSelector(".pt-cv-content-item",CssTypeEnum.InnerHtml)
	}
};
block.TileSelector.Metas.AddMeta("title", new List<ISelector> {
	new CssSelector(".pt-cv-title")
});
block.TileSelector.Metas.AddMeta("url", new List<ISelector> {
	new CssSelector(".pt-cv-readmore","href")
});
var r = Extractor.Extract(new ExtractRequest {
	Block = block,
	Content = content
});

Выражения RuiJi

Выражения RuiJi позволяют быстро добавлять правила извлечения страниц. Эти выражения просты и понятны. Перед тем как начать, важно понять модель правил RuiJi.Net.

Выражения RuiJi используют структуру, показанную на рисунке выше, чтобы извлекать нужные страницы. Единицей измерения является Block, как показано ниже.

Selectors — это список селекторов. Tiles — это область, которая должна быть повторно извлечена. Metas — это метаданные, которые должны быть извлечены. Blocks — это подблоки, которые должны быть извлечены внутри Block.

Изображение текста

Для того чтобы извлечь http://www.ruijihg.com/разработка, вам нужно сначала изучить структуру страницы. Вы можете использовать F12, чтобы просмотреть структуру страницы.

Изображение текста

Во-первых, убедитесь, что результат выборки Block уникален.

Изображение текста

Определение Block может выглядеть так:

#content
css .pt-cv-view:ohtml

Продолжаем добавлять tiles:

[tile]
#tiles
css .pt-cv-content-item:ohtml

[meta]
#title
css .pt-cv-title:text

#content
css .pt-cv-content:html
ex 阅读更多... -e

Вы заметите \t, потому что как Block, так и Tile содержат метаданные, а значит часть селектора Tile и метаданные Tile помечаются \t как текущий флаг Tile.

Полная структура описания Block выглядит так:

[Block]
#blockname
selector

[blocks]
@subblockname1
@subblockname2

[tile]
#tilename
tile selector

[meta]
#meta1
selector

#meta2
selector
```## Административный UI



![Изображение текста](http://www.ruijihg.com/wp-content/uploads/2018/07/3-2.png)

![Изображение текста](http://www.ruijihg.com/wp-content/uploads/2018/07/6.png)

![Изображение текста](http://www.ruijihg.com/wp-content/uploads/2018/07/13.png)

## Контакты
Свяжитесь со мной по любым вопросам

416803633@qq.com

мой веб-сайт: www.ruijihg.com

QQ группа: 545931923

https://github.com/zhupingqi/RuiJi.Net

https://gitee.com/zhupingqi/RuiJi.Net

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/zhupingqi-RuiJi.Net.git
git@api.gitlife.ru:oschina-mirror/zhupingqi-RuiJi.Net.git
oschina-mirror
zhupingqi-RuiJi.Net
zhupingqi-RuiJi.Net
master