Как я могу добавить все элементы в HTML с помощью Jsoup? - PullRequest
0 голосов
/ 30 марта 2012
File input = new File("1727209867.htm");
Document doc = Jsoup.parse(input, "UTF-8","http://www.facebook.com/people/Alison-Vella/1727209867");

Я пытаюсь проанализировать этот HTML-файл, который сохраняется и используется в локальной системе. Но парсинг не разбирает все html. Так что я не могу получить информацию, которая мне нужна. С этим кодом анализ может работать только на 6 тыс. Символов, но на самом деле HTML-файл содержит 60 тыс. Символов.

1 Ответ

0 голосов
/ 06 февраля 2013

Это невозможно в jsoup, но с обходом :

final File input = new File("example.html");
final int maxLength = 6000; // Limit of char's to read

InputStream is = new FileInputStream(input); // Open file for reading
StringBuilder sb = new StringBuilder(maxLength); // Init the "buffer" with the size required
int count = 0; // Count of chars readen
int c; // Char for reading

while( ( c = is.read() ) != -1 && count < maxLength ) // Read a single char until limit is reached
{
    sb.append((char) c); // Save the char into the buffer
    count++; // increment the chars readen
}


Document doc = Jsoup.parse(sb.toString()); // Parse the Html from buffer

Разъяснения:

  1. Считайте файл char-by-char в буфер, пока не достигнете предела
  2. Разбор текста из буфера и обработка его с помощью jsoup

Проблема: Это не позаботится о закрытии тегов и т. Д. - оно точно прекратит чтение, если вы находитесь на пределе.

(возможно) Решения:

  • игнорируйте это и остановитесь точно там, где вы находитесь, проанализируйте это и " fix " или отбросьте зависший html
  • если вы находитесь в конце, читайте, пока не дойдете до следующего закрывающего тега или > char
  • если вы в конце, читайте, пока не дойдете до следующего блочного тега
  • если вы в конце, читайте до определенного тега или комментария
...