2011-11-07 43 views
6

Tôi vừa phát hiện ra Google APIs Client Library for .NET, nhưng vì thiếu tài liệu, tôi có một thời gian khó khăn để tìm ra.Tôi làm cách nào để thực hiện tìm kiếm với API tìm kiếm tùy chỉnh của Google cho .NET?

tôi đang cố gắng để làm một thử nghiệm đơn giản, bằng cách thực hiện một tìm kiếm tùy chỉnh, và tôi đã xem xét số khác, tại không gian tên sau đây:

Google.Apis.Customsearch.v1.Data.Query 

Tôi đã cố gắng để tạo ra một đối tượng truy vấn và điền searchterms , nhưng làm cách nào tôi có thể tìm nạp kết quả từ truy vấn đó?

Trả lời

3

nhìn vào API Reference sử dụng mã từ 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); 

hoặc

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

với dòng bạn cũng có thể đọc tắt của webClient hoặc HttpRequest, như bạn muốn

+0

Liên kết "Tham chiếu API" của bạn đã chết ... – billy

4

Trước hết , bạn cần đảm bảo rằng bạn đã tạo Khóa API và CX. Tôi giả sử bạn đã làm điều đó rồi, nếu không bạn có thể làm điều đó ở những địa điểm sau:

  • API Key (bạn cần phải tạo một khóa trình duyệt mới)
  • CX (bạn cần để tạo ra một công cụ tìm kiếm tùy chỉnh)

một khi bạn có những, đây là một ứng dụng giao diện điều khiển đơn giản mà thực hiện việc tìm kiếm và bãi tất cả các chức danh/liên kết:

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(); 
    } 
} 

Như bạn có thể thấy, tôi đang sử dụng một deserialization JSON chung vào một từ điển thay vì được gõ mạnh mẽ. Điều này là vì mục đích thuận tiện, vì tôi không muốn tạo một lớp thực hiện lược đồ kết quả tìm kiếm. Với phương pháp này, tải trọng là tập hợp các cặp khóa-giá trị lồng nhau. Điều bạn quan tâm nhất là thu thập các mục, là kết quả tìm kiếm (trang đầu tiên, tôi đoán). Tôi chỉ truy cập vào các thuộc tính "title" và "link", nhưng có nhiều hơn bạn có thể nhìn thấy từ tài liệu hoặc kiểm tra trong trình gỡ rối.

+1

Tôi đang tìm cách sử dụng [Thư viện ứng dụng khách API của Google cho .NET] (http://code.google.com/p/google-api-dotnet- client/wiki/APIs # CustomSearch_API) đúng cách. Dù sao đi nữa .. điều này cũng có ích. – Darshana

6

Câu trả lời đầu tiên của tôi không được sử dụng API Google.

Là một điều kiện tiên quyết, bạn cần phải nhận được Google API client library

(Đặc biệt, bạn sẽ cần phải tham khảo Google.Apis.dll trong dự án của bạn). Bây giờ, giả sử bạn đã có khóa API của bạn và CX, đây là cùng một mã mà được kết quả, nhưng bây giờ sử dụng các API thực tế:

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); 
} 
Các vấn đề liên quan