Как выполнить поиск с помощью API пользовательского поиска Google для .NET? - PullRequest
6 голосов
/ 07 ноября 2011

Я только что обнаружил клиентскую библиотеку API Google для .NET , но из-за отсутствия документации мне сложно разобраться.

Я пытаюсь выполнить простой тест с помощью пользовательского поиска, и я просмотрел среди прочего следующее пространство имен:

Google.Apis.Customsearch.v1.Data.Query

Я пытался создать объект запроса и заполнить SearchTerms, но как я могу получить результаты этого запроса?

Ответы [ 5 ]

7 голосов
/ 21 июня 2012

Мой плохой, мой первый ответ не был использованием API Google.

В качестве предварительного условия вам необходимо получить клиентскую библиотеку Google API

(В частности, вам нужно будет ссылаться на Google.Apis.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);
}
4 голосов
/ 21 июня 2012

Прежде всего, вам нужно убедиться, что вы сгенерировали свой ключ 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 в словарь вместо строгой типизации.Это для удобства, так как я не хочу создавать класс, который реализует схему результатов поиска.При таком подходе полезной нагрузкой является вложенный набор пар ключ-значение.Больше всего вас интересует коллекция предметов, которая является результатом поиска (я полагаю, первая страница).Я только получаю доступ к свойствам "title" и "link", но их гораздо больше, чем вы можете увидеть в документации или проверить в отладчике.

2 голосов
/ 26 марта 2012

посмотрите на Справочник API , используя код из google-api-dotnet-client

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, как вы хотите

1 голос
/ 29 октября 2013

Клиентская библиотека Google.Apis.Customsearch.v1 http://www.nuget.org/packages/Google.Apis.Customsearch.v1/

0 голосов
/ 21 июня 2012

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

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