2

我一直在开发一个程序,它可以获取 www.bing.com 的内容并将其保存到一个文件中,但是在两种方法中,我尝试了一种使用套接字,另一种使用 HtmlUnit 时都没有显示 100% 正确的内容我打开文件。我知道还有其他选择,但我正在寻找一种可以保证正确获取 www.bing.com/ 内容的选择。因此,如果有人能指出实现这一目标的方法,我将不胜感激。

4

3 回答 3

4

您看到的差异可能是由于 Web 服务器根据用户代理字符串和其他请求标头为不同的浏览器提供不同的内容。

尝试将User-Agent您的套接字和 HtmlUnit 策略中的标题设置为您正在比较的策略,看看结果是否符合预期。此外,您可能必须完全复制目标浏览器发送的请求标头。

于 2012-01-09T20:57:05.013 回答
0

什么是“不正确”的返回什么?请记住,必应可能通过 JavaScript 生成一些内容;您的客户端将需要发出额外的请求来检索 JavaScript 文件、运行 JavaScript 等。

于 2012-01-09T21:09:09.100 回答
0

您可以使用 aURL.openConnection()创建URLConnection并调用URLConnection.getInputStream()。您可以读取 InputStream 内容并将其写入文件。

如果您需要覆盖用户代理,因为服务器正在使用它来提供不同的内容,您可以通过首先将http.agent系统属性设置为空字符串来实现。

/* Somewhere in your code before you make requests */
System.setProperty("http.agent", ""); 

-Dhttp.agent=在您的 java 命令行上使用

然后在获得 InputStream 之前将 User-Agent 设置为对连接有用的东西。

URLConnection conn = ... //Create your URL connection as described above.
String userAgent = ... //Some user-agent string here.
conn.setRequestProperty("User-Agent", userAgent);
于 2012-01-09T21:15:43.960 回答