0

我正在编写一些代码来加载和解析来自网络的 HTML 文档。

我像这样使用JDOM:

SAXBuilder parser = new SAXBuilder();
Document document = (Document)parser.build("http://www.google.com");
Element rootNode = document.getRootElement();
/* and so on ...*/

它像那样工作得很好。但是,当我将 URL 更改为其他一些网站时,例如“http://www.kijiji.com”,parser.build(...)线路挂起。

知道它为什么挂起吗?我想知道这是否可能是因为 kijiji 知道我不是一个“真正的”网络浏览器——也许我必须欺骗我的 http 请求,所以它看起来像是来自 IE 或类似的东西?

任何想法都是有用的,谢谢!

4

1 回答 1

0

我认为这里可能会发生一些事情。第一个问题是您无法使用 JDOM 解析常规 HTML,HTML不是XML....

其次,当我通过 JDOM 运行 kijiji.com 时,我会立即收到 HTTP_400 响应

当我解析 google.com 时,我立即收到关于格式正确的 XML 错误。

如果你碰巧在某个时候解析 xhtml,你可能会在这里遇到这个问题:http: //www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic/

XHTML 有一个引用其他文档类型等的文档类型。从 w3c.org 加载每个需要 30 秒....

于 2012-05-09T19:53:51.633 回答