2013-04-06 87 views
6

通过使用Google搜索引擎通过网络搜索是一个事实上互联网用户的标准。 Google提供了一个基本的advanced form准备查询字符串到其搜索引擎。假设对不使用Web表单感兴趣,可以简单地使用在搜索条件下构建的查询字符串对特定URL执行HTTP获取请求。如何构建复杂的Google Web搜索查询?

例如我可以通过在这样做的HTTP请求搜索与单词“你好”结果:

http://www.google.com/search?q=hello 

我可以添加其他词,例如“世界”,具体如下:

http://www.google.com/search?q=hello+world 

你知道,搜索可以更 “复杂” 的通过指定喜欢漂亮的参数:

  • 或条件(S)
  • 精确短语(多个)
  • 上特定域
  • 避免特定的字(一个或多个)
  • 搜索机智搜索^ h按地理区域特定的语言
  • 限制搜索
  • 搜索文档类型

如何修改查询字符串来解释上面的搜索参数?

+0

我希望大家都知道,没有使用Web表单和刮结果网页违反了谷歌使用条款。 – Filburt 2013-04-06 15:01:18

+0

@Filburt谢谢!你记住了我!但是,我的问题涉及如何制作一些东西,不知道这是否违反了Google的条款!我正在测试一个原型。谷歌已经能够为我辩护:) – JeanValjean 2013-04-06 15:06:18

回答

1

虽然这本书的标题看起来很危险,但无论如何它会回答你所有的问题,如果你不滥用它。

这本书的名字是“危险的谷歌 - 寻找秘密”由MichałPiotrowski通过一些hackin9杂志。

愿望雅运气

+0

有趣的书 – JeanValjean 2013-04-06 18:29:11

3

我仔细Pratik ChowdhuryRobbie Vercammen检查答案。他们提供了一个链接到Web文档的链接,该链接报告了Google搜索表单中可能使用的文本过滤列表。尽管这很有趣,但他们没有提供这个问题的答案。因此,我研究了很多问题,并找到了以下解决方案。

假设您需要对Google搜索进行HTTP调用(例如,通过CRON运行的PHP类,每月一次),以检索特定字符串查询的搜索结果,例如,在您的网站(即mywebsite。)中的所有网页都带有一些字词(即“hello”和“world”)。COM),那么你可以做一个HTTP GET调用到以下地址:

http://www.google.com/search?q=hello+world+site:mywebsite.com 

q参数可以包含整个搜索查询,谷歌却定义的参数假证明名单。

请注意,AND运算符可以用as_q参数代替。而一个更紧凑的表示采用as_oq

q=hello+OR+world 

要获得页面的结果与之间的“你好”和“世界”(即和OR)之一,必须改变查询‘q’参数来作为参数:

as_oq=hello+world 

如果寻找确切的短语 “世界你好”,该q参数为:

q="hello+world" 

同时,再次,另一个紧凑表示使用as_epq参数:

as_epq=hello+world 

如果一个查找所有不包含单词“你好”和“世界”的成果,q参数为:

q=-hello+-world 

同时,再次,另一紧凑的表示使用as_eq参数:

as_eq=hello+world 

当然,as_q,as_oqas_epq,as_eq等可以通过像通常一样组合在唯一的搜索查询中(即,通过使用&字符)。因此,例如我可以搜索两个词“你好”和“字”加“规划”之间的一个“码”为遵循这里:

q=hello+world&as_oq=programming+code 

人们可以搜索特定的域(再次,MYDOMAIN .COM)如下:

as_sitesearch=mydomain.com 

但是,如果要排除特定的域(例如,因为它是一个垃圾邮件源),您必须对复发的标准符号。例如: -

q=hello+-site:mydomain.com 

回报所有不在现场mydomain.com的用字的页面“你好”。

要获得特定的文件类型,例如一个pdf,你可以使用as_filetype

as_filetype=pdf 

更复杂的搜索参数可以使用,如Google support docs提供。例如,要获得带有单词同义词的结果,只需在单词前面使用~算子,例如,

q=~hello 

此外,如果你想使用通配符,例如让所有以“你好”开始,以“世界”结束确切的短语,你应该使用*操作:

q="hello+*+world" 

这可能会返回类似:“你好世界”和“你好甜世界”。

你也可以搜索特定的词里面的页面标题或使用以下关键字的页面URL(读here有详细介绍):

  • INTITLE
  • allintitle
  • inurl这样
  • allinurl

例如,下面返回所有页面sa这两个词“你好”和“世界”是在URL:

q=allinurl:hello+world 

对于谷歌GUI页面(不结果的一个),必须插入到查询字符串的语言字符串的语言(例如英语的en,法语的fr,意大利语的it等)到hl参数。换句话说,如果一个搜索与英文版本的谷歌,查询字符串变成如下:

http://www.google.com/search?hl=en&q=hello+world+site:mywebsite.com 

要选择一个特定的语言,例如意大利,用lr查询参数:

lr=lang_it 

人们也可以通过使用cr参数公布在一个特定的地理区域选择页面。例如,要查找在意大利出版的所有页面:

cr=countryIT 
2

Advangle是一个不错的免费服务,您可以构建网络搜索查询可视化,并得到查询字符串(或URL,以谷歌和Bing)作为结果。

+0

对不起,但我试过了(它仍然在测试版),它不工作得很好!例如,它似乎提供了对多文件类型搜索的支持,但Google中的查询返回'q =“help”filetype:pdf filetype:eps',这不会产生任何结果,而正确的查询将是'q = help +文件类型:PDF + OR +文件类型:eps'。 – JeanValjean 2013-04-11 07:48:25

+0

这不是一个错误。简单地说,所有条件都由AND默认连接。所以你要求找到文件类型EPS和PDF的所有文件,这显然是不可能的。 如果您需要通过OR连接它们 - 将根条件组中的链接类型从“all”更改为“any”。 – DevGuy 2013-04-30 11:52:05

2

要创建复杂的and/or查询,您可以使用()OR

例如,如果我们要搜索

("tschakk buff" AND "boom bang") OR ("zata tong" AND "zong klirr") 

查询应该是这样的:

https://www.google.com/search?q=("tschakk%20buff"%20"boom%20bang")%20OR%20("zata%20tong"%20"zong%20klirr")