2017-05-12 1 views
0

Ich habe meine HTML-Quelle, die ich von einer Website mit Jsoup.connect() Methode bekomme. Es folgt ein Stück Code von dieser HTML-Quelle (Link: https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community)Jsoup Entfernen Sie alles vor einem H2-Tag

..... 
<p>When you set dependencies in your VSIX manifest, you must specify Component IDs 
    only. Use the tables on this page to determine our minimum component dependencies. 
    In some scenarios, this might mean that you specify only one component from a workload. 
    In other scenarios, it might mean that you specify multiple components from a single 
    workload or multiple components from multiple workloads. For more information, see 
    the 
<a href="../extensibility/how-to-migrate-extensibility-projects-to-visual-studio-2017" data-linktype="relative-path">How to: Migrate Extensibility Projects to Visual Studio 2017</a> page.</p> 
..... 
<h2 id="visual-studio-core-editor-included-with-visual-studio-community-2017">Visual Studio core editor (included with Visual Studio Community 2017)</h2> 
..... 
<h2 id="see-also">See also</h2> 
..... 

Was will ich jsoup zu tun ist, dass, würde ich vor <h2 id="visual-studio-core-editor-included-with-visual-studio-community-2017">Visual Studio core editor (included with Visual Studio Community 2017)</h2> jedes einzelne Html Stück zu entfernen, wie

und alles nach (einschließlich) <h2 id="see-also">See also</h2>

ich habe eine Lösung wie diese, aber diese ziemlich viel hat nicht funktioniert für mich:

 try { 
      document = Jsoup.connect(Constants.URL).get(); 
     } 
     catch (IOException iex) { 
      iex.printStackTrace(); 
     } 
     document = Parser.parse(document.toString().replaceAll(".*?<a href=\"workload-and-component-ids\" data-linktype=\"relative-path\">Visual Studio 2017 Workload and Component IDs</a> page.</p>", "") , Constants.URL); 
     document = Parser.parse(document.toString().replaceAll("<h2 id=\"see-also\">See also</h2>?.*", "") , Constants.URL); 
     return null; 

Jede Hilfe wäre willkommen.

+0

Können Sie mehr dazu erklären? Wenn Sie entfernen möchten, warum wählen Sie nicht bestimmte Klassen oder Tags aus oder entfernen sie? oder Sie können nur bestimmte Tags auswählen, die Sie möchten. – soorapadman

+0

Die HTML-Seite, die ich erhalte, hat eine komplizierte Struktur. Es hat viele Tags zwischen anderen Tags geknirscht. Sie können selbst überprüfen. Die Seite src lautet https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community. Was ich versuche zu tun, ist in der HTML-Quelle zwischen "Visual Studio Core Editor (enthalten in Visual Studio Community 2017)" [1] und "Unaffilated Komponenten" [2] zu kratzen. Aber ich bin nicht in der Lage, etwas vor [1] und alles nach der Tabelle von [2] zu ersetzen. Bitte überprüfen Sie die Website auch – Sparker0i

+0

Darüber hinaus wollte ich dies mit JSOUP tun, und ich bin HTML von einer Website analysieren, so ist es keine konstante Datei (wie Sie sagen) – Sparker0i

Antwort

1

Einfacher Weg könnte sein: Holen Sie sich das gesamte HTML der Seite als String, machen Sie einen Teilstring des Teils, den Sie brauchen, und parsen Sie diesen Teilstring noch einmal mit jsoup.

 Document doc = Jsoup.connect("https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community").get(); 
     String html = doc.html().substring(doc.html().indexOf("visual-studio-core-editor-included-with-visual-studio-community-2017")-8, 
              doc.html().indexOf("unaffiliated-components")-8); 
     Document doc2 = Jsoup.parse(html); 
     System.out.println(doc2); 
+0

Danke, Sir. Mit ein wenig Änderung an Ihrem Code konnte ich bekommen, was ich wollte. Du hast mir wirklich geholfen, ein großes Problem zu lösen – Sparker0i

1

Ich werde nur eine kleine Änderung an @eritreans Antwort oben vornehmen. Es gibt kleine Änderungen, die für mich gemacht werden müssen, um die erforderliche Ausgabe zu erhalten.

document = Jsoup.parse(document.html().substring(document.html().indexOf("visual-studio-core-editor-included-with-visual-studio-community-2017")-26, 
       document.html().indexOf("see-also")-8)); 
System.out.println(document); 
Verwandte Themen