Migliore opzione per il web scraping (HTMLAgilityPack o Python + beautifulsoup) per programmatore C #

beautifulsoup c# html-agility-pack python

Domanda

Sono un programmatore .NET. Devo lavorare su un progetto di scraping web. Voglio avere un'idea su HTMLAgilityPack vs BeautifulSoup.

Molte persone dicono che BeautifulSoup è molto meglio di HTMLAgilityPack. Ma per questo, ho bisogno di imparare Python.

Quindi, la mia domanda è: è ragionevole per me imparare Python e BeautifulSoup o continuare con C # e HTMLAgilityPack?

Qualsiasi altro suggerimento è accolto calorosamente.

Risposta accettata

Nel mondo C # .NET, consiglierei HTMLAgilityPack perché è molto flessibile. Ti consente di manipolare l'HTML mal formato come se fosse un XML ben formato, quindi puoi utilizzare XPath o semplicemente scorrere i nodi.

BeautifulSoup è un ottimo modo per fare lo scraping in HTML, ma dal punto di vista dello sviluppatore, non è davvero facile prendere le mani su una tecnologia completamente nuova. Quindi consiglio vivamente HTMLAgilityPack se sei un utente .NET.

Puoi ottenere grandi successi con la combinazione di HTML Agility Pack , espressioni regolari e XDocument (LINQ -> XMLy stuff)

È estremamente potente - LINQ e lambda (parte 3) - HTML Agility Pack è un post sul blog di Vijay Santhanam che mi ha entusiasmato.


Risposta popolare

CsQuery , una libreria che ho creato, è un'alternativa relativamente nuova a Html Agility Pack. Offre i seguenti vantaggi:

  • Completo supporto per selettori CSS3, che per la maggior parte delle persone è già familiare e molto più semplice di xpath, e allo stesso modo in cui hai già programmato il codice per il client
  • L'API jQuery, per gli stessi motivi
  • Utilizza il parser HTML validator.nu , un parser completamente compatibile con HTML5. Questa è la stessa base di codice utilizzata dai browser basati su Gecko (Firefox), il che significa che dovrebbe produrre esattamente lo stesso DOM dei browser Web anche per il markup in genere cattivo / non valido.
  • Indicizza i documenti rendendo i selettori estremamente veloci, anche su documenti molto grandi. HAP deve attraversare l'intero albero dei documenti per ciascun selettore, rendendolo molto lento per i selettori complessi e i documenti di grandi dimensioni.
  • Ampia copertura del test delle unità: tutti i test di jQuery e Sizzle (il motore di selezione CSS di jQuery) sono stati trasferiti su C #.

svantaggi:

  • In questo momento funziona solo compila .NET 4+ full framework, mentre HAP ha build per la maggior parte degli ambienti .NET.

Puoi scaricarlo da nuget: Install-Package CsQuery .




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché