从谷歌搜索中提取数据
Extract Data from Google search
我正在尝试从Google新的有趣事实功能中提取事实。如果你在谷歌上搜索有趣的事实,你会得到一个问题和一个答案。我想把这些事实存储起来,以后再用。
我已经尝试使用javascript来提取有趣的事实是在div。然而,Google的div是动态的,每次你搜索的时候都会改变。如果我尝试使用API或只是尝试使用https://www.google.com/search?q=fun+facts执行搜索,我得到的是常规搜索结果,而不是谷歌的特殊有趣的事实结果。
是否有一种方法,我可以这样做模拟搜索返回特殊的结果,然后将数据存储在一个文件或某处?
编辑:谷歌似乎阻止了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();
…然后试试上面的选择器
相关文章:
- 如何使用另一个字符串作为模板从字符串中提取数据
- 如何使用angular js从2个表(在sql server中)中提取数据
- 从Angular 2中的observable中提取数据
- Mongoose查询在两个日期时间之间提取数据
- 可以't从xml文件中提取数据
- 从HTML代码中提取数据
- 使用JavaScript或AJAX从HTML表单中提取数据,然后将其传递给PHP
- 正在从JSON.stringify中提取数据
- Scrapy和Xpath从javascript代码中提取数据
- 如何从高股价图中提取数据
- 如何在javascript中使用localStorage从数组中存储和提取数据
- 如何从Promise中提取数据
- 为什么我的Backbone Collection没有提取数据
- 从jQuery变量中提取数据,增加's left,将剥离的数据放回变量中
- 如何使用应用程序脚本执行API从谷歌工作表中提取数据
- 使用ng repeat从两个不同的JSON文件中提取数据
- 创建新的javascript数组,从对象属性中提取数据
- 如何使用 jQuery 在没有类的情况下提取数据
- 使用javascript从JSON中提取数据
- React组件从Flux存储中呈现数据,但从Mongo数据库中提取数据时不呈现