Web Yakalama ve Dönüştürme Araçları

ASP.NET için Web Kazıyıcı API'si ASP.NET Kazıyıcı API

Herşeyden önce indir ASP.NET için Web Sıyırıcı API'sını kullanın ve örnek web projesinde bulunan handler.ashx'i başlatmak için inceleyin.

Kazınmış Veriyi İşleme

Kazınmış verileri işlemenin en kolay yolu, verilere kolayca manipüle edilmesini ve sorgulanmasını sağladığı için verilere bir JSON veya XML nesnesi olarak erişmektir. JSON, aşağıdaki genel formatta, nesne özniteliği olarak veri kümesi adıyla ve kendisi de her bir sütun adının başka bir öznitelik olarak bulunduğu bir dizi nesnesi içeren yapılandırılacaktır.

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

Öncelikle, işleyicinin, JSON veya XML nesnelerine dönüştürülemeyen verileri içerebilecek tüm sıyrılmış veriler gönderileceği unutulmamalıdır. Bu nedenle, aldığınız veri türünün işlenmeden önce kontrol edilmesi gerekir.

Ancak ASP.NET API ile, beklenen veri yapısına uygun sınıfların oluşturulduğu JSON veya XML dosyalarını okumak için ek bir adım gerekir. Bunun bir örneği aşağıda gösterilmiştir ve yukarıdaki JSON veri yapısını elde etmek için iki sınıf tanımı oluşturulmuştur.

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

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

Bu sınıflar artık bir JSON dosyasını dönüştürmek için kullanılıyor intkullanılabilir bir nesne yapısı. Aşağıdaki örnekte, aşağıdaki ScrapeResult yapıcısı, HttpRequest sınıfını alıyor, ancak ASP.NET MVC web projeleriyle uyumlu hale getirmek için HttpRequestBase sınıfını da kabul ediyor.

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

Yukarıdaki örnek, veri kümesi sınıfının tüm sonuçları arasında nasıl bir döngü uygulanacağını ve Column_Two özellik, mal mülk, emlak. Ayrıca, işleyici tarafından alınan dosya bir JSON dosyası değilse, o zaman sadece saved sonuç dizinine. ScrapeResult sınıfı, gönderilen tüm dosyaların GrabzIt sunucusundan kaynaklandığından emin olmaya çalışsa da, dosyaların uzantısı da önceden denetlenmelidir. saved.

ScrapeResult Yöntem ve Özellikleri

Aşağıda, sıyrık sonuçlarını işlemek için kullanılabilecek ScrapeResult sınıfının tüm yöntemleri ve özellikleri listelenmiştir.

  • string Extension - kazıma işleminden kaynaklanan herhangi bir dosyanın uzantısını alır.
  • string Filename - kazıma işleminden kaynaklanan herhangi bir dosyanın dosya adını alır.
  • T FromJSON<T>() - kazıma işleminden kaynaklanan herhangi bir JSON dosyasını belirtilen türe dönüştürür.
  • string ToString() - kazıma işleminden kaynaklanan herhangi bir dosyayı dönüştürür. string.
  • T FromXML<T>() - kazıma işleminden kaynaklanan herhangi bir XML dosyasını belirtilen türe dönüştürür.
  • boolean Save(string path) - saveHerhangi bir dosya sıyırıcıdan kaynaklanırsa başarılı olursa true değerini döndürür.

Hata ayıklama

ASP.NET işleyicinizi hata ayıklamanın en iyi yolu, bir sıyrık için sonuçları indirmektir. web notları sayfa, save Sorunlu bir konuma sahip olduğunuz bir dosyaya gidin ve o dosyanın yolunu ScrapeResult sınıfının yapıcısına iletin. Bu, aşağıda gösterildiği gibi her seferinde yeni bir kazıma yapmak zorunda kalmadan işleyicinizi hata ayıklamanızı sağlar.

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

#the rest of your handler code remains the same

Kazıma Kontrolü

GrabzIt'ın Web Kazıyıcı API'sı ile, bir kazıma durumunu da gerektiği gibi kazıma işlemini başlatabilir, durdurabilir veya devre dışı bırakabilirsiniz. Bu, aşağıdaki örnekte, sıyırıcının kimliği, sağlayıcının sağladığı istenen sıyırma durumu ile birlikte geçerek gösterilir. ScrapeStatus saymak SetScrapeStatus yöntemi.

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

GrabzItScrapeClient Yöntem ve Özellikleri

Aşağıda, GrabzItScrapeClient sınıfının sıyrıkları kontrol etmek için kullanılabilecek yöntem ve özelliklerinin tümü listelenmiştir.

  • GrabzItScrape[] GetScrapes() - bir dizi GrabzItScrape nesnesi olarak kazıma sonuçlarını içeren tüm kullanıcı notlarını döndürür.
  • GrabzItScrape GetScrape(string id) - istenen sıyırıcıyı temsil eden bir GrabzItScrape nesnesi döndürür.
  • bool SetScrapeProperty(string id, IProperty property) - ayarlar kazıma özelliği ve başarılı olursa true değerini döndürür.
  • bool SetScrapeStatus(string id, ScrapeStatus status) - Bir sıyrığın durumunu ayarlar ve başarılı olursa true değerini döndürür.
  • bool SendResult(string id, string resultId) - Bir sıyrığın sonucunu tekrar gönderir ve başarılı olursa doğru döner.
    • Kazıma kimliği ve sonuç kimliği GetScrape yönteminden bulunabilir.
  • SetLocalProxy (string proxyUrl) - tüm isteklerde kullanılacak yerel proxy sunucusunu ayarlar.