Как получить лучший ответ из поиска Google в моем приложении

Я хочу разработать настольное приложение, используя (любой язык программирования)C#.NET; Требуется показать ответ на вопрос в текстовом представлении, как это делает Google, когда кто-то ищет любой вопрос, как показано на рисунке.

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

Лучший результат поиска Google

1 ответ

Для этого есть 2 варианта:

1. Разбор HTML

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

Вы можете использовать код, подобный этому примеру, чтобы получить код HTML:

string urlAddress = "https://www.google.co.il/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=what%20is%20the%20weight%20of%20human%20heart";
// need to process to get the real URL of the question.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode == HttpStatusCode.OK)
{
  Stream receiveStream = response.GetResponseStream();
  StreamReader readStream = null;

  if (response.CharacterSet == null)
  {
     readStream = new StreamReader(receiveStream);
  }
  else
  {
     readStream = new StreamReader(receiveStream,Encoding.GetEncoding(response.CharacterSet));
  }

  string data = readStream.ReadToEnd();
  response.Close();
  readStream.Close();
}

Это даст вам возвращенный HTML-код с сайта.

Чтобы извлечь лучший результат, вы можете использовать какой-то HTML-анализатор, как описано здесь: Каков наилучший способ анализа HTML в C#?

2. GOOGLE API

Вы также можете использовать Google API:

using Google.API.Search;

а потом

 var client = new GwebSearchClient("http://www.google.com");
    var results = client.Search("google api for .NET", 100);
    foreach (var webResult in results)
    {
        //Console.WriteLine("{0}, {1}, {2}", webResult.Title, webResult.Url, webResult.Content);
        listBox1.Items.Add(webResult.ToString ());
    }
Другие вопросы по тегам