就像我们继续谷歌并通过关键字进行谷歌搜索一样。
我们可以进行这样的查询吗?像
http://www.google.com/search?q=cupertino+american+food
执行查询后,我们应该获取每个链接的所有搜索结果详细信息以存储在数据库中。
正如某些网站提供REST api访问权限一样,用户可以在查询中获得大量结果。
我还没有看到谷歌这样的事情。
答案 0 :(得分:3)
无论您将使用何种技术,Google都会阻止您的IP进行类似机器人的搜索查询。并且不要尝试使用TOR代理,因为所有的IP都会被禁止或使用验证码进行挑战。
您必须使用Google API才能符合Google的T& C.结果也好得多了
https://developers.google.com/custom-search/json-api/v1/overview
如果您拥有自定义搜索引擎并且每天限制为100个查询,则API是免费的。如果您需要更多,则每1000次查询将收取5美元的费用
答案 1 :(得分:2)
@mahtOrz:好的,这里有一些粗略的代码可以将Json送回控制台。请注意,api基本搜索字符串与您拥有的字符串不同,即www.google.com/search?q=cupertino+american+food。您需要使用下面的Google API基本网址。你有APIkey和CxKey吗?如果没有,我也可以引导您完成这些步骤。
using System;
using System.Text;
using System.Net;
using System.IO;
using System.Web;
namespace GoogleSearchTest1
{
class Program
{
//Google keys
const string APIKey = "{your key here}";
const string CSEKey = "{your key here}";
//base url for the search query
const string GoogleBaseURL = "https://www.googleapis.com/customsearch/v1?"; //per Google documentation
public static void Main(string[] args)
{
string myQuery = "cupertino american food"; //put what you're searching for here
string result = submitSearch(myQuery);
Console.WriteLine(result);
string dummy = Console.ReadLine();
}
public static string submitSearch(string myQuery)
{
try
{
string final = string.Format(GoogleBaseURL+"key={0}&cx={1}&q={2}",
HttpUtility.UrlEncode(APIKey),
HttpUtility.UrlEncode(CSEKey),
HttpUtility.UrlEncode(myQuery));
final += "&alt=json";
WebRequest myRequest = WebRequest.Create(final);
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
Stream myStream = myResponse.GetResponseStream();
StreamReader myReader = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
string result = myReader.ReadToEnd();
myStream.Close();
myReader.Close();
myResponse.Close();
return result;
}
catch (Exception e)
{
//debug statement
}
return null;
}
}
}
答案 2 :(得分:1)
使用 cUrl 请求,与输出缓冲相结合
答案 3 :(得分:1)
@ user123:如果您可以使用C#,我可以提供一些提示吗? API步骤非常广泛。让我知道!