1

如何从 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 并通过它访问页面的内容 - 但如果可能的话 - 这不是我想要的方式。

4

1 回答 1

4

对于动态加载内容的网页,您必须发现被网页脚本调用以获取内容的 url。使用像提琴手这样的工具来查看网址。获得该信息后,请使用它WebClient来获取内容。

于 2013-09-11T16:45:23.513 回答