Как я могу выполнить поиск с помощью 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/


вы можете начать с начало работы с API.