javascript - 从谷歌搜索中提取数据

标签 javascript html google-search

我正在尝试从 Google 的新有趣事实功能中提取事实。如果你在谷歌中搜索有趣的事实,你会得到一个问题和一个答案。我想将这些事实存储在某个地方以备后用。

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

有没有一种方法可以模拟搜索以返回特殊结果,然后将数据存储在文件或其他地方?

编辑: 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?我似乎无法找到一种方法来完成我想做的事情。

最佳答案

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

这捕获了问题:

$('[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();

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

关于javascript - 从谷歌搜索中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611810/

相关文章:

javascript - Protractor/WebDriverJS 中的 by.js 定位器是什么?

javascript - 通过javascript从radiobuttonlist获取值?

css - 页面顶部和页面上第一个 div 之间的气隙

html - 你能在 CSS flex 中指定包装元素的顺序吗?

javascript - 为 3 <img> 的水平行创建透明覆盖

Google 搜索中出现的 AngularJS 应用程序问题

javascript - 如何保存谷歌搜索页面的文本?

seo - Google搜索从<h4>元素中获取标题

javascript - JQuery 文本编辑器粘贴而不格式化

javascript - Twitter Bootstrap vs jQuery UI?