我正在寻找一种方法,它可以复制C#中的Web浏览器另存页面为函数(另存为类型=文本文件(。
困境:我曾尝试使用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中显示页面时,右键单击页面并选择"将页面另存为"并另存为文本文件,所有原始文本都保存在文件中。我想模仿这个功能。
如果你正在抓取一个显示动态内容的网页,那么你基本上有两个选项:
- 首先使用一些东西来渲染页面。C#中最简单的方法是拥有一个WebBrowser控件,并侦听DocumentCompleted事件。请注意,当它为一页上的多个文档触发时,会有一些细微差别
- 弄清楚页面正在调用什么服务来获取额外的数据,看看是否可以直接访问这些数据。Canadapost网站很可能正在访问您也可以直接调用的API