Как я могу выполнить поиск с помощью Google Custom Search API for.NET?
Я только что обнаружил клиентская библиотека Google APIs для .NET, но из-за отсутствия документации мне трудно понять это.
Я пытаюсь сделать простой тест, выполнив пользовательский поиск, и я посмотрел, среди прочего, на следующее пространство имен:
Google.Apis.Customsearch.v1.Data.Query
Я попытался создать объект запроса и заполнить SearchTerms, но как я могу получить результаты из этого запроса?
5 ответов
посмотреть ссылка на API с помощью кода google-api-dotnet-клиент
CustomsearchService svc = new CustomsearchService();
string json = File.ReadAllText("jsonfile",Encoding.UTF8);
Search googleRes = null;
ISerializer des = new NewtonsoftJsonSerializer();
googleRes = des.Deserialize<Search>(json);
или
CustomsearchService svc = new CustomsearchService();
Search googleRes = null;
ISerializer des = new NewtonsoftJsonSerializer();
using (var fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
googleRes = des.Deserialize<Search>(fileStream);
}
с потоком вы также можете прочитать от webClient
или HttpRequest
как хочешь
мой плохой, мой первый ответ не использовал API Google.
в качестве предварительного условия вам нужно получить клиентская библиотека Google API
(в частности, вам нужно будет ссылаться на Google.Апис.dll в вашем проекте). Теперь, предполагая, что у вас есть ключ API и CX, вот тот же код, который получает результаты, но теперь использует фактические API:
string apiKey = "YOUR KEY HERE";
string cx = "YOUR CX HERE";
string query = "YOUR SEARCH HERE";
Google.Apis.Customsearch.v1.CustomsearchService svc = new Google.Apis.Customsearch.v1.CustomsearchService();
svc.Key = apiKey;
Google.Apis.Customsearch.v1.CseResource.ListRequest listRequest = svc.Cse.List(query);
listRequest.Cx = cx;
Google.Apis.Customsearch.v1.Data.Search search = listRequest.Fetch();
foreach (Google.Apis.Customsearch.v1.Data.Result result in search.Items)
{
Console.WriteLine("Title: {0}", result.Title);
Console.WriteLine("Link: {0}", result.Link);
}
прежде всего, вам нужно убедиться, что вы создали свой ключ API и CX. Я предполагаю, что вы уже сделали это, иначе вы можете сделать это в этих местах:
- ключ API (вам нужно создать новый ключ браузера)
- CX (вам нужно создать пользовательскую поисковую систему)
Как только у вас есть, вот простое консольное приложение, которое выполняет поиск и сбрасывает все названия/ссылки:
static void Main(string[] args)
{
WebClient webClient = new WebClient();
string apiKey = "YOUR KEY HERE";
string cx = "YOUR CX HERE";
string query = "YOUR SEARCH HERE";
string result = webClient.DownloadString(String.Format("https://www.googleapis.com/customsearch/v1?key={0}&cx={1}&q={2}&alt=json", apiKey, cx, query));
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> collection = serializer.Deserialize<Dictionary<string, object>>(result);
foreach (Dictionary<string, object> item in (IEnumerable)collection["items"])
{
Console.WriteLine("Title: {0}", item["title"]);
Console.WriteLine("Link: {0}", item["link"]);
Console.WriteLine();
}
}
Как вы можете видеть, я использую общую десериализацию JSON в словарь вместо того, чтобы быть строго типизированным. Это для удобства, так как я не хочу создавать класс, который реализует схему результатов поиска. При таком подходе нагрузка вложенный набор пар ключ-значение. Больше всего вас интересует коллекция items, которая является результатом поиска (первая страница, я полагаю). Я только обращаюсь к свойствам" title "и" link", но там намного больше, чем вы можете увидеть из документации или проверить в отладчике.
Google.Апис.Customsearch.В1 клиентской библиотеки http://www.nuget.org/packages/Google.Apis.Customsearch.v1/