DotnetSpider — библиотека для веб-скрапинга на .NET Standard, похожая на WebMagic и Scrapy. Это легковесный, эффективный и быстрый высокого уровня фреймворк для веб-скрапинга на .NET.
https://github.com/dotnetcore/DotnetSpider/wiki
Пожалуйста, посмотрите проект DotnetSpider.Sample в решении.
public class EntityModelSpider
{
public static void Run()
{
Spider spider = new Spider();
spider.Run();
}
}
``` private class Spider : EntitySpider
{
protected override void OnInit(params string[] arguments)
{
var word = "кока-кола|свежее";
AddRequest(string.Format("http://news.baidu.com/ns?word={0}&tn=news&from=news&cl=2&pn=0&rn=20&ct=1", word), new Dictionary<string, dynamic> { { "Keyword", word } });
AddEntityType<BaiduSearchEntry>();
AddPipeline(new ConsoleEntityPipeline());
}```markdown
[Schema("baidu", "baidu_search_entity_model")]
[Entity(Expression = ".//div[@class='result']", Type = SelectorType.XPath)]
class BaiduSearchEntry : BaseEntity
{
[Column]
[Field(Expression = "Keyword", Type = SelectorType.Environment)]
public string Keyword { get; set; }
[Column]
[Field(Expression = ".//h3[@class='c-title']/a")]
[ReplaceFormatter(NewValue = "", OldValue = "<em>")]
[ReplaceFormatter(NewValue = "", OldValue = "</em>")]
public string Title { get; set; }
[Column]
[Field(Expression = ".//h3[@class='c-title']/a/@href")]
public string Url { get; set; }
[Column]
[Field(Expression = ".//div/p[@class='c-author']/text()")]
[ReplaceFormatter(NewValue = "-", OldValue = " ")]
public string Website { get; set; }
[Column]
[Field(Expression = ".//div/span/a[@class='c-cache']/@href")]
public string Snapshot { get; set; }
[Column]
[Field(Expression = ".//div[@class='c-summary c-row ']", Option = FieldOptions.InnerText)]
[ReplaceFormatter(NewValue = "", OldValue = "<em>")]
[ReplaceFormatter(NewValue = "", OldValue = "</em>")]
[ReplaceFormatter(NewValue = " ", OldValue = " ")]
public string Details { get; set; }
[Column(Length = 0)]
[Field(Expression = ".", Option = FieldOptions.InnerText)]
[ReplaceFormatter(NewValue = "", OldValue = "<em>")]
[ReplaceFormatter(NewValue = "", OldValue = "</em>")]
[ReplaceFormatter(NewValue = " ", OldValue = " ")]
public string PlainText { get; set; }
}
}
public static void Main()
{
EntityModelSpider.Run();
}
#### Запуск через стартап
Команда: -s:[тип паука или TaskName attribute] -i:[идентификатор] -a:[аргумент1, аргумент2...] --tid:[идентификатор задачи] -n:[имя] -c:[путь или имя файла конфигурации]1. -s: Укажите имя типа паука или TaskNameAttribute, например: DotnetSpider.Sample.BaiduSearchSpider
2. -i: Установите идентификатор.
3. -a: Передайте аргументы в метод Run паука.
4. --tid: Установите идентификатор задачи.
5. -n: Установите имя.
6. -c: Установите путь к файлу конфигурации, например, если вы хотите запустить с пользовательской конфигурацией: -e:app.my.config
#### Поддержка WebDriver
```Когда вы хотите собрать JS-код, загруженный на странице, вам нужно сделать всего одно действие — установить загрузчик на WebDriverDownloader.
Downloader = new WebDriverDownloader(Browser.Chrome);
[Смотрите полный пример](https://github.com/zlzforever/DotnetSpider/blob/master/src/DotnetSpider.Sample/JdSkuWebDriverSample.cs)
ОБСЛУЖИВАНИЕ:
1. Убедитесь, что в папке bin находится ChromeDriver.exe при попытке использования Chrome. Вы можете установить его в проект через менеджер NuGet: Chromium.ChromeDriver
2. Убедитесь, что вы уже добавили профиль \*.webdriver Firefox при попытке использования Firefox: https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles
3. Убедитесь, что в папке bin находится PhantomJS.exe при попытке использования PhantomJS. Вы можете установить его в проект через менеджер NuGet: PhantomJS
### Хранение логов и статуса в базе данных
### DotnetSpider.Hub
https://github.com/zlzforever/DotnetSpider.Hub
1. Зависимости от платформы CI, например, я использую TeamCity.
2. Зависимости от Scheduler.NET https://github.com/zlzforever/Scheduler.NET
3. Дополнительные документы продолжаются...




### ВНИМАНИЕ
#### при использовании планировщика Redis, пожалуйста, обновите конфигурацию Redis:
timeout 0
tcp-keepalive 60
### ПОДДЕРЖИТЕ МЕНЯ

### ПОЛЕЗНЫЕ УПРАВЛЯЕМЫЕ ОБЛАСТИ
Группа QQ: 477731655
Электронная почта: zlzforever@163.com
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )