Strumenti per acquisire e convertire il Web

API Web Scraper per ASP.NET API Scraper ASP.NET

Prima di tutto scaricare l'API Web Scraper per ASP.NET e ispezionare il gestore.ashx situato nel progetto Web di esempio per iniziare.

Elaborazione dei dati acquisiti

Il modo più semplice per elaborare i dati di scraping è accedere ai dati come oggetto JSON o XML, in quanto ciò consente di manipolare e interrogare facilmente i dati. JSON sarà strutturato nel seguente formato generale con il nome del set di dati come attributo oggetto, a sua volta contenente una matrice di oggetti con ciascun nome di colonna come un altro attributo.

{
  "Items": [
    {
      "Column_One": "https://grabz.it/",
      "Column_Two": "Found"
    },
    {
      "Column_One": "http://dfadsdsa.com/",
      "Column_Two": "Missing"
    }]
}

Prima di tutto, è necessario ricordare che al gestore verranno inviati tutti i dati di cui è stato eseguito il scraping, che possono includere dati che non possono essere convertiti in oggetti JSON o XML. Pertanto, il tipo di dati che stai ricevendo deve essere verificato prima di essere elaborato.

Tuttavia, con l'API ASP.NET è necessario un passaggio aggiuntivo per leggere i file JSON o XML, in cui vengono create le classi che corrispondono alla struttura dei dati prevista. Un esempio di questo è mostrato di seguito in cui sono state create due definizioni di classe per contenere la struttura di dati JSON sopra.

public class DataSet
{
    public List<Item> Items;
}

public class Item
{
    public string Column_One;
    public string Column_Two;
}

Queste classi sono ora utilizzate per convertire un file JSON into una struttura ad oggetti utilizzabile. Nell'esempio seguente il costruttore ScrapeResult di seguito riceve la classe HttpRequest, tuttavia accetta anche la classe HttpRequestBase per renderla compatibile con i progetti Web ASP.NET MVC.

ScrapeResult scrapeResult = new ScrapeResult(context.Request);

if (scrapeResult.Extension == "json")
{
    DataSet dataSet = scrapeResult.FromJSON<DataSet>();
    foreach (Item item in dataSet.Items)
    {
        if (item.Column_Two == "Found")
        {
            //do something
        }
        else
        {
            //do something else
        }
    }
}
else
{
    //probably a binary file etc save it
    scrapeResult.save(context.Server.MapPath("~/results/" + scrapeResult.Filename));
}

L'esempio sopra mostra come scorrere tutti i risultati della classe del set di dati ed eseguire azioni specifiche in base al valore di Column_Two proprietà. Inoltre, se il file ricevuto dal gestore non è un file JSON, lo è solo saved alla directory dei risultati. Mentre la classe ScrapeResult tenta di garantire che tutti i file postati provengano dai server GrabzIt, è necessario verificare anche l'estensione dei file prima che siano saved.

Metodi e proprietà di ScrapeResult

Di seguito sono elencati tutti i metodi e le proprietà della classe ScrapeResult che possono essere utilizzati per elaborare i risultati della raschiatura.

  • string Extension - ottiene l'estensione di qualsiasi file risultante dalla raschiatura.
  • string Filename - ottiene il nome file di qualsiasi file risultante dalla raschiatura.
  • T FromJSON<T>() - converte qualsiasi file JSON risultante dalla raschiatura nel tipo specificato.
  • string ToString() - converte qualsiasi file risultante dalla raschiatura in a string.
  • T FromXML<T>() - converte qualsiasi file XML risultante dalla raschiatura nel tipo specificato.
  • boolean Save(string path) - saves qualsiasi file risultante dalla raschiatura, restituisce vero se ha esito positivo.

Debug

Il modo migliore per eseguire il debug del gestore ASP.NET è scaricare i risultati per uno scrap dal graffi web pagina, save il file con cui si sta riscontrando un problema in un percorso accessibile e quindi passare il percorso di quel file al costruttore della classe ScrapeResult. Ciò consente di eseguire il debug del gestore senza dover eseguire ogni volta un nuovo scrap, come mostrato di seguito.

ScrapeResult scrapeResult = new ScrapeResult("data.json");

#the rest of your handler code remains the same

Controllo di una raschiatura

Con l'API Web Scraper di GrabzIt puoi anche cambiare lo stato di uno scrap, avviando, arrestando o disabilitando uno scrap, se necessario. Questo è mostrato nell'esempio seguente passando l'ID del graffio insieme allo stato di raschiatura desiderato fornito da ScrapeStatus enum al SetScrapeStatus metodo.

GrabzItScrapeClient client = new GrabzItScrapeClient("Sign in to view your Application Key", "Sign in to view your Application Secret");
//Get all of our scrapes
GrabzItScrape[] myScrapes = client.GetScrapes();
if (myScrapes.Length == 0)
{
    throw new Exception("You haven't created any scrapes yet! Create one here: https://grabz.it/scraper/scrape.aspx");
}
//Start the first scrape
client.SetScrapeStatus(myScrapes[0].ID, ScrapeStatus.Start);
if (myScrapes[0].Results.Length > 0)
{
    //re-send first scrape result if it exists
    client.SendResult(myScrapes[0].ID, myScrapes[0].Results[0].ID);
}

Metodi e proprietà GrabzItScrapeClient

Di seguito sono elencati tutti i metodi e le proprietà della classe GrabzItScrapeClient che possono essere utilizzati per controllare gli scrap.

  • GrabzItScrape[] GetScrapes() - restituisce tutti i graffi dell'utente, che include i risultati di raschiatura come una matrice di oggetti GrabzItScrape.
  • GrabzItScrape GetScrape(string id) - restituisce un oggetto GrabzItScrape che rappresenta lo scrap desiderato.
  • bool SetScrapeProperty(string id, IProperty property) - imposta il proprietà di un graffio e restituisce true se ha esito positivo.
  • bool SetScrapeStatus(string id, ScrapeStatus status) - imposta lo stato di un graffio e restituisce vero in caso di successo.
  • bool SendResult(string id, string resultId) - rinvia il risultato di una raschiatura e restituisce vero in caso di successo.
    • L'id di raschiatura e l'id di risultato sono reperibili dal metodo GetScrape.
  • SetLocalProxy (string proxyurl) - imposta il server proxy locale da utilizzare per tutte le richieste.