Как получить лучший ответ из поиска Google в моем приложении
Я хочу разработать настольное приложение, используя (любой язык программирования)C#.NET; Требуется показать ответ на вопрос в текстовом представлении, как это делает 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 ());
}