我想從網站中提取一些信息。但是當我導航到它時,它動態加載一個php頁面之前使用javascript將我連接到服務器。我可以使用開發人員工具按照Chrome中的順序進行操作。我想通過Webbrowser控件在C#中重現它是最簡單的,只需導航到網站即可。然後webbrowser控件必須包含所有的javascript文件,動態加載的php頁面中的文本等等。但是,這是真的,他們存儲在控制的地方?我似乎無法找到它們。WebBrowser控件 - 查看導航到網站時加載的文件
1
A
回答
0
重新創建在Chrome中實現的整個序列圖將是很多工作。但是,「從網站中提取一些信息」可以很容易地完成。
聲明:我認爲這個問題是對WPF的WebBrower
控制(這將是對的WinForms幾乎相同)
你可以得到HTMLDocument
一旦加載頁面時,使用:
using mshtml; // <- don't forget to add the reference
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
browser.Navigate("http://google.com/");
browser.LoadCompleted += browser_LoadCompleted;
}
void browser_LoadCompleted(object sender, NavigationEventArgs e)
{
HTMLDocument doc = (HTMLDocument)browser.Document;
string html = doc.documentElement.innerHTML.ToString();
// from here, you should be able to parse the HTML
// or sniff the HTMLDocument (using HTML Agility Pack for instance)
}
}
從這個HTMLDocument
,你可以訪問很多屬性,包括HTML元素,CSS樣式和腳本。我邀請您設置一個斷點並查看最適合您需求的內容。
儘管如此,由於您要加載的頁面使用JavaScript來填充其內容,因此在LoadCompleted
加註時HTMLDocument
可能不會完成。
在這種情況下,我建議使用計時器輪詢,直到內容穩定。
您也可以使用HTMLDocument
注入自己的JavaScript代碼,並調用通過WebBrowser.ObjectForScripting
的C#方法,但這會變得更加複雜和難以維護。
相關問題
- 1. Webbrowser控件 - 如何查看在導航到網站時下載的文件(css,js等)列表?
- 2. WebBrowser控件導航返回
- 3. wp7 webbrowser控件不導航到uri
- 4. 從查看我的網站阻止Windows Phone WebBrowser控件?
- 5. WebBrowser控件不導航到鏈接「文件://」協議的URI
- 6. WebBrowser控件不導航到本地文件
- 7. 使用WebBrowser控件加載PDF文件
- 8. 在C#中WebBrowser控件的特定網站加載緩慢
- 9. WebBrowser控件:導航到該網頁已被取消
- 10. Silverlight Webbrowser控件中的塊導航
- 11. 等到WebBrowser控件的頁面加載
- 12. WinForms WebBrowser控件不加載整個網站
- 13. 導航到webbrowser控件中的xhtml文檔打開Chrome
- 14. WebBrowser控件導航不工作,Windows 10
- 15. 如何使用WebBrowser控件導航
- 16. WebBrowser控件:檢測導航故障
- 17. 將流加載到Silverlight WebBrowser控件中
- 18. winform中WebBrowser控件的加載事件
- 19. 加載本地HTML文件到一個WebBrowser控件
- 20. 加載外部文件,如CSS到WebBrowser控件
- 21. webbrowser控件查看html文件的圖像路徑問題
- 22. 在WebBrowser控件中查看xml節點
- 23. 在WebBrowser控件中查看Excel C#
- 24. 暫停循環,直到WebBrowser導航並加載文檔
- 25. Webbrowser控件下載文件通過HttpWebRequest
- 26. 使用WebBrowser控件下載文件
- 27. 在IE 8中查看網站時無法加載本地JQuery文件
- 28. 收縮導航欄添加時查看
- 29. 導航並從外部網站下載文件
- 30. 在WebBrowser控件的導航事件上停止操作
你可以給一個網址,我可以試試嗎? –
如果頁面使用AJAX或其他動態JavaScript,那麼確定元素何時準備好就是非確定性的。至少,你應該在頁面的'window.onload'被觸發後執行web-scrapping。 [此示例](http://stackoverflow.com/a/19063643/1768303)可能是一個很好的起點。 – Noseratio