Fonctionnalités avancées d'extraction de données web
Installer avec NuGet
Install-Package IronWebScraper
Télécharger DLL
Installation manuelle dans votre projet
Installer avec NuGet
Install-Package IronWebScraper
Télécharger DLL
Installation manuelle dans votre projet
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.
Découvrez IronWebscraper sur NuGet pour une installation rapide et un déploiement facile. Avec plus de 8 millions de téléchargements, il transforme avec C#.
Install-Package IronWebScraper
Envisagez d'installer le IronWebscraper DLL directement. Téléchargez et installez-le manuellement pour votre projet ou sous forme de GAC : {{lienDllAfficher}}
Installation manuelle dans votre projet
Télécharger la DLLFonctionnalité HttpIdentity
Certains systèmes de sites web exigent que l'utilisateur soit connecté pour visualiser le contenu ; dans ce cas, nous pouvons utiliser une HttpIdentity : -
HttpIdentity id = new HttpIdentity();
id.NetworkUsername = "username";
id.NetworkPassword = "pwd";
Identities.Add(id);
HttpIdentity id = new HttpIdentity();
id.NetworkUsername = "username";
id.NetworkPassword = "pwd";
Identities.Add(id);
Dim id As New HttpIdentity()
id.NetworkUsername = "username"
id.NetworkPassword = "pwd"
Identities.Add(id)
L'une des caractéristiques les plus impressionnantes et les plus puissantes d'IronWebscraper est la possibilité d'utiliser des milliers d'outils de recherche uniques (les données d'identification de l'utilisateur et/ou les moteurs de navigation) pour usurper ou gratter des sites web en utilisant des sessions de connexion multiples.
public override void Init()
{
License.LicenseKey = " LicenseKey ";
this.LoggingLevel = WebScraper.LogLevel.All;
this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
var proxies = "IP-Proxy1: 8080,IP-Proxy2: 8081".Split(',');
foreach (var UA in IronWebScraper.CommonUserAgents.ChromeDesktopUserAgents)
{
foreach (var proxy in proxies)
{
Identities.Add(new HttpIdentity()
{
UserAgent = UA,
UseCookies = true,
Proxy = proxy
});
}
}
this.Request("http://www.Website.com", Parse);
}
public override void Init()
{
License.LicenseKey = " LicenseKey ";
this.LoggingLevel = WebScraper.LogLevel.All;
this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
var proxies = "IP-Proxy1: 8080,IP-Proxy2: 8081".Split(',');
foreach (var UA in IronWebScraper.CommonUserAgents.ChromeDesktopUserAgents)
{
foreach (var proxy in proxies)
{
Identities.Add(new HttpIdentity()
{
UserAgent = UA,
UseCookies = true,
Proxy = proxy
});
}
}
this.Request("http://www.Website.com", Parse);
}
Public Overrides Sub Init()
License.LicenseKey = " LicenseKey "
Me.LoggingLevel = WebScraper.LogLevel.All
Me.WorkingDirectory = AppSetting.GetAppRoot() & "\ShoppingSiteSample\Output\"
Dim proxies = "IP-Proxy1: 8080,IP-Proxy2: 8081".Split(","c)
For Each UA In IronWebScraper.CommonUserAgents.ChromeDesktopUserAgents
For Each proxy In proxies
Identities.Add(New HttpIdentity() With {
.UserAgent = UA,
.UseCookies = True,
.Proxy = proxy
})
Next proxy
Next UA
Me.Request("http://www.Website.com", Parse)
End Sub
Vous disposez de plusieurs propriétés qui vous donnent des comportements différents, ce qui empêche les sites web de vous bloquer.
Certaines de ces propriétés : -
- NetworkDomain : Le domaine de réseau à utiliser pour l'authentification de l'utilisateur. Prend en charge les réseaux Windows, NTLM, Keroberos, Linux, BSD et Mac OS X. Doit être utilisé avec (Nom d'utilisateur et mot de passe du réseau)
- NetworkUsername : Le nom d'utilisateur réseau/http à utiliser pour l'authentification de l'utilisateur. Prend en charge Http, les réseaux Windows, NTLM, Kerberos, les réseaux Linux, les réseaux BSD et Mac OS.
- MotdepasseRéseau : Le mot de passe réseau/http à utiliser pour l'authentification de l'utilisateur. Prend en charge Http, les réseaux Windows, NTLM, Keroberos, les réseaux Linux, les réseaux BSD et Mac OS.
- Proxy : pour définir les paramètres du proxy
- UserAgent : pour définir le moteur du navigateur (chrome desktop , chrome mobile , chrome tablet , IE et Firefox , etc.)
- HttpRequestHeaders : pour les valeurs d'en-tête personnalisées qui seront utilisées avec cette identité, et qui acceptent un objet dictionnaire(Dictionnaire <chaîne de caractères, chaîne de caractères>\N)
UseCookies : activer/désactiver l'utilisation des cookies
IronWebScraper exécute le scraper en utilisant des identités aléatoires. Si nous devons spécifier l'utilisation d'une identité spécifique pour analyser une page, nous pouvons le faire.
public override void Init()
{
License.LicenseKey = " LicenseKey ";
this.LoggingLevel = WebScraper.LogLevel.All;
this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
HttpIdentity identity = new HttpIdentity();
identity.NetworkUsername = "username";
identity.NetworkPassword = "pwd";
Identities.Add(id);
this.Request("http://www.Website.com", Parse, identity);
}
public override void Init()
{
License.LicenseKey = " LicenseKey ";
this.LoggingLevel = WebScraper.LogLevel.All;
this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
HttpIdentity identity = new HttpIdentity();
identity.NetworkUsername = "username";
identity.NetworkPassword = "pwd";
Identities.Add(id);
this.Request("http://www.Website.com", Parse, identity);
}
Public Overrides Sub Init()
License.LicenseKey = " LicenseKey "
Me.LoggingLevel = WebScraper.LogLevel.All
Me.WorkingDirectory = AppSetting.GetAppRoot() & "\ShoppingSiteSample\Output\"
Dim identity As New HttpIdentity()
identity.NetworkUsername = "username"
identity.NetworkPassword = "pwd"
Identities.Add(id)
Me.Request("http://www.Website.com", Parse, identity)
End Sub
Activer la fonction de cache Web
Cette fonction est utilisée pour mettre en cache les pages demandées. Il est souvent utilisé dans les phases de développement et de test ; permettant aux développeurs de mettre en cache les pages nécessaires pour les réutiliser après une mise à jour du code. Cela vous permet d'exécuter votre code sur les pages mises en cache après avoir redémarré votre scraper Web et de ne pas avoir à vous connecter au site Web en direct à chaque fois (action-replay).
Vous pouvez l'utiliser dans Init() Méthode
ActiverWebCache();
OU
ActiverWebCache(Période d'expiration);
Il enregistre les données mises en cache dans le dossier WebCache situé dans le répertoire de travail
public override void Init()
{
License.LicenseKey = " LicenseKey ";
this.LoggingLevel = WebScraper.LogLevel.All;
this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
EnableWebCache(new TimeSpan(1,30,30));
this.Request("http://www.WebSite.com", Parse);
}
public override void Init()
{
License.LicenseKey = " LicenseKey ";
this.LoggingLevel = WebScraper.LogLevel.All;
this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
EnableWebCache(new TimeSpan(1,30,30));
this.Request("http://www.WebSite.com", Parse);
}
Public Overrides Sub Init()
License.LicenseKey = " LicenseKey "
Me.LoggingLevel = WebScraper.LogLevel.All
Me.WorkingDirectory = AppSetting.GetAppRoot() & "\ShoppingSiteSample\Output\"
EnableWebCache(New TimeSpan(1,30,30))
Me.Request("http://www.WebSite.com", Parse)
End Sub
IronWebscraper dispose également de fonctionnalités permettant à votre moteur de continuer à scraper après le redémarrage du code en définissant le nom du processus de démarrage du moteur à l'aide de Start(CrawlID)
static void Main(string [] args)
{
// Create Object From Scraper class
EngineScraper scrape = new EngineScraper();
// Start Scraping
scrape.Start("enginestate");
}
static void Main(string [] args)
{
// Create Object From Scraper class
EngineScraper scrape = new EngineScraper();
// Start Scraping
scrape.Start("enginestate");
}
Shared Sub Main(ByVal args() As String)
' Create Object From Scraper class
Dim scrape As New EngineScraper()
' Start Scraping
scrape.Start("enginestate")
End Sub
La demande d'exécution et la réponse sont enregistrées dans le dossier SavedState du répertoire de travail.
L'étranglement
Nous pouvons contrôler les nombres minimum et maximum de connexions et la vitesse de connexion par domaine.
public override void Init()
{
License.LicenseKey = "LicenseKey";
this.LoggingLevel = WebScraper.LogLevel.All;
this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
// Gets or sets the total number of allowed open HTTP requests (threads)
this.MaxHttpConnectionLimit = 80;
// Gets or sets minimum polite delay (pause)between request to a given domain or IP address.
this.RateLimitPerHost = TimeSpan.FromMilliseconds(50);
// Gets or sets the allowed number of concurrent HTTP requests (threads) per hostname
// or IP address. This helps protect hosts against too many requests.
this.OpenConnectionLimitPerHost = 25;
this.ObeyRobotsDotTxt = false;
// Makes the WebSraper intelligently throttle requests not only by hostname, but
// also by host servers' IP addresses. This is polite in-case multiple scraped domains
// are hosted on the same machine.
this.ThrottleMode = Throttle.ByDomainHostName;
this.Request("https://www.Website.com", Parse);
}
public override void Init()
{
License.LicenseKey = "LicenseKey";
this.LoggingLevel = WebScraper.LogLevel.All;
this.WorkingDirectory = AppSetting.GetAppRoot() + @"\ShoppingSiteSample\Output\";
// Gets or sets the total number of allowed open HTTP requests (threads)
this.MaxHttpConnectionLimit = 80;
// Gets or sets minimum polite delay (pause)between request to a given domain or IP address.
this.RateLimitPerHost = TimeSpan.FromMilliseconds(50);
// Gets or sets the allowed number of concurrent HTTP requests (threads) per hostname
// or IP address. This helps protect hosts against too many requests.
this.OpenConnectionLimitPerHost = 25;
this.ObeyRobotsDotTxt = false;
// Makes the WebSraper intelligently throttle requests not only by hostname, but
// also by host servers' IP addresses. This is polite in-case multiple scraped domains
// are hosted on the same machine.
this.ThrottleMode = Throttle.ByDomainHostName;
this.Request("https://www.Website.com", Parse);
}
Public Overrides Sub Init()
License.LicenseKey = "LicenseKey"
Me.LoggingLevel = WebScraper.LogLevel.All
Me.WorkingDirectory = AppSetting.GetAppRoot() & "\ShoppingSiteSample\Output\"
' Gets or sets the total number of allowed open HTTP requests (threads)
Me.MaxHttpConnectionLimit = 80
' Gets or sets minimum polite delay (pause)between request to a given domain or IP address.
Me.RateLimitPerHost = TimeSpan.FromMilliseconds(50)
' Gets or sets the allowed number of concurrent HTTP requests (threads) per hostname
' or IP address. This helps protect hosts against too many requests.
Me.OpenConnectionLimitPerHost = 25
Me.ObeyRobotsDotTxt = False
' Makes the WebSraper intelligently throttle requests not only by hostname, but
' also by host servers' IP addresses. This is polite in-case multiple scraped domains
' are hosted on the same machine.
Me.ThrottleMode = Throttle.ByDomainHostName
Me.Request("https://www.Website.com", Parse)
End Sub
Propriétés d'étranglement
- MaxHttpConnectionLimit
Nombre total de requêtes HTTP ouvertes autorisées (fils) - RateLimitPerHost
Délai de polissage ou pause minimum (en millisecondes) entre la demande et un domaine ou une adresse IP donné(e) - OpenConnectionLimitPerHost (limite d'ouverture de connexion par hôte)
Nombre autorisé de requêtes HTTP simultanées (fils) - Mode accélérateur
Permet au WebSraper de limiter intelligemment les requêtes non seulement en fonction du nom d'hôte, mais aussi en fonction de l'adresse IP des serveurs hôtes. Il s'agit d'une mesure de politesse au cas où plusieurs domaines raclés seraient hébergés sur la même machine