כלים ללכידה ולהמרה של האינטרנט

ממשק API של מגרד רשת עבור ASP.NET ממשק API של ASP.NET Scraper

קודם כל להורדה ממשק ה- API של מגרד האינטרנט עבור ASP.NET ובדוק את ה- handler.ashx שנמצא בפרויקט האינטרנט לדוגמה כדי להתחיל.

עיבוד נתונים מגרדים

הדרך הקלה ביותר לעבד נתונים מגרדים היא לגשת לנתונים כאובייקט JSON או XML, מכיוון שהדבר מאפשר לתפעל ולשאול בקלות את הנתונים. ה- JSON יבנה בפורמט הכללי הבא עם שם הנתונים כמאפיין האובייקט, עצמו מכיל מערך של אובייקטים עם כל שם העמודה כתכונה אחרת.

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

ראשית כל צריך לזכור כי המטפל ישלח את כל הנתונים הגרוטים, אשר עשויים לכלול נתונים שלא ניתן להמיר לאובייקטים JSON או XML. לכן יש לבדוק את סוג הנתונים שאתה מקבל לפני שעובדים אותם.

עם זאת עם ה- ASP.NET API, יש צורך בצעד נוסף בכדי לקרוא קבצי JSON או XML, בהם נוצרים מחלקות התואמות את מבנה הנתונים הצפוי. דוגמה לכך מוצגת להלן שתי נוצרו שתי הגדרות מחלקה המחזיקות במבנה הנתונים של JSON לעיל.

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

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

שיעורים אלה משמשים כעת להמרת קובץ JSON intמבנה אובייקטים שמיש. בדוגמה להלן קבלן הבנייה של ScrapeResult למטה מקבל את מחלקת HttpRequest, אולם הוא גם מקבל את מחלקת HttpRequestBase בכדי להפוך אותו לתואם עם פרויקטים ברשת 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));
}

הדוגמה שלמעלה מציגה כיצד לעבור בין כל תוצאות מחלקת הנתונים ולבצע פעולות ספציפיות בהתאם לערך של ה- Column_Two תכונה. כמו כן אם הקובץ שקיבל המטפל אינו קובץ JSON אז הוא פשוט saveמדריך לתוצאות. בעוד שכיתת ScrapeResult אכן מנסה להבטיח שכל הקבצים שפורסמו מקורם בשרתים של GrabzIt, יש לבדוק גם את סיומת הקבצים לפני שהם saved.

שיטות ומאפיינים של ScrapeResult

להלן כל השיטות והתכונות של מחלקת ScrapeResult שניתן להשתמש בהן לעיבוד תוצאות הגרד.

  • string Extension - מקבל הרחבה של כל קובץ הנובע מהגרד.
  • string Filename - מקבל את שם הקובץ של כל קובץ הנובע מהגרד.
  • T FromJSON<T>() - ממיר כל קובץ JSON הנובע מהגרד לסוג שצוין.
  • string ToString() - ממיר כל קובץ הנובע מהגרד ל- string.
  • T FromXML<T>() - ממיר כל קובץ XML הנובע מהגרד לסוג שצוין.
  • boolean Save(string path) - saves כל קובץ הנובע מהשריטה, חוזר ונכון אם הוא מצליח.

Debugging

הדרך הטובה ביותר לבצע ניפוי באגים עם מטפל ASP.NET שלך היא להוריד את התוצאות עבור גירוד מה- שריטות אינטרנט דף, save את הקובץ שאתה נתקל בו במיקום נגיש ואז העביר את הנתיב של הקובץ למבנה של מחלקת ScrapeResult. זה מאפשר לך לבצע ניפוי של המטפל שלך מבלי שתצטרך לבצע גרד חדש בכל פעם, כמוצג להלן.

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

#the rest of your handler code remains the same

שליטה על שריטה

עם ממשק ה- API של GrabzIt Web Scraper אתה יכול גם לשנות את הסטטוס של גירוד, להתחיל, לעצור או להשבית גרד לפי הצורך. זה מוצג בדוגמה למטה על ידי העברת תעודת הזהות של הגרד יחד עם מצב הגרד הרצוי שסופק על ידי ScrapeStatus enum ל SetScrapeStatus שִׁיטָה.

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

להלן כל השיטות והתכונות של מחלקת GrabzItScrapeClient בהן ניתן להשתמש כדי לשלוט על שריטות.

  • GrabzItScrape[] GetScrapes() - מחזירה את כל גרוטאות המשתמשים, הכוללות תוצאות גרד כמו מערך של אובייקטים של GrabzItScrape.
  • GrabzItScrape GetScrape(string id) - מחזיר אובייקט GrabzItScrape המייצג את הגרד הרצוי.
  • bool SetScrapeProperty(string id, IProperty property) - מגדיר את רכוש של גרד וחוזר נכון אם מצליח.
  • bool SetScrapeStatus(string id, ScrapeStatus status) - קובע סטטוס של גרד ומחזיר אמת אם מצליח.
  • bool SendResult(string id, string resultId) - שולח שוב את התוצאה של הגרד ומחזיר אמת אם מצליח.
    • ניתן למצוא את מזהה השריטה ומזהה התוצאה משיטת GetScrape.
  • SetLocalProxy (string proxyUrl) - מגדיר את שרת ה- Proxy המקומי לשימוש בכל הבקשות.