我如何做一个搜索与谷歌自定义搜索API.net



我刚刚发现了。net的Google api客户端库,但由于缺乏文档,我很难弄清楚它。

我正在尝试做一个简单的测试,通过做一个自定义搜索,我已经在其他中查看了以下名称空间:

Google.Apis.Customsearch.v1.Data.Query

我尝试创建一个查询对象并填写SearchTerms,但是我如何从该查询中获取结果?

我的错,我的第一个答案是不使用Google api。

作为先决条件,您需要获得Google API客户端库

(特别是,您需要在项目中引用google . api .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 Key和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"one_answers"link"属性,但还有很多比您可以从文档中看到或在调试器中检查的更多。

查看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);
}

与流,您也可以读取webClientHttpRequest,如您所愿

google . api . customsearch。v1客户端库http://www.nuget.org/packages/Google.Apis.Customsearch.v1/

你可以从API入门开始。

相关内容

  • 没有找到相关文章

最新更新