2014-07-09 123 views
0

得到div元素這是代碼,它永遠不會奏效不能由ID

WebBrowser wb; 
HtmlElement HTMLAuthor; 
string author = " "; 
try 
{ 
    wb = new WebBrowser(); 
    wb.Url = new Uri(website); 
    HTMLAuthor = wb.Document.GetElementById("author"); 
    author = Convert.ToString(HTMLAuthor); 
} 
catch 
{ 
    MessageBox.Show("Could not get author info"); 
} 

這是在HTML頁面中的DIV

<div id="author">Mark</div> 

這是一個Windows窗體應用程序,也許這就是爲什麼它不起作用?

+0

添加明確的等待可能在查找「作者」之前 – singe3

+0

它不起作用,消息框在1秒後不顯示,但它立即顯示。 – user3819175

+0

你想訪問什麼網站,是否有任何訪問問題。是否已在網頁瀏覽器中打開該鏈接(不執行) – Charlie

回答

0

僅在DocumentCompleted事件中與文檔進行任何交互。

+0

它現在不會給出任何錯誤,但是當它完成時,字符串是「System.Windows.Forms.HtmlElement」 – user3819175

+0

這是另一個問題。您需要XmlElement的InnerText屬性而不是Convert.ToString()。 – SerG

+0

它現在有效!謝謝 – user3819175

1

必須的處理程序添加到事件Navigated

wb.Navigated += wb_Navigated; 

然後在方法體中,當文件被完全加載,你可以獲取元素的值:

void wb_Navigated(object sender, WebBrowserNavigatedEventArgs e) 
{ 
    var HTMLAuthor = wb.Document.GetElementById("author"); 
    var author = Convert.ToString(HTMLAuthor); 
} 
+0

[這是不正確的。](http://social.msdn.microsoft.com/forums/en-US/7b13a310-c5ca-4aeb-9b0e-3ade2eb8e94a/confusing-webbrowserdocumentcompleted-and-navigated) – SerG

+0

@SerG你'即使如此,「Navigated」事件對於獲取html也能正常工作。 –