我刚刚发现了Google APIs Client Library for .NET,但由于缺乏文档,我很难弄明白。
我正在尝试进行一项简单的测试,通过自定义搜索,我在以下命名空间中查看了其他内容:
Google.Apis.Customsearch.v1.Data.Query
我尝试创建查询对象并填写SearchTerms,但如何从该查询中获取结果?
答案 0 :(得分:7)
我的不好,我的第一个答案是没有使用Google API。
作为先决条件,您需要获得Google API client library
(特别是,您需要在项目中引用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);
}
答案 1 :(得分:4)
首先,您需要确保已生成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反序列化用于字典而不是强类型。这是为了方便起见,因为我不想创建实现搜索结果模式的类。使用此方法,有效负载是嵌套的键值对集。你最感兴趣的是项目集合,这是搜索结果(第一页,我推测)。我只访问“标题”和“链接”属性,但是除了文档或在调试器中检查之外,还有很多其他内容。
答案 2 :(得分:2)
看看API Reference 使用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
读取
答案 3 :(得分:1)
Google.Apis.Customsearch.v1客户端库 http://www.nuget.org/packages/Google.Apis.Customsearch.v1/
答案 4 :(得分:0)
您可以从Getting Started with the API开始。