वेब पर कब्जा और परिवर्तित करने के लिए उपकरण

ASP.NET के लिए वेब स्क्रैपर एपीआई ASP.NET स्क्रैपर एपीआई

सब से पहले डाउनलोड 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 वर्ग प्राप्त कर रहा है, हालाँकि इसे ASP.NET MVC वेब प्रोजेक्ट्स के साथ संगत बनाने के लिए HttpRequestBase क्लास भी स्वीकार करता है।

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 फाइल नहीं है तो यह सिर्फ है saved परिणाम निर्देशिका के लिए। हालांकि ScrapeResult वर्ग यह सुनिश्चित करने का प्रयास करता है कि सभी पोस्ट की गई फाइलें GrabzIt के सर्वर से उत्पन्न होती हैं, फाइलों के विस्तार की जांच की जानी चाहिए, इससे पहले कि वे हैं saved.

ScrapeResult तरीके और गुण

नीचे सूचीबद्ध ScrapeResult वर्ग के सभी तरीके और गुण हैं जिनका उपयोग परिमार्जन परिणामों को संसाधित करने के लिए किया जा सकता है।

  • string Extension - परिमार्जन के परिणामस्वरूप किसी भी फ़ाइल का विस्तार मिलता है।
  • string Filename - परिमार्जन के परिणामस्वरूप किसी भी फ़ाइल का फ़ाइल नाम मिलता है।
  • T FromJSON<T>() - स्क्रैप के परिणामस्वरूप किसी भी JSON फ़ाइल को निर्दिष्ट प्रकार में कनवर्ट करता है।
  • string ToString() - खुरचनी से उत्पन्न किसी भी फ़ाइल को एक में कनवर्ट करता है string.
  • T FromXML<T>() - स्क्रैप से उत्पन्न किसी भी XML फ़ाइल को निर्दिष्ट प्रकार में कनवर्ट करता है।
  • boolean Save(string path) - saveकिसी भी फ़ाइल के परिमार्जन के फलस्वरूप, यदि वह सफल होती है तो वापस लौट आती है।

डीबगिंग

अपने ASP.NET हैंडलर को डीबग करने का सबसे अच्छा तरीका है कि परिणामों को एक स्क्रैप से डाउनलोड करना है वेब स्क्रैप पेज, save वह फ़ाइल जिसे आप किसी पहुंच योग्य स्थान पर ले जा रहे हैं और फिर उस फ़ाइल के पथ को ScrapeResult वर्ग के निर्माता के पास भेज दें। यह आपको अपने हैंडलर को हर बार एक नया परिमार्जन करने के बिना डिबग करने की अनुमति देता है, जैसा कि नीचे दिखाया गया है।

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

#the rest of your handler code remains the same

एक परिमार्जन नियंत्रित

GrabzIt के वेब स्क्रैपर एपीआई के साथ आप एक स्क्रैप की स्थिति को बदल सकते हैं, शुरू कर सकते हैं, रोक सकते हैं या आवश्यकतानुसार स्क्रैप को अक्षम कर सकते हैं। यह नीचे दिए गए उदाहरण में दिखाया गया है कि स्क्रैप की आईडी पास करने के साथ-साथ प्रदान की गई वांछित स्क्रैप स्थिति 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);
}

GrabzItSrapeClient के तरीके और गुण

नीचे सूचीबद्ध तरीके 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) - एक परिमार्जन का परिणाम हल करता है और सफल होने पर वापस लौटता है।
    • स्क्रेप आईडी और रिजल्ट आईडी को गेटस्क्रेप विधि से पाया जा सकता है।
  • SetLocalProxy (string proxyUrl) - सभी अनुरोधों के लिए स्थानीय प्रॉक्सी सर्वर का उपयोग करने के लिए सेट करता है।