【问题标题】:How to parse a Google CSE results located on a site in Java?如何解析位于 Java 网站上的 Google CSE 结果?
【发布时间】:2016-03-14 18:02:44
【问题描述】:

我想解析一个自定义搜索元素JavaScript 函数。 这是这个函数的模板https://developers.google.com/custom-search/docs/element#overview

<!-- Put the following javascript before the closing  tag. -->
<script>
(function() {
  var cx = '123:456'; // Insert your own Custom Search engine ID here
  var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true;
  gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s);
})();
</script>

<!-- Place this tag where you want both of the search box and the search results to render -->
<gcse:search></gcse:search>

我想从这个站点 http://findmusicbylyrics.com/search.php?cx=partner-pub-1936238606905173%3A1893984547&cof=FORID%3A10&ie=UTF-8&q=Love&sa=Search+Lyrics 解析这个函数,它的 JavaScript 是:

<script>
(function() {
    var cx = 'partner-pub-1936238606905173:8242090140';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = 'http://www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
})();
</script>
<gcse:search></gcse:search>

现在我不知道从哪里开始。我已经使用java Jsoup 完成了一些HTML 解析,但这是我第一次碰到这个CSE &lt;script&gt; 标签来解析。 任何建议将不胜感激。

【问题讨论】:

标签: java parsing jsoup google-custom-search custom-element


【解决方案1】:

我已经使用 java Jsoup 完成了一些 HTML 解析,但这是我第一次碰到这个 CSE 标记来解析。

您将获取页面,然后找到脚本元素。完成后,您将在此元素上调用 html() 方法。

辅助功能

/**
 * 
 * Extract the Custom Search Element JavaScript of a site.
 * 
 * @param url
 *            The site url
 * @param cssQuery
 *            The query for finding the script element
 * @return the content of the between the tags &lt;script> and &lt;/script>
 * @throws IOException
 *             If the CSE Javscript is not found or an error occured during
 *             {@code url} fetching.
 * 
 */
public static String getCustomSearchElementJavascript(String url, String cssQuery) throws IOException {
    Document doc = Jsoup.connect(url).get();

    Element script = doc.select(cssQuery).first();

    if (script == null) {
        throw new IOException("Unable to find Custom Search Element JavaScript.");
    }

    return script.html();
}

示例代码

String url = "http://findmusicbylyrics.com/search.php?cx=partner-pub-1936238606905173%3A1893984547&cof=FORID%3A10&ie=UTF-8&q=Love&sa=Search+Lyrics+";

System.out.println( getCustomSearchElementJavascript(url, "div#content > script") );

输出

(function() {
    var cx = 'partner-pub-1936238606905173:8242090140';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = 'http://www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
})();

【讨论】:

  • 我支持你,但你不理解我的问题。获取JavaScrip 代码不是我的问题。我的问题是如何处理它以及如何处理。 JavaScript 代码不在此站点 findmusicbylyrics.com/… 上。我希望能够访问所有这些谷歌链接。谢谢。
  • @God 链接加载了 Javascript。 Jsoup 在这里帮不上忙。请改用 ui4jSelenium
猜你喜欢
  • 2017-03-09
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多