方案是将邮件发送到收件箱。邮件的附件是一个html文件,用户单击该文件即可在浏览器中打开页面。然后,他们单击网页上的链接,该链接会在线打开PDF文件。
现在,我想用C#以编程方式实现的是将附加的html文件保存在磁盘上,打开文件,找到链接,单击它,然后将打开的文件保存到磁盘。
我已经通过编程方式打开了电子邮件,并将附带的html文件保存到磁盘。但是现在,我有点想以编程方式打开文件。 我已经创建了FileWebRequest来打开文件,但是我不知道如何找到链接(“ a”标记,仅在整个页面上)并以编程方式单击它(在c#中),因此PDF打开所以我可以下载并保存到磁盘。
filewebrequest之后需要做什么?
FileWebRequest req = (FileWebRequest)WebRequest.Create(pathToHtmlFile);
FileWebResponse res = (FileWebResponse)req.GetResponse();
// What now..?
答案 0 :(得分:0)
首先,您应该使用RegEx从html内容中提取PDF URL,然后使用WebClient下载它:
private static string FindPdfFileDownloadLink(string htmlContent)
{
return Regex.Match(htmlContent, @"^(https?:\/\/)?www\.([\da-z\.-]+)\.([a-z\.]{2,6})\/[\w \.-]+?\.pdf$").Value;
}
public static int Main(string[] args)
{
string htmlContent = File.ReadAllText("1.html");
string pdfUrl = FindPdfFileDownloadLink(htmlContent);
using (WebClient wClient = new WebClient())
{
wClient.DownloadFile(pdfUrl, @"1.pdf");
}
Console.Read();
return 0;
}
如果您出于任何原因要真正单击链接,可以将HTML加载到隐藏的Web浏览器中,然后找到所需的元素并单击。
要将内容加载到WebBrowser控件中:
webBrowser1.Navigate(@"1.html");
并查找并单击元素:
HtmlElement link = webBrowser.Document.GetElementByID("link_id_58547")
link.InvokeMember("Click")