Инструменты для захвата и конвертирования Интернета

API Web Scraper для ASP.NET

ASP.NET Scraper API

Прежде всего скачать Web 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, тогда это просто saved к каталогу результатов. В то время как класс ScrapeResult пытается гарантировать, что все размещенные файлы происходят с серверов GrabzIt, расширение файлов также должно быть проверено, прежде чем они будут saved.

ScrapeResult методы и свойства

Ниже перечислены все методы и свойства класса ScrapeResult, которые можно использовать для обработки результатов очистки.

Отладка

Лучший способ отладки вашего обработчика ASP.NET - это загрузить результаты для анализа из веб-царапины страницы save файл, с которым у вас возникла проблема, в доступном месте, а затем передайте путь этого файла в конструктор класса ScrapeResult. Это позволяет вам отлаживать ваш обработчик без необходимости каждый раз выполнять новую очистку, как показано ниже.

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

#the rest of your handler code remains the same

Управление скребком

С помощью GrabzIt Web Scraper API вы также можете изменить это состояние очистки, запуска, остановки или отключения очистки по мере необходимости. Это показано в приведенном ниже примере, передав идентификатор очистки вместе с желаемым состоянием очистки, предоставленным ScrapeStatus перечисление к 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/");
}
//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, которые можно использовать для управления скрепами.

  • SetLocalProxy (string proxyUrl) - устанавливает локальный прокси-сервер для использования для всех запросов.