有什么办法可以从C#打开Internet Explorer进程,发送html内容到这个浏览器并捕获'显示'内容?C#Internet Explorer和剥离HTML标签
我知道其他的HTML剥离方法(例如HtmlAgilityPack),但我想探索上述途径。
感谢, LG
有什么办法可以从C#打开Internet Explorer进程,发送html内容到这个浏览器并捕获'显示'内容?C#Internet Explorer和剥离HTML标签
我知道其他的HTML剥离方法(例如HtmlAgilityPack),但我想探索上述途径。
感谢, LG
您可以使用WebBrowser控件,它存在两个WinForms和WPF,主办IE在应用程序中。然后,您可以将控件的Source设置为HTML,等待内容加载(使用LayoutUpdated事件,而不是在HTML完成下载时引发的Loaded事件,不一定要安排并且所有动态JS运行),然后访问Document属性来获取HTML。
你好,谢谢你指点我正确的方向。你能告诉我如何从文档属性中提取可见内容吗?谢谢 – 2012-02-19 15:42:44
Document属性在WPF中被定义为'object',但它实际上是一个COM IHTMLDocument对象的包装。在调试器中进入它,你会发现它有一些有用的属性,如'body',它包含一个HTMLBodyClass对象,该对象又有一个'innerHTML'属性,包含显示的HTML(在javascript之后)或innerText,其中只包含文字,没有标签。 – 2012-02-19 16:47:44
public List<LinkItem> getListOfLinksFromPage(string webpage)
{
WebClient w = new WebClient();
List<LinkItem> list = new List<LinkItem>();
try
{
string s = w.DownloadString(webpage);
foreach (LinkItem i in LinkFinder.Find(s))
{
//Debug.WriteLine(i);
//richTextBox1.AppendText(i.ToString() + "\n");
list.Add(i);
}
listTest = list;
return list;
}
catch (Exception e)
{
return list;
}
}
public struct LinkItem
{
public string Href;
public string Text;
public override string ToString()
{
return Href;
}
}
static class LinkFinder
{
public static List<LinkItem> Find(string file)
{
List<LinkItem> list = new List<LinkItem>();
// 1.
// Find all matches in file.
MatchCollection m1 = Regex.Matches(file, @"(<a.*?>.*?</a>)", RegexOptions.Singleline);
// 2.
// Loop over each match.
foreach (Match m in m1)
{
string value = m.Groups[1].Value;
LinkItem i = new LinkItem();
// 3.
// Get href attribute.
Match m2 = Regex.Match(value, @"href=\""(.*?)\""",
RegexOptions.Singleline);
if (m2.Success)
{
i.Href = m2.Groups[1].Value;
}
// 4.
// Remove inner tags from text.
string t = Regex.Replace(value, @"\s*<.*?>\s*", "",
RegexOptions.Singleline);
i.Text = t;
list.Add(i);
}
return list;
}
}
别人创建的正则表达式,所以我不能邀功说,但上面的代码将打开一个WebClient的对象以在网页中通过并使用正则表达式查找所有childLinks该页面。不确定这是否是您要查找的内容,但如果您只是想“抓住”所有HTML内容并将其保存到文件中,则可以简单地保存在“string s = w”行中创建的字符串“s” .DownloadString(网页);”到一个文件。
完美有效的问题IMO。 – 2012-02-19 14:37:52
您可以使用'WebBrowser'控件。 'webBrowser.DocumentText = ....' – 2012-02-19 14:47:31