Читать «C# 4.0: полное руководство» онлайн - страница 663

Герберт Шилдт

LastModif iedDemo http: //HerbSchildt. com

*/

using System;

using System.Net;

class LastModifiedDemo {

  static void Main(string[] args) {

    if (args.Length != 1) {

      Console.WriteLine("Применение: LastModifiedDemo <uri>"); return;

    }

    HttpWebRequest req = (HttpWebRequest)

    WebRequest.Create(args[0]);

    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

    Console.WriteLine("Последняя модификация: " + resp.LastModified);

    resp.Close();

  }

}

Практический пример создания программы MiniCrawler

Для того чтобы показать, насколько просто программировать для Интернета средствами классов WebRequest и WebReponse, обратимся к разработке скелетного варианта поискового робота под названием MiniCrawler. Поисковый робот представляет собой программу последовательного перехода от одной ссылки на сетевой ресурс к другой. Поисковые роботы применяются в поисковых механизмах для каталогизации содержимого. Разумеется, поисковый робот MiniCrawler не обладает такими развитыми возможностями, как те, что применяются в поисковых механизмах. Эта программа начинается с ввода пользователем конкретного адреса URI, по которому затем читается содержимое и осуществляется поиск в нем ссылки. Если ссылка найдена, то программа запрашивает пользователя, желает ли он перейти по этой ссылке к обнаруженному сетевому ресурсу, найти другую ссылку на имеющейся странице или выйти из программы. Несмотря на всю простоту такого алгоритма поиска сетевых ресурсов, он служит интересным и наглядным примером доступа к Интернету средствами С#.

Программе MiniCrawler присущ ряд ограничений. Во-первых, в ней обнаруживаются только абсолютные ссылки, указываемые по гипертекстовой команде href="http. Относительные ссылки при этом не обнаруживаются. Во-вторых, возврат к предыдущей ссылке в программе не предусматривается. И в-третьих, в ней отображаются только ссылки, но не окружающее их содержимое. Несмотря на все указанные ограничения данного скелетного варианта поискового робота, он вполне работоспособен и может быть без особых хлопот усовершенствован для решения других задач. На самом деле добавление новых возможностей в программу MiniCrawler — это удобный случай освоить на практике сетевые классы и узнать больше о сетевом подключении к Интернету. Ниже приведен полностью исходный код программы MiniCrawler.

/* MiniCrawler: скелетный вариант поискового робота.

Применение: для запуска поискового робота укажите URI в командной строке. Например, для того чтобы начать поиск с адреса www.McGraw-Hill.com, введите следующую команду:

MiniCrawler http://McGraw-Hill.com

*/

using System;

using System.Net;

using System.IO;

class MiniCrawler {

  // Найти ссылку в строке содержимого,

  static string FindLink(string htmlstr,

    ref int startloc) {

    int i;

    int start, end;

    string uri = null;

    i = htmlstr.IndexOf("href=\"http", startloc,

      StringComparison.OrdinalIgnoreCase);

    if (i != -1) {

      start = htmlstr.IndexOf('"', i) + 1;