我刚刚发现了。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);
}
与流,您也可以读取webClient
或HttpRequest
,如您所愿
google . api . customsearch。v1客户端库http://www.nuget.org/packages/Google.Apis.Customsearch.v1/
你可以从API入门开始。