Получить статическое текстовое содержимое веб-страницы - PullRequest
0 голосов
/ 31 октября 2009

У меня есть панель поиска на моем веб-сайте, которая ищет все страницы на веб-сайте, которые содержат определенное ключевое слово. Это достигается путем запроса каталога сервера индексирования.

Мой вопрос заключается в следующем, предположим, я ищу слово «ASP.NET», и я получил, скажем, 3 страницы, которые содержат «ASP.NET».

Я хочу отобразить строку, в которой найдено ключевое слово «ASP.NET» (чтобы пользователь получал контекстную информацию).

Может кто-нибудь помочь мне, пожалуйста ??? Это действительно очень срочно. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 31 октября 2009

Попробуйте выполнить синтаксический анализ документа, найти вхождение искомого слова, а затем извлечь окружающий текст. Это можно сделать, взяв весь текст внутри одного тега или взяв весь текст в одном предложении. Вы можете сделать это с помощью регулярного выражения.

Что работает лучше всего, зависит от ваших потребностей и структуры контента. Вы также можете включить окружающие предложения для достижения минимальной длины извлеченного текста.

Вот пример, пытающийся извлечь предложения, содержащие слово «вопрос» в этом вопросе. Он ни в коем случае не идеален, но он иллюстрирует концепцию и должен помочь вам начать:

using System;
using System.Net;
using System.Text.RegularExpressions;
class Program
{
    private const string url =
        "/1330492/poluchit-staticheskoe-tekstovoe-soderzhimoe-veb-stranitsy";
    private const string keyword = "question";

    private const string regexTemplate = ">([^<>]*?{0}[^<>]*?)<";
    static void Main(string[] args)
    {
        WebClient client = new WebClient();
        string html = client.DownloadString(url);
        Regex regex = new Regex(string.Format(regexTemplate,keyword) , RegexOptions.IgnoreCase);
        var matches = regex.Matches(html);
        foreach (Match match in matches)
            Console.WriteLine(match.Groups[1].Value);
    }
}
0 голосов
/ 31 октября 2009

Использование System.Xml.Linq Считайте страницу в XDocument. Используйте linq, чтобы запросить XDocument для текста, затем вернуть XElement и еще раз опросить этот элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...