我想从谷歌搜索中提取数据
https://www.google.com.ph/?gfe_rd=cr&ei=JQ7bVZjRDOSL8QeqibewAwgws_rd=ssl#q=scarlett+johansson+age
我想通过获取这个特定的div标签来获得艺术家的年龄
<div class="_eF">30 years (November 22, 1984)</div>
到目前为止这是我的代码
Document doc = Jsoup.connect("https://www.google.com.ph/?gfe_rd=cr&ei=eKfaVbWXBomM8QexmIOACw&gws_rd=ssl#q=scarlett+johansson+age").get();
Elements age = doc.getElementsByClass("#_eF");
String urlSource = age.html();
但我得到的只是javascript代码而不是实际的html源
答案 0 :(得分:1)
你做错了。通过执行doc.getElementsByClass
,您将获得多个结果(或者Jsoup处理这些结果)。
您想要做的是:
Document doc = Jsoup.connect("https://www.google.com.ph/?gfe_rd=cr&ei=eKfaVbWXBomM8QexmIOACw&gws_rd=ssl#q=scarlett+johansson+age").get();
Elements age = doc.select("div._eF");
String urlSource = age.html();
答案 1 :(得分:0)
您可以切换技术。您可以使用Selenium webdriver代替Jsoup,它基本上可以远程控制Web浏览器。这应该完全能够从AJAX调用中呈现HTML。
或者,您可以了解Google实际返回的内容以及调用的API网址。然后,您可以直接解析响应。可能他们使用JSON,这很容易解析。有很多图书馆可供处理。 (JSON-Simple,GSon,Jackson仅举几例)