Det finns många situationer där du behöver för att extrahera textinnehåll från en HTML- sida . Detta är vanligtvis en fråga om att ta bort HTML-taggar från HTML-dokumentet , tar bort alla andra data som inte visas på sidan , och ersätta vissa formateringstaggar med oformaterad text motsvarigheter . I C # Du kan uppnå detta genom att manipulera en sträng som innehåller HTML , tillämpa reguljära uttryck att bringa de relevanta delarna
Du behöver : .
En version av Visual Studio som innehåller språket C # .
1 .
lägga till en metod till C # program för att konvertera HTML . Skapa en metod som tar in en sträng och returnerar en sträng som följer :
public String ConvertHTML ( sträng htmlSource )
{
returnera null ; }
2 .
Applicera ett reguljärt uttryck för att ta bort alla HTML-taggar . Den enklaste konverteringen är helt enkelt att hitta och ta bort alla HTML-taggar i dokumentet . Du kan använda ett reguljärt uttryck som identifierar mönster av tecken i strängar till text , att hitta alla HTML-taggar och ta bort dem . Detta ger dig bara med vanlig text . Det vanliga uttrycket för matchning HTML -taggar är : .
<[^>]*>
3
ändrar koden din metod att tillämpa reguljära uttryck
sträng convertedText .
//ta bort alla HTML-taggar
convertedText=System. Text. RegularExpressions. Regex. Replace ( htmlSource ,
"<[^>]*>", string. Empty ,
System. Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
återvända convertedText ;
4 .
Ta bort sidhuvud innehåll . Ett problem med den enkla metoden ovan är att den lämnar uppgifter i den konverterade text som inte skulle visas på HTML -sidan , till exempel vad som finns i
taggar . Modifiera koden för att ta bort sidhuvudet innehållet innan du tar bort andra taggar
sträng convertedText .
//ta bort header
convertedText=System. Text. RegularExpressions. Regex . Ersätt ( htmlSource ,
@ " <() * huvudet ([^>])*>","
" ,
System . Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
convertedText=System. Text. RegularExpressions. Regex. Replace ( convertedText ,
"(<( )*(/)( ) * huvud () * > ;)"," " ,
System. Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
convertedText=System. Text. RegularExpressions. Regex. Replace ( convertedText ,
" (
). *( ) " , string. Empty ,
System. Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
//ta bort alla andra HTML taggar
convertedText=System . Text. RegularExpressions. Regex. Replace ( convertedText ,
"<[^>]*>", string. Empty ,
System. Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
återvända convertedText ;
Koden nu tar bort sidhuvudet attribut , tar sedan bort huvudet med alla uppgifter den innehåller innan du tar bort andra HTML-taggar . En liknande teknik kan tillämpas för att ta bort andra oönskade data , t. ex. den som finns i stil och skripttaggarna utanför
taggarna .
5 .
Ersätt formateringstaggar med motsvarande klartext tecken . Medan HTML låter omfattande formatering , inklusive skapandet av tabeller och placering av textblock, kan enkla radbrytningar ersätta mycket av formatering i HTML . Lägg till följande kod mellan blocket som tar bort sidhuvud innehåll och blocket som tar bort alla andra HTML- taggar :
//byt div , TR , li , p och taggar br med radbrytning
convertedText=System. Text. RegularExpressions. Regex. Replace ( convertedText ,
@ " <() * div ([^>])*>"," \ r \ r " , System . Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
convertedText=System. Text. RegularExpressions. Regex. Replace ( convertedText ,
@ " <() * tr ([^>])*>" , "\ r \ r " ,
System. Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
convertedText=System. Text. RegularExpressions. Regex. Replace ( convertedText ,
@ " <( ) * p ([^>])*>"," \ r \ r " ,
System. Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
convertedText=System. Text. RegularExpressions. Regex . Ersätt ( convertedText ,
@ " <() * BR ( )*>"," \ r " ,
System . Text. RegularExpressions. RegexOptions. IgnoreCase ) ,
convertedText=System. Text. RegularExpressions. Regex. Replace ( convertedText ,
@ " <() * Li ( )*>"," \ r " ,
System. Text. RegularExpressions. RegexOptions. IgnoreCase ) .
6
Kör metoden och granska resultaten . Fortsätt att ändra den tills den ger det resultat du vill .
tips och varningar
Denna kod ändras från ett mycket mer omfattande metod finns på länken i Referens 1 nedan . Det finns ett antal andra tekniker , inklusive några metoder som finns i externa bibliotek och eller via gränssnitt i externa program . Ett antal av dessa antecknas i avsnittet Resurser . Ett annat alternativ är att använda en tredje part bibliotek som skapats för att utföra liknande uppgifter. Den fria , öppen källkod HTMLAgility pack (se Resurser ) innehåller en metod som kallas ConvertToPlainText som konverterar HTML till vanlig text .