我的程序正在读取一个网络目标,在正文的某个地方有我想要阅读的iframe。
我的html来源
<html>
...
<iframe src="http://www.mysite.com" ></iframe>
...
</html>
在我的程序中,我有一个方法将源返回为字符串
public static string get_url_source(string url)
{
using (WebClient client = new WebClient())
{
return client.DownloadString(url);
}
}
我的问题是,我想在读取源代码时获取iframe的源代码,就像在正常浏览中一样。
我是否可以仅使用WebBrowser Class执行此操作,还是可以在WebClient或其他类中执行此操作?
真正的问题: 如何获得给出URL的外部html?欢迎任何搭建。
答案 0 :(得分:3)
获取网站来源后,您可以使用HtmlAgilityPack获取iframe的网址
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var src = doc.DocumentNode.SelectSingleNode("//iframe")
.Attributes["src"].Value;
然后再次拨打get_url_source
答案 1 :(得分:2)
使用HTML Agility Pack解析您的来源,然后:
List<String> iframeSource = new List<String>();
HtmlDocument doc = new HtmlDocument();
doc.Load(url);
foreach (HtmlNode node in doc.DocumentElement.SelectNodes("//iframe"))
iframeSource.Add(get_url_source(mainiFrame.Attributes["src"]));
如果您要定位单个iframe,请尝试使用ID属性或其他内容识别它,以便您只能检索一个来源:
String iframeSource;
HtmlDocument doc = new HtmlDocument();
doc.Load(url);
foreach (HtmlNode node in doc.DocumentElement.SelectNodes("//iframe"))
{
// Just an example for check, but you could use different approaches...
if (node.Attributes["id"].Value == 'targetframe')
iframeSource = get_url_source(node.Attributes["src"].Value);
}
答案 2 :(得分:0)
我在搜索后找到了答案,这就是我想要的
webBrowser1.Url = new Uri("http://www.mysite.com/");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
string InnerSource = webBrowser1.Document.Body.InnerHtml;
//You can use here OuterHtml too.