Извлечение внешней страницы и синтаксический анализ мета-тегов без Regex в C #? - PullRequest
1 голос
/ 06 декабря 2010

Рассмотрим следующий код:

public ActionResult Index(String URLQuery = "http://www.google.com")
    {

        HttpWebRequest webRequest;
        HttpWebResponse webResponse;

        int bufCount = 0;
        byte[] byteBuf = new byte[1024];
        String queryContent = "";


        webRequest = (HttpWebRequest) WebRequest.Create(URLQuery);
        webRequest.Timeout = 10*1000;
        webRequest.KeepAlive = false;
        webRequest.ContentType = "text/html";

        webResponse = (HttpWebResponse) webRequest.GetResponse();

        StreamReader responseStream = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.UTF8);

        queryContent = responseStream.ReadToEnd();

        ViewData["StreamResult"] = queryContent;            
        return View();
    }

По сути, это просто захватывает веб-страницу и выкладывает ее как есть.То, что я хотел бы сделать, это взять полученные извлеченные данные с экрана, и проанализировать их так же, как PHP позволяет вам делать, используя какой-то встроенный объект / каркас DOM.Я видел много примеров Regex для выполнения этой задачи, но я чувствую, что это неэффективно и приводит к слишком многим странным крайним случаям, которые могут привести к повреждению данных на моем конце.Обречен ли я использовать Regex для этого?

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Используя HtmlAgility Pack , вы можете сделать это очень легко.Ниже примера с использованием XPath, более новая версия также поддерживает синтаксис Linq, но я еще не пробовал это лично.

1 голос
/ 06 декабря 2010

Вы должны использовать для этого парсер - похоже, HTML-пакет agility будет делать то, что вы хотите.

...