如何构建复杂的Google Web搜索查询?

Jea*_*ean 10 search-engine http google-search

使用Google搜索引擎通过网络搜索是互联网用户的事实标准.Google提供基本高级表单,以便为其搜索引擎准备查询字符串.假设对不使用Web表单感兴趣,可以使用在搜索条件下构造的查询字符串简单地对特定URL执行HTTP get请求.

例如,我可以通过在以下位置执行HTTP请求来搜索带有" hello " 字样的结果:

http://www.google.com/search?q=hello
Run Code Online (Sandbox Code Playgroud)

我可以添加另一个词,例如" 世界 ",如下:

http://www.google.com/search?q=hello+world
Run Code Online (Sandbox Code Playgroud)

你知道,通过指定好的参数,搜索可能会更"复杂",例如:

  • 或条件
  • 确切的短语
  • 搜索特定域名
  • 避免使用特定字词
  • 使用特定语言搜索
  • 限制按地理区域搜索
  • 搜索文档类型
  • 等等

如何修改查询字符串以考虑上述搜索参数?

Jea*_*ean 5

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

假设您需要对Google 搜索进行一次异常的HTTP 调用(例如,通过每月一次通过 CRON 运行的 PHP 类)以检索特定字符串查询的搜索结果,例如所有包含某些词的页面(即“ hello" 和 "world") 在您的网站(即mywebsite.com)中,然后您可以对以下地址进行 HTTP get 调用:

http://www.google.com/search?q=hello+world+site:mywebsite.com
Run Code Online (Sandbox Code Playgroud)

q参数可以包含整个搜索查询,但 Google 定义了一个参数的虚拟证明列表。

请注意,AND运算符可以由as_q参数表示。

要获得介于“hello”和“world”(即和 OR)之间的页面结果,必须将查询“q”参数更改为:

q=hello+OR+world
Run Code Online (Sandbox Code Playgroud)

而更紧凑的表示使用as_oq参数:

as_oq=hello+world
Run Code Online (Sandbox Code Playgroud)

如果查找确切的短语“hello world”,则q参数为:

q="hello+world"
Run Code Online (Sandbox Code Playgroud)

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

as_epq=hello+world
Run Code Online (Sandbox Code Playgroud)

如果查找所有不包含单词“hello”和“world”的结果,则q参数为:

q=-hello+-world
Run Code Online (Sandbox Code Playgroud)

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

as_eq=hello+world
Run Code Online (Sandbox Code Playgroud)

当然,as_q, as_oq, as_epq,as_eq等可以像往常一样组合在唯一的搜索查询中(即通过使用&字符)。因此,例如,我可以搜索“hello”和“word”这两个词以及“programming”和“code”之间的一个,如下所示:

q=hello+world&as_oq=programming+code
Run Code Online (Sandbox Code Playgroud)

可以按如下方式搜索特定域(同样是mydomain.com):

as_sitesearch=mydomain.com
Run Code Online (Sandbox Code Playgroud)

但是,如果您想排除特定域(例如,因为它是垃圾邮件源),您必须重复使用标准符号。例如:

q=hello+-site:mydomain.com
Run Code Online (Sandbox Code Playgroud)

返回所有不在站点mydomain.com 中的带有“hello”字样的页面。

要获取特定文件类型,例如 pdf,您可以使用as_filetype

as_filetype=pdf
Run Code Online (Sandbox Code Playgroud)

可以使用更复杂的搜索参数,如Google 支持文档中提供的那样。例如,要获得一个词的同义词结果,只需~在词前使用运算符,例如

q=~hello
Run Code Online (Sandbox Code Playgroud)

此外,如果您想使用通配符,例如获取所有以“hello”开头并以“world”结尾的确切短语,您应该使用*运算符:

q="hello+*+world"
Run Code Online (Sandbox Code Playgroud)

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

还可以使用以下关键字在页面标题或页面 url 中搜索特定词(阅读此处了解更多详细信息):

  • 标题
  • 标题
  • 网址
  • 网址

例如,以下返回所有页面,“hello”和“world”这两个词都在 url 中:

q=allinurl:hello+world
Run Code Online (Sandbox Code Playgroud)

对于 Google GUI 页面的语言(不是结果之一),必须将语言字符串(例如en,英语、fr法语、it意大利语等)插入查询字符串中的hl参数。换句话说,如果用英文版的谷歌搜索,查询字符串如下:

http://www.google.com/search?hl=en&q=hello+world+site:mywebsite.com
Run Code Online (Sandbox Code Playgroud)

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

lr=lang_it
Run Code Online (Sandbox Code Playgroud)

还可以使用该cr参数选择在特定地理区域发布的页面。例如,要查找在意大利发布的所有页面:

cr=countryIT
Run Code Online (Sandbox Code Playgroud)


pra*_*kpc 1

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

\n\n

这本书的名字是《Dangerous Google \xe2\x80\x93 Searching for Secrets》,作者:Micha\xc5\x82 Piotrowski,某 hackin9 杂志出品。

\n\n

祝你好运

\n