java - 使用 htmlparser 解析网站时无法获取所有匹配的节点

标签 java html-parser

我正在使用 htmlparser 来解析网站,但我遇到了一个非常奇怪的问题。我正在尝试获取所有 <li>网页上的节点,我的代码如下:

String url = "http://s.1688.com/selloffer/offer_search.htm?keywords=%BD%A8%B2%C4&n=y&categoryId=";
Parser parser = new Parser(url);
parser.setEncoding("gb2312");

NodeList list = parser.extractAllNodesThatMatch(new TagNameFilter("li"));
// NodeList list = parser.parse(new CssSelectorNodeFilter("li[class=\"sm-offerShopwindow\"]"));
System.out.print(list.size() + "\n");
for (int i = 0; i < list.size(); i++) {
Node li = list.elementAt(i);
System.out.print("text:" + li.getText() + "\n");
}

但是list size的输出总是20,好像并没有遍历那个页面的所有节点。为什么?感谢您的任何建议。

最佳答案

即使是周围的顶级浏览器也不总是同意如何解析所有那些假装是 HTML 的奇怪东西,而且网络自 2006 年以来得到了很大的发展。所以如果这样一个老软件不能解析,我不会感到惊讶应对现代 HTML。

关于java - 使用 htmlparser 解析网站时无法获取所有匹配的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727329/

相关文章:

java - 如何从 jSTL 中的 foreach 循环中获取索引值

python - BeautifulSoup是否支持自定义html标签?

php - 使用 RegEx 或 HTML 解析器的 HTML 提取 API

java - 替换Java中IMG标签中的src属性

java - 使用 Spring JPA 未将 Rest api 响应数据保存在数据库中

java - 在 Mac OS 10.12.2 中加载 gnu.io.RXTXCommDriver 时,java.library.path 中没有抛出 rxtxSerial

java - 路径元素包含条件

java - 使用 gradle 6 执行动态 gradle 任务

HTMLParser 中的 Python 可重写函数

Java使用JSOUP从HTML源代码获取RSS链接