Narzędzia do przechwytywania i konwertowania Internetu

Web Scraper API dla ASP.NET Interfejs API zgarniacza ASP.NET

Przede wszystkim pobieranie API Web Scraper API dla ASP.NET i sprawdź, aby rozpocząć handler.ashx znajdujący się w przykładowym projekcie WWW.

Przetwarzaj dane zeskrobane

Najłatwiejszym sposobem przetwarzania zeskrobanych danych jest uzyskanie dostępu do danych jako obiekt JSON lub XML, ponieważ umożliwia to łatwą manipulację danymi i ich wyszukiwanie. JSON będzie miał następującą strukturę ogólną z nazwą zestawu danych jako atrybutem obiektu, sam zawierający tablicę obiektów z nazwą każdej kolumny jako innym atrybutem.

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

Przede wszystkim należy pamiętać, że program obsługi otrzyma wszystkie zeskrobane dane, które mogą obejmować dane, których nie można przekonwertować na obiekty JSON lub XML. Dlatego rodzaj otrzymywanych danych należy sprawdzić przed przetworzeniem.

Jednak w przypadku interfejsu API ASP.NET wymagany jest dodatkowy krok w celu odczytania plików JSON lub XML, w których tworzone są klasy pasujące do oczekiwanej struktury danych. Przykład tego pokazano poniżej, w którym utworzono dwie definicje klas do przechowywania powyższej struktury danych JSON.

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

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

Klasy te są teraz używane do konwersji pliku JSON into użyteczna struktura obiektu. W poniższym przykładzie konstruktor ScrapeResult poniżej odbiera klasę HttpRequest, jednak akceptuje również klasę HttpRequestBase, aby była kompatybilna z projektami sieciowymi 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));
}

Powyższy przykład pokazuje, jak przeglądać wszystkie wyniki klasy zestawu danych i wykonywać określone działania w zależności od wartości parametru Column_Two własność. Również jeśli plik otrzymany przez program obsługi nie jest plikiem JSON, to jest po prostu saved do katalogu wyników. Podczas gdy klasa ScrapeResult stara się zapewnić, że wszystkie opublikowane pliki pochodzą z serwerów GrabzIt, rozszerzenie plików należy również sprawdzić, zanim zostaną saved.

Metody i właściwości ScrapeResult

Poniżej wymieniono wszystkie metody i właściwości klasy ScrapeResult, których można użyć do przetwarzania wyników zgarniania.

  • string Extension - pobiera rozszerzenie dowolnego pliku wynikającego ze zeskrobania.
  • string Filename - pobiera nazwę pliku dowolnego pliku wynikającego ze zeskrobania.
  • T FromJSON<T>() - konwertuje dowolny plik JSON powstały w wyniku zadrapania na określony typ.
  • string ToString() - konwertuje dowolny plik powstały w wyniku złomowania na plik string.
  • T FromXML<T>() - konwertuje dowolny plik XML powstały w wyniku zadrapania na określony typ.
  • boolean Save(string path) - saves dowolny plik wynikający ze zeskrobania, zwraca true, jeśli się powiedzie.

Debugowanie

Najlepszym sposobem debugowania programu obsługi programu ASP.NET jest pobranie wyników skrobania z skrobaki z sieci strona, save plik, z którym masz problem, do dostępnej lokalizacji, a następnie przekaż ścieżkę tego pliku do konstruktora klasy ScrapeResult. Pozwala to na debugowanie programu obsługi bez konieczności wykonywania nowego skrobania za każdym razem, jak pokazano poniżej.

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

#the rest of your handler code remains the same

Kontrolowanie zadrapania

Z API Web Scraper API GrabzIt możesz również zmienić ten status scrape, uruchamiając, zatrzymując lub wyłączając scrape w razie potrzeby. Jest to pokazane w poniższym przykładzie poprzez przekazanie identyfikatora skrobania wraz z pożądanym statusem skrobania podanym przez ScrapeStatus enum do SetScrapeStatus Metoda.

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);
}

Metody i właściwości GrabzItScrapeClient

Poniżej wymieniono wszystkie metody i właściwości klasy GrabzItScrapeClient, których można użyć do kontrolowania zadrapań.

  • GrabzItScrape[] GetScrapes() - zwraca wszystkie zadrapania użytkownika, w tym wyniki zgarniania jako tablicę obiektów GrabzItScrape.
  • GrabzItScrape GetScrape(string id) - zwraca obiekt GrabzItScrape reprezentujący pożądane zadrapanie.
  • bool SetScrapeProperty(string id, IProperty property) - ustawia właściwość zadrapania i zwraca true, jeśli się powiedzie.
  • bool SetScrapeStatus(string id, ScrapeStatus status) - ustawia status zadrapania i zwraca true, jeśli się powiedzie.
  • bool SendResult(string id, string resultId) - ponownie wysyła wynik zadrapania i zwraca wartość true, jeśli się powiedzie.
    • Identyfikator scrape i identyfikator wyniku można znaleźć w metodzie GetScrape.
  • SetLocalProxy (string proxyUrl) - ustawia użycie lokalnego serwera proxy dla wszystkich żądań.