Erweiterte Webscraping-Funktionen
HttpIdentity-Merkmal
Bei einigen Website-Systemen muss der Nutzer angemeldet sein, um den Inhalt zu sehen; in diesem Fall können wir eine HttpIdentity verwenden: -
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)
Eines der beeindruckendsten und leistungsstärksten Merkmale von IronWebScraper ist die Fähigkeit, Tausende von einzigartigen (Benutzerdaten und/oder Browser-Engines) zu verwenden, um Websites mithilfe von Multi-Login-Sitzungen zu täuschen oder auszulesen.
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
Sie haben mehrere Eigenschaften, die Ihnen verschiedene Verhaltensweisen ermöglichen und so verhindern, dass Websites Sie blockieren.
Einige dieser Eigenschaften: -
- NetworkDomain: Die Netzwerkdomäne, die für die Benutzerauthentifizierung verwendet werden soll. Unterstützt Windows, NTLM, Keroberos, Linux, BSD und Mac OS X Netzwerke. Muss mit (NetworkUsername und NetworkPassword) verwendet werden
- NetzwerkBenutzername: Der Netzwerk/HTTP-Benutzername, der zur Benutzerauthentifizierung verwendet wird. Unterstützt Http, Windows-Netzwerke, NTLM, Kerberos, Linux-Netzwerke, BSD-Netzwerke und Mac OS.
- NetworkPassword : Das Netzwerk/HTTP-Passwort, das zur Benutzerauthentifizierung verwendet werden soll. Unterstützt Http , Windows-Netzwerke, NTLM , Keroberos , Linux-Netzwerke, BSD-Netzwerke und Mac OS.
- Proxy: Proxy-Einstellungen festlegen
- UserAgent : zum Festlegen der Browser-Engine (Chrome Desktop, Chrome Mobile, Chrome Tablet, IE und Firefox, etc.)
- HttpRequestHeaders: für benutzerdefinierte Header-Werte, die mit dieser Identität verwendet werden sollen, und es akzeptiert ein Wörterbuchobjekt (Dictionary <string, string>)
UseCookies : die Verwendung von Cookies aktivieren/deaktivieren
IronWebscraper führt den Scraper mit Zufallsidentitäten aus. Wenn wir die Verwendung einer bestimmten Identität zum Parsen einer Seite angeben müssen, können wir dies tun.
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
Aktivieren Sie die Web-Cache-Funktion
Diese Funktion dient dazu, angeforderte Seiten zwischenzuspeichern. Sie wird häufig in der Entwicklungs- und Testphase eingesetzt; die es Entwicklern ermöglicht, benötigte Seiten zwischenzuspeichern und nach einer Codeaktualisierung wiederzuverwenden. Dies ermöglicht es Ihnen, Ihren Code auf zwischengespeicherten Seiten auszuführen, nachdem Sie Ihren Web Scraper neu gestartet haben, ohne sich jedes Mal mit der Live-Website verbinden zu müssen (Action-Replay).
Sie können es in der Init()-Methode verwenden
EnableWebCache();
OR
EnableWebCache(Timespan Expiry);
Es speichert Ihre zwischengespeicherten Daten im WebCache-Ordner unter dem Ordner des Arbeitsverzeichnisses
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 verfügt außerdem über Funktionen, die es Ihrer Engine ermöglichen, nach dem Neustart des Codes das Scraping fortzusetzen, indem Sie den Prozessnamen des Startvorgangs der Engine mit Start(CrawlID) festlegen.
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
Die Ausführungsanforderung und die Antwort werden im Ordner "SavedState" im Arbeitsverzeichnis gespeichert.
Drosselung
Wir können die minimale und maximale Anzahl der Verbindungen und die Verbindungsgeschwindigkeit pro Domain steuern.
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
Drosseleigenschaften
MaxHttpConnectionLimit
Gesamtzahl der erlaubten offenen HTTP-Anfragen (Threads)RateLimitPerHost
Minimale höfliche Verzögerung oder Pause (in Millisekunden) zwischen Anfragen an eine bestimmte Domain oder IP-AdresseOpenConnectionLimitPerHost
Zulässige Anzahl gleichzeitiger HTTP-Anfragen (Threads)Drosselmodus
Macht den WebScraper in der Lage, Anfragen nicht nur nach Hostnamen, sondern auch nach den IP-Adressen der Hostserver intelligent zu drosseln. Dies ist höflich für den Fall, dass mehrere gescrapte Domains auf demselben Rechner gehostet werden
Erste Schritte mit IronWebscraper
Beginnen Sie noch heute mit der Verwendung von IronWebScraper in Ihrem Projekt mit einer kostenlosen Testversion.