在C#中复制Webbrowser将页面另存为功能

时间:2018-07-11 15:27:44

标签: c# webclient webclient-download

我正在寻找一种在C#中复制Web浏览器“另存页面为”功能(另存为Type =文本文件)的方法。

难题:我试图使用WebClient和HttpWebRequest从网页上下载所有文本。两种方法都只返回不包含动态内容的网页HTML。

示例代码:

            string url = @"https://www.canadapost.ca/cpotools/apps/track/personal/findByTrackNumber?trackingNumber=" + package.Item2 + "&LOCALE=en";

            try
            {
                System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;

                using (WebClient client = new WebClient())
                {
string content = client.DownloadString(url);
}
}

上面的示例返回了没有页面跟踪事件的HTML。

当我在Firefox中显示页面时,右键单击该页面,然后选择“页面另存为”并另存为“文本文件”,所有原始文本都保存在文件中。我想模仿这个功能。

1 个答案:

答案 0 :(得分:0)

如果要抓取显示动态内容的网页,则基本上有2个选项:

  1. 首先使用某种方式呈现页面。 C#中最简单的方法是拥有一个WebBrowser控件,并监听DocumentCompleted事件。请注意,当它在一页上触发多个文档时,会有一些细微差别
  2. 弄清楚页面正在调用什么服务以获取更多数据,并查看是否可以直接访问该服务。 Canadapost网站很可能正在访问您也可以直接调用的API。
相关问题