从Google搜索中提取数据

时间:2015-09-16 14:42:08

标签: javascript html google-search

我试图从谷歌新的有趣事实特征中提取事实。如果你在谷歌搜索有趣的事实,你会得到一个问题和答案。我想将一堆这些事实存储在以后使用的地方。

我尝试使用javascript来提取有趣事实所在的div。但是,Google的div是动态的,每次搜索时都会更改。如果我尝试使用API​​或尝试使用https://www.google.com/search?q=fun+facts执行搜索,我会获得常规搜索结果,但不会获得Google特别有趣的事实结果。

我有没有办法模仿搜索返回特殊结果,然后将数据存储在文件或某个地方?

编辑: 谷歌似乎阻止了iframe

<html>
<div> 
<iframe src="https://www.google.com/search?q=fun+facts"></iframe>
</div>
</html>

现在开始使用纯javascript和window.open

<script>
   var win = window.open("https://www.google.com/search?q=fun+facts");
   //wait for window to load before trying to access it
</script>

编辑2: 我似乎无法解决跨域问题。有没有办法打开一个窗口并从中提取不在同一个域的html?我似乎无法找到一种方法来完成我想要做的事情。

1 个答案:

答案 0 :(得分:0)

您可以使用选择器来完成。

这抓住了这个问题:

$('[data-md=137] > div > div:nth-child(1)')

这个人抓住了答案:

$('[data-md=137] > div > div:nth-child(2) > :nth-child(2)')

这个人抓住了消息来源:

('[data-md=137] > div > div:nth-child(3) p:last-child')

如果你想测试它们,请转到 https://www.google.com/search?q=fun+facts并拉出控制台(F12),首先在控制台中加载jQuery:

var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
jQuery.noConflict();

...然后尝试上面的选择器。