Używam parsera HTML do opracowania aplikacji. Poniższy kod nie jest w stanie uzyskać całego zestawu tagów na stronie. Istnieje kilka znaczników, które są pomijane, a ich atrybuty i treść są pomijane. proszę mi pomóc wyjaśnić, dlaczego tak się dzieje ..... lub zaproponować mi inny sposób ....Jak korzystać z parsera HTML, aby uzyskać pełne informacje o wszystkich znacznikach na stronie HTML?
URL url = new URL("...");
PrintWriter pw=new PrintWriter(new FileWriter("HTMLElements.txt"));
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument)htmlKit.createDefaultDocument();
HTMLEditorKit.Parser parser = new ParserDelegator();
HTMLEditorKit.ParserCallback callback = htmlDoc.getReader(0);
parser.parse(br, callback, true);
ElementIterator iterator = new ElementIterator(htmlDoc);
Element element;
while ((element = iterator.next()) != null)
{
AttributeSet attributes = element.getAttributes();
Enumeration e=attributes.getAttributeNames();
pw.println("Element Name :"+element.getName());
while(e.hasMoreElements())
{
Object key=e.nextElement();
Object val=attributes.getAttribute(key);
int startOffset = element.getStartOffset();
int endOffset = element.getEndOffset();
int length = endOffset - startOffset;
String text=htmlDoc.getText(startOffset, length);
pw.println("Key :"+key.toString()+" Value :"+val.toString()+"\r\n"+"Text :"+text+"\r\n");
}
}
}
Problem jest zbyt ogólny. Zapoznaj się z przykładową witryną (może to być http: // google.com?) I powiedz szczegółowo, czego dokładnie brakuje. – BalusC
w rzeczywistości chcę wyodrębnić informacje takie jak nazwa produktu, cena itp. Wszystkich produktów wymienionych w witrynie zakupów online, takich jak amazon.com Jak powinienem to zrobić ??? –