Прежде всего скачать 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, которые можно использовать для обработки результатов очистки.
Лучший способ отладки вашего обработчика 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, которые можно использовать для управления скрепами.