【发布时间】:2011-12-09 11:44:36
【问题描述】:
我在 jSoup 中使用这样的查询:
Document doc = Jsoup.connect(urlString).timeout(1000).post();
它适用于某些网站,但是:
它不适用于 Google 搜索查询(例如 urlString = "http://www.google.com/search?q=text") - 我不知道为什么,它有什么特别之处
结果文档包含诸如“应在您的浏览器中打开 JavaScript”之类的消息,我宁愿避免
可能还有更多的怪癖,但我还没有完全测试过...
我的问题:如果我们可以更接近地模仿网络浏览器,这些问题是否可以避免?最好的方法是什么?
通过 Web 浏览器获取页面和通过 Java(URLConnection 或 jSoup)获取页面之间可能会遇到哪些其他差异?
【问题讨论】:
-
Jsoup 是一个 HTML 解析器,不是一个 HTML 单元测试器,也不是一个无 GUI 的网络浏览器。您可能会发现HtmlUnit 更有趣。谷歌阻止机器人,检查他们的政策文件。而是使用他们的公共搜索 API。
-
谢谢。我是这个主题的新手,并且天真地认为我可以用一行(上面的)代码来实现这一点,但后来意识到它并不总是像我想要的那样工作:) 我想我会看看 HtmlUnit ...
-
关于谷歌,这只是我遇到的第一个根本不响应我的url请求的站点,但我担心有更多的站点无法通过这种方式访问。我仍然想知道为什么...
-
要么是为了防止带宽浪费,要么是因为已经有一个更紧凑的公共 Web 服务 API 可以访问您要查找的数据,或者是因为它需要启用 JavaScript 的客户端。
-
谢谢,但我很好奇服务器可以在我的上述 url 请求中检测到哪些参数,从而帮助他们决定根本不响应。据我所知,javascript 功能仅在客户端检测到,当收到 html 时,我认为谷歌搜索无论如何都可以在没有 JavaScript 的情况下工作。
标签: java url html-parsing jsoup