Comment extraire des données d'un blog en C

This article was translated from English: Does it need improvement?
Translated
View the article in English

Utilisons Iron WebScraper pour extraire le contenu d'un blog en utilisant C# ou VB.NET.

Ce tutoriel explique comment extraire le contenu d'un blog WordPress (ou similaire) à l'aide de .NET.

FireShotScreenCaptureGizmodo related to Comment extraire des données d'un blog en C

// Define a class that extends WebScraper from IronWebScraper
public class BlogScraper : WebScraper
{
    /// <summary>
    /// Override this method to initialize your web-scraper.
    /// Set at least one start URL and configure domain or URL patterns.
    /// </summary>
    public override void Init()
    {
        // Set your license key for IronWebScraper
        License.LicenseKey = "YourLicenseKey";

        // Enable logging for all actions
        this.LoggingLevel = WebScraper.LogLevel.All;

        // Set a directory to store output and cache files
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\BlogSample\Output\";

        // Enable caching with a specific duration
        EnableWebCache(new TimeSpan(1, 30, 30));

        // Request the start URL and specify the response handler
        this.Request("http://blogSite.com/", Parse);
    }
}
// Define a class that extends WebScraper from IronWebScraper
public class BlogScraper : WebScraper
{
    /// <summary>
    /// Override this method to initialize your web-scraper.
    /// Set at least one start URL and configure domain or URL patterns.
    /// </summary>
    public override void Init()
    {
        // Set your license key for IronWebScraper
        License.LicenseKey = "YourLicenseKey";

        // Enable logging for all actions
        this.LoggingLevel = WebScraper.LogLevel.All;

        // Set a directory to store output and cache files
        this.WorkingDirectory = AppSetting.GetAppRoot() + @"\BlogSample\Output\";

        // Enable caching with a specific duration
        EnableWebCache(new TimeSpan(1, 30, 30));

        // Request the start URL and specify the response handler
        this.Request("http://blogSite.com/", Parse);
    }
}
' Define a class that extends WebScraper from IronWebScraper
Public Class BlogScraper
	Inherits WebScraper

	''' <summary>
	''' Override this method to initialize your web-scraper.
	''' Set at least one start URL and configure domain or URL patterns.
	''' </summary>
	Public Overrides Sub Init()
		' Set your license key for IronWebScraper
		License.LicenseKey = "YourLicenseKey"

		' Enable logging for all actions
		Me.LoggingLevel = WebScraper.LogLevel.All

		' Set a directory to store output and cache files
		Me.WorkingDirectory = AppSetting.GetAppRoot() & "\BlogSample\Output\"

		' Enable caching with a specific duration
		EnableWebCache(New TimeSpan(1, 30, 30))

		' Request the start URL and specify the response handler
		Me.Request("http://blogSite.com/", Parse)
	End Sub
End Class
$vbLabelText   $csharpLabel

Comme d'habitude, nous créons un Scraper et héritons de la classe WebScraper. Dans ce cas précis, il s'agit de " BlogScraper ".

Nous avons défini un répertoire de travail sur " \BlogSample\Output\ " où tous nos fichiers de sortie et de cache peuvent être placés.

Ensuite, nous activons le cache web pour enregistrer les pages demandées dans le dossier cache " WebCache ".

Écrivons maintenant une fonction d'analyse syntaxique :

