2016-08-02 16 views
-1
<article class="js_IntraTCBP IntraTCBP dr tr lh2 js_lblContent" id="js_lblContent"><p></p>text 
<p></p><p></p><a name="p1"></a><a name="p1"></a><a name="p1"></a><a name="p1"></a><a name="p1"></a><h1>text</h1><p></p><p></p>text 
<p></p>text<sup>1</sup> 
<p></p>text<sup>2</sup> 
<p></p>text<sup>3</sup> 
<p></p>text<sup>4</sup>text<p></p><hr class="Footer"><p></p><font class="Footer"><p></p>1-ddd 
<p></p>2-ccc 

<p></p>3-bbb 

<p></p>4-aaa 

</font></article> 

Parse-Seiten von Online-Buch und speichern den Inhalt der Seiten und deren Fußzeilen ohne Änderungen

Text

Text

Text

Text

Text

text

Text Text

1-ddd

2-ccc

3-bbb

4-aaa

012.351.

Ich möchte Seiten von Online-Buch analysieren und Inhalte von Seiten ohne Änderungen speichern.

wenn ich dies:

var pagecontent = document.DocumentNode.SelectNodes ("// Artikel [@ class = 'js_IntraTCBP IntraTCBP dr tr lh2 js_lblContent']/text()");

es bekomme ich alle 'Text's.

Wie bekomme ich alle Fußzeilen. zum Beispiel text1 ----> 1 = dddd. wie das, was ich auf der Buchseite sehe.

Antwort

0

Sie könnten reguläre Ausdrücke oder Regex versuchen, bei denen es sich um Zeichenfolgen und Symbole handelt, die eine Zeichenfolge oder ein Muster zum Suchen darstellen. System.Text.RegularExpressions.Regex class - MSDN.

Sie können Regex.Matches verwenden, um einige HTML-Elemente abzugleichen, aber Sie müssen jede Zeile durchlaufen. Das wird Ihnen den Einstieg:

// loop... 

var matches = Regex.Match(line, @"(\<[\w]*\>|[^\s]*([^<]*)\<\/[\w]*\>)"); 

den Tag mit Inhalt zu erhalten:

string tag = matches.Groups[1].Value; 

den Inhalt keine incuding dem Tag benutzen Sie:

string content = matches.Groups[2].Value; 

Demo. Es kann einige Elemente erkennen, aber nicht alle.

Hier sind einige Links, die es mit dem Lernen helfen können:

+0

Dank. htmlagilitypack könnte mein Problem nicht lösen? – error

+0

Ich verstehe Regex nicht gut. kann mir jemand mehr helfen? Bitte sagen Sie einen anderen Weg oder mehr erklären Sie das. – error