如何从 URL 获取呈现的 HTML?
假设我想要这个程序以新闻、日程安排和其他动态内容的形式检查网络上的更新(HTML 源中不可用的内容)
如何获得包含完整文档的渲染(完整)HTML,就好像您正在通过浏览器阅读它一样?
以下示例是动态页面的示例:
与往常一样,当涉及到动态站点时——在源代码中找不到上述文本——只能通过浏览器看到。
当然,我可以使用 WebClient 和 DownloadString(“www.example.com”)下载 HTML 页面,但这只会给我源页面 - 静态文本。
我想得到最终的文档,假设在 Javascript 添加了它的元素并且 jQuery 完成了它的设置之后。
Dim Client As New WebClient
Dim HTML = WebClient.DownloadString("http://www.example.com")
要访问/解析更多的 HTML,我还可以使用 MSHTML.dll 来逐个元素地浏览页面。
Dim Client As New WebClient
Dim Data As Stream = Client.OpenRead(New Uri("http://example.com"))
Dim Reader As New StreamReader(Data)
Dim HTML As String = Reader.ReadToEnd
Dim Document As IHTMLDocument2 = DirectCast(New mshtml.HTMLDocument(), IHTMLDocument2)
Document.write(HTML)
Dim Elements As IHTMLElementCollection = Document.all
For Each Element As IHTMLElement In Elements
'here I can access things like the elements ids, tag innerHTML and so forth
Next
但这些都不会给我实际呈现的文档。
虽然我可以创建一个 WebBrowser 控件,转到 URL 并通过它访问页面的内容 - 但如果可能的话 - 这不是我想要的方式。