/// <summary>
/// Override this method to handle the Http Response for your web scraper.
/// Add additional methods if you handle multiple page types.
/// </summary>
/// <param name="response">The HTTP Response object to parse.</param>
public override void Parse(Response response)
{
    // Iterate over each link found in the section navigation
    foreach (var link in response.Css("div.section-nav > ul > li > a"))
    {
        switch(link.TextContentClean)
        {
            case "Reviews":
                {
                    // Handle reviews case
                }
                break;
            case "Science":
                {
                    // Handle science case
                }
                break;
            default:
                {
                    // Save the link title to a file
                    Scrape(new ScrapedData() { { "Title", link.TextContentClean } }, "BlogScraper.Jsonl");
                }
                break;
        }
    }
}
/// <summary>
/// Override this method to handle the Http Response for your web scraper.
/// Add additional methods if you handle multiple page types.
/// </summary>
/// <param name="response">The HTTP Response object to parse.</param>
public override void Parse(Response response)
{
    // Iterate over each link found in the section navigation
    foreach (var link in response.Css("div.section-nav > ul > li > a"))
    {
        switch(link.TextContentClean)
        {
            case "Reviews":
                {
                    // Handle reviews case
                }
                break;
            case "Science":
                {
                    // Handle science case
                }
                break;
            default:
                {
                    // Save the link title to a file
                    Scrape(new ScrapedData() { { "Title", link.TextContentClean } }, "BlogScraper.Jsonl");
                }
                break;
        }
    }
}
''' <summary>
''' Override this method to handle the Http Response for your web scraper.
''' Add additional methods if you handle multiple page types.
''' </summary>
''' <param name="response">The HTTP Response object to parse.</param>
Public Overrides Sub Parse(ByVal response As Response)
	' Iterate over each link found in the section navigation
	For Each link In response.Css("div.section-nav > ul > li > a")
		Select Case link.TextContentClean
			Case "Reviews"
					' Handle reviews case
			Case "Science"
					' Handle science case
			Case Else
					' Save the link title to a file
					Scrape(New ScrapedData() From {
						{ "Title", link.TextContentClean }
					},
					"BlogScraper.Jsonl")
		End Select
	Next link
End Sub
$vbLabelText   $csharpLabel

Dans la méthode Parse, nous récupérons tous les liens vers les pages de catégories (Films, Science, Critiques, etc.) à partir du menu principal.

Nous passons ensuite à une méthode d'analyse appropriée en fonction de la catégorie du lien.

Préparons notre modèle d'objet pour la page scientifique :

/// <summary>
/// Represents a model for Science Page
/// </summary>
public class ScienceModel
{
    /// <summary>
    /// Gets or sets the title.
    /// </summary>
    public string Title { get; set; }

    /// <summary>
    /// Gets or sets the author.
    /// </summary>
    public string Author { get; set; }

    /// <summary>
    /// Gets or sets the date.
    /// </summary>
    public string Date { get; set; }

    /// <summary>
    /// Gets or sets the image.
    /// </summary>
    public string Image { get; set; }

    /// <summary>
    /// Gets or sets the text.
    /// </summary>
    public string Text { get; set; }
}
/// <summary>
/// Represents a model for Science Page
/// </summary>
public class ScienceModel
{
    /// <summary>
    /// Gets or sets the title.
    /// </summary>
    public string Title { get; set; }

    /// <summary>
    /// Gets or sets the author.
    /// </summary>
    public string Author { get; set; }

    /// <summary>
    /// Gets or sets the date.
    /// </summary>
    public string Date { get; set; }

    /// <summary>
    /// Gets or sets the image.
    /// </summary>
    public string Image { get; set; }

    /// <summary>
    /// Gets or sets the text.
    /// </summary>
    public string Text { get; set; }
}
''' <summary>
''' Represents a model for Science Page
''' </summary>
Public Class ScienceModel
	''' <summary>
	''' Gets or sets the title.
	''' </summary>
	Public Property Title() As String

	''' <summary>
	''' Gets or sets the author.
	''' </summary>
	Public Property Author() As String

	''' <summary>
	''' Gets or sets the date.
	''' </summary>
	Public Property [Date]() As String

	''' <summary>
	''' Gets or sets the image.
	''' </summary>
	Public Property Image() As String

	''' <summary>
	''' Gets or sets the text.
	''' </summary>
	Public Property Text() As String
End Class
$vbLabelText   $csharpLabel

Passons maintenant à la mise en œuvre d'une extraction de données sur une seule page :

/// <summary>
/// Parses the reviews from the response.
/// </summary>
/// <param name="response">The HTTP Response object.</param>
public void ParseReviews(Response response)
{
    // A list to hold Science models
    var scienceList = new List<ScienceModel>();

    foreach (var postBox in response.Css("section.main > div > div.post-list"))
    {
        var item = new ScienceModel
        {
            Title = postBox.Css("h1.headline > a")[0].TextContentClean,
            Author = postBox.Css("div.author > a")[0].TextContentClean,
            Date = postBox.Css("div.time > a")[0].TextContentClean,
            Image = postBox.Css("div.image-wrapper.default-state > img")[0].Attributes["src"],
            Text = postBox.Css("div.summary > p")[0].TextContentClean
        };

        scienceList.Add(item);
    }

    // Save the science list to a JSONL file
    Scrape(scienceList, "BlogScience.Jsonl");
}
/// <summary>
/// Parses the reviews from the response.
/// </summary>
/// <param name="response">The HTTP Response object.</param>
public void ParseReviews(Response response)
{
    // A list to hold Science models
    var scienceList = new List<ScienceModel>();

    foreach (var postBox in response.Css("section.main > div > div.post-list"))
    {
        var item = new ScienceModel
        {
            Title = postBox.Css("h1.headline > a")[0].TextContentClean,
            Author = postBox.Css("div.author > a")[0].TextContentClean,
            Date = postBox.Css("div.time > a")[0].TextContentClean,
            Image = postBox.Css("div.image-wrapper.default-state > img")[0].Attributes["src"],
            Text = postBox.Css("div.summary > p")[0].TextContentClean
        };

        scienceList.Add(item);
    }

    // Save the science list to a JSONL file
    Scrape(scienceList, "BlogScience.Jsonl");
}
''' <summary>
''' Parses the reviews from the response.
''' </summary>
''' <param name="response">The HTTP Response object.</param>
Public Sub ParseReviews(ByVal response As Response)
	' A list to hold Science models
	Dim scienceList = New List(Of ScienceModel)()

	For Each postBox In response.Css("section.main > div > div.post-list")
		Dim item = New ScienceModel With {
			.Title = postBox.Css("h1.headline > a")(0).TextContentClean,
			.Author = postBox.Css("div.author > a")(0).TextContentClean,
			.Date = postBox.Css("div.time > a")(0).TextContentClean,
			.Image = postBox.Css("div.image-wrapper.default-state > img")(0).Attributes("src"),
			.Text = postBox.Css("div.summary > p")(0).TextContentClean
		}

		scienceList.Add(item)
	Next postBox

	' Save the science list to a JSONL file
	Scrape(scienceList, "BlogScience.Jsonl")
End Sub
$vbLabelText   $csharpLabel

Une fois notre modèle créé, nous pouvons analyser l'objet de réponse pour examiner en détail ses principaux éléments (titre, auteur, date, image, texte).

Ensuite, nous enregistrons nos résultats dans un fichier séparé en utilisant Scrape(object, fileName) .

Cliquez ici pour consulter le tutoriel complet sur l'utilisation d'IronWebScraper

Commencez à utiliser IronWebscraper

Le web scraping n'a jamais été une tâche simple, sans cadres dominants à utiliser dans les environnements de programmation C# ou .NET. Iron Web Scraper a été créé pour changer cela

Questions Fréquemment Posées

Comment puis-je créer un scraper web de blog en C# ?

Pour créer un scraper web de blog en C#, vous pouvez utiliser la bibliothèque IronWebScraper. Commencez par définir une classe qui étend la classe WebScraper, définissez une URL de départ, configurez le scraper pour gérer différents types de pages et utilisez la méthode Parse pour extraire les informations souhaitées des réponses HTTP.

Quelle est la fonction de la méthode Parse dans le scraping web ?

Dans le scraping web avec IronWebScraper, la méthode Parse est essentielle pour traiter les réponses HTTP. Elle aide à extraire les données en analysant le contenu des pages, en identifiant les liens et en catégorisant les types de pages telles que les articles de blog ou d'autres sections.

Comment puis-je gérer efficacement les données de scraping web ?

IronWebScraper permet une gestion efficace des données en configurant le cache pour stocker les pages demandées et en définissant un répertoire de travail pour les fichiers de sortie. Cette organisation aide à suivre les données extraites et réduit l'extraction répétée inutile de pages.

Comment IronWebScraper aide-t-il dans le scraping des blogs WordPress ?

IronWebScraper simplifie le scraping des blogs WordPress en fournissant des outils pour naviguer dans les structures de blogs, extraire les détails des publications et gérer divers types de pages. Vous pouvez utiliser la bibliothèque pour parser les publications pour obtenir des informations telles que le titre, l'auteur, la date, l'image et le texte.

Puis-je utiliser IronWebScraper pour both C# et VB.NET ?

Oui, IronWebScraper est compatible avec C# et VB.NET, ce qui en fait un choix polyvalent pour les développeurs qui préfèrent l'un de ces langages .NET.

Comment puis-je gérer différents types de pages dans un blog ?

Vous pouvez gérer différents types de pages dans un blog en remplissant la méthode Parse dans IronWebScraper. Cette approche vous permet de classer les pages dans différentes sections, telles que Avis et Science, et d'appliquer une logique d'analyse spécifique à chacune.

Existe-t-il un moyen d'enregistrer les données de blog extraites dans un format structuré ?

Oui, en utilisant IronWebScraper, vous pouvez enregistrer les données de blog extraites dans un format structuré comme JSONL. Ce format est utile pour stocker chaque donnée dans un format JSON ligne par ligne, ce qui facilite sa gestion et son traitement ultérieur.

Comment puis-je définir un répertoire de travail pour mon scraper web ?

Dans IronWebScraper, vous pouvez définir un répertoire de travail en configurant le scraper pour spécifier l'emplacement où les fichiers de sortie et de cache doivent être stockés. Cela aide à organiser efficacement les données extraites.

Quels sont des scénarios de dépannage courants dans le scraping web ?

Les scénarios de dépannage courants dans le scraping web incluent la gestion des modifications dans la structure du site web, la gestion des limites de débit et la gestion des mesures anti-scraping. En utilisant IronWebScraper, vous pouvez implémenter une gestion des erreurs et une journalisation pour diagnostiquer et résoudre ces problèmes.

Où puis-je trouver des ressources pour en savoir plus sur l'utilisation de IronWebScraper ?

Vous pouvez trouver des ressources et des tutoriels sur l'utilisation de IronWebScraper sur le site Web d'Iron Software, qui propose des guides détaillés et des exemples dans la section des tutoriels de scraping web.

Darrius Serrant
Ingénieur logiciel Full Stack (WebOps)

Darrius Serrant est titulaire d'un baccalauréat en informatique de l'université de Miami et travaille comme ingénieur marketing WebOps Full Stack chez Iron Software. Attiré par le codage dès son plus jeune âge, il a vu l'informatique comme à la fois mystérieuse et accessible, en faisant le ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 125,527 | Version: 2025.11 vient de sortir