我想從C#中的網頁中獲取文本。
我不想獲取HTML,我想要關閉網頁上的真實文本。就像我輸入「<b>cake</b>
」一樣,我想要蛋糕,而不是標籤。如何從網頁中刪除文字?
回答
使用HTML Agility Pack庫。
這對於解析HTML非常精細庫,爲您的要求使用此代碼:
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("Yor Path(local,web)");
var result=doc.DocumentNode.SelectNodes("//body//text()");//return HtmlCollectionNode
foreach(var node in result)
{
string AchivedText=node.InnerText;//Your desire text
}
這是一個非常好的答案!謝謝。 –
您可以去除使用正則表達式標記,如這一個(一個簡單的例子):
// You can import System.Text.RegularExpressions for convenience, of course.
System.Text.RegularExpressions.Regex tag = new System.Text.RegularExpressions.Regex("\<.+?\>");
myHTML = tag.Replace(myHTML, String.Empty);
但如果您需要檢索大量結構良好的數據,那麼你可能會更好關閉使用HTML庫。 (如果網頁是XHTML,那就更好了 - 使用System.Xml
類。)
像http://htmlagilitypack.codeplex.com/,例如。
如果您嘗試從JavaScript中獲取數據,或者數據位於元素的屬性中幷包含尖括號,則可能會產生意想不到的副作用。您還需要接受轉義序列,如&
。
我不認爲RegEx會很好地工作。 HTML中的尖括號不是標籤的一部分,它們也可以出現在CSS,Javascript字符串常量等中。真正實現這一點的唯一方法是使用HTML解析器。 –
@MikeChristensen:這就是爲什麼我要說a)「一個簡單的例子」和b)「大量」。如果OP只需要一點點,那麼就不需要在項目中包含一個完整的解析器。此外,JavaScript不經常包含在數據解析中,CSS絕對不是...... – Ryan
是的,我想這就是你的意思 - 我只是想更明確地指出它。 –
這要看情況。 如果您的應用程序使用WebBrowser組件下載網頁,那麼該組件將在後臺自動爲您進行解析(就像Internet Explorer一樣)。只需走DOM樹並提取您想要的文本。您會發現HtmlElement.InnerText property尤其有用:)
- 1. 如何刪除網頁/從網址(symfony)
- 2. 從iframe中刪除網頁
- 3. 從網頁中刪除perl?
- 4. 如何從網頁打印中刪除網址和日期文字?
- 5. 如何從網頁中刪除外來字符?
- 6. 如何從我的網頁加載中刪除字體真棒
- 7. 如何從網頁上刪除
- 8. 如何從網頁的DotnetNuke中刪除頁眉和頁腳?
- 9. 如何從文件中刪除「^ @」字符?
- 10. 如何從文檔中刪除字段
- 11. 如何從網頁中刪除Disqus頁腳
- 12. javascript示例從網頁中刪除.htm
- 13. 噪音從網頁中刪除
- 14. 從導航堆棧中刪除網頁
- 15. 從所有網頁中刪除.aspx
- 16. 如何在PHP中從動態網頁中刪除內容?
- 17. 如何從網頁鏈接中的URL中刪除#(散列)?
- 18. 如何刪除我的網頁腳本中的\ ufeff字符?
- 19. 從文本文件中刪除網址
- 20. 如何從網址中刪除hashbang?
- 21. 如何從網址中刪除標記
- 22. 如何從網址中刪除hashtag?
- 23. 如何從網址中刪除目錄
- 24. 如何從網頁抓取數據中刪除元素?
- 25. 如何從網站頁面鏈接中刪除「user_data」和「.php」?
- 26. 如何使用asp.net從網頁中刪除數據
- 27. 如何通過網頁從SQL表中刪除東西
- 28. 如何從我的網站頁面中刪除.html?
- 29. 如何從網頁中刪除連續的鏈接?
- 30. 如何從網頁中刪除所有javascript和js電話?
簽入HTML解析器,如HTML Agility Pack - 然後遞歸循環DOM並從每個元素中提取文本。 –
看看http://htmlagilitypack.codeplex.com/ – John