Uliana.Spidering
1.0.1
dotnet add package Uliana.Spidering --version 1.0.1
NuGet\Install-Package Uliana.Spidering -Version 1.0.1
<PackageReference Include="Uliana.Spidering" Version="1.0.1" />
paket add Uliana.Spidering --version 1.0.1
#r "nuget: Uliana.Spidering, 1.0.1"
// Install Uliana.Spidering as a Cake Addin
#addin nuget:?package=Uliana.Spidering&version=1.0.1
// Install Uliana.Spidering as a Cake Tool
#tool nuget:?package=Uliana.Spidering&version=1.0.1
CSharp Spider Library - Uliana.Spidering
Apresentação
A biblioteca foi desenvolvida para auxiliar alguns de meus spiders
disponíveis no NuGet que visam exatamente recursos de extração, indexação e fixação de dados presentes na web. Sinta-se livre para utiliza-la, mas que fique claro, não me responsabilizo por qualquer violação de direitos por parte dos sites que a Ulina.Spidering
consumir, isso fica a cargo do desenvolvedor que utilizará a mesma.
Dentro do conteúdo apresentado pela biblioteca, temos vários parsers de conteúdo presente na web, desde documentos de configuração genérico (como robots.txt
ou sitemap.xml
) assim como a serialização de conteúdos DOM
, e um certo nível de controle de scripts
, porém sem presença no repositório público por estar em fase extremamente prematura.
Instalando em seu projeto
Você pode instalar a biblioteca no seu projeto atravéz do NuGet:
Via Package Manager:
Install-Package Uliana.Spidering -Version 1.0.1
Via .NET CLI:
dotnet add package Uliana.Spidering --version 1.0.1
Via Paket CLI:
paket add Uliana.Spidering --version 1.0.1
Para mais informações, você pode visitar a página do pacote nesse link.
Exemplo Genérico: Serializando um arquivo robots.txt
Baseado em outras consagradas bibliotecas de serialização de conteúdo na web, que sempre impunham ao desenvolvedor uma enorme série de depêndencias para realizar o parsing do conteúdo dentro do arquivo robots.txt
, para facilitar isso, a biblioteca tem total suporte as regras de crawling parametrizadas pelo arquivo. Vamos observar um simples exemplo:
# Regras genéricas, retirado parcialmente das regras do Facebook.
User-agent: Googlebot
Disallow: /addContacts*
Disallow: /addressBookExport*
Disallow: /analytics/
Disallow: /answers*
Disallow: /cap/
Vamos considerar o arquivo de configuração acima serializado dentro de um arquivo txt
no mesmo diretório onde o seu binário que consumirá a aplicação está localizado, dessa forma podemos serializado da seguinte forma:
// Le-se o conteúdo dentro do arquivo
var robots = File.ReadAllText("robots.txt");
// Instânciamos o objeto para gerenciar as regras
var parser = RobotParser.Load(robots);
E agora basta consumirmos o conteúdo passado no construtor da classe que gerencia tudo isso, RobotParser
:
// Imprime o total de regras contidas no arquivo
WriteLine($"Existem {parser.Rules.Count} regras no arquivo.");
var regra = parser.Rules[0];
// Imprime o agente de usuário indexado na posição 0 das regras
WriteLine($"Regras para o user-agent {regra.UserAgent}:");
// Imprime a capacidade de acesso ao diretório /analytics/
WriteLine("Pode acessar /analytics/?: " +
$"{parser.IsPathAllowed(regra.UserAgent, "analytics")}");
// Imprime a capacidade de acesso ao diretório /analytics/admin
WriteLine("Pode acessar /analytics/admin?: " +
$"{parser.IsPathAllowed(regra.UserAgent, "analytics/admin")}");
Como podemos observar, todas as regras dentro do snippet utilizado para exemplo foram serializadas com sucesso, por tanto, podemos dessa forma realizar o spidering eficiente, e preferencialmente sem violar qualquer regra de acesso de um certo serviço na web.
Compilando a biblioteca
Para realizar a compilação, e gerar a mesma build
, é necessário que o sistema operacional alvo tenha instalado um ambiente com o DotNet Core v2.x.x instalado, e também o pacote de ferramentas Git Tools.
- Clonando o repositório e navegando até a pasta do projeto:
$ git clone https://github.com/JonasUliana/Spidering.git
$ cd Spidering
- Restaurando e gerando a build do projeto:
$ dotnet restore && dotnet build
E isso é tudo senhor! Apenas com duas instruções, você já pode consumir a biblioteca em qualquer um de seus projetos, sinta-se livre para colaborar com o desenvolvimento da mesma, somente assim encontro motivação (e talvez raiva) para persistir na melhoria da mesma!
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 is compatible. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
-
.NETCoreApp 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|
Pequenas correções de typo;
Adicionado documentação ausente.