C# 以编程方式保存网站中网页的内部文本
我正在参加谷歌Apex系统的在线课程,希望能够自动保存某些页面的数据。在正常浏览时,登录并获取内容的过程如下:打开webapp并登录,浏览我想要查看的课程,单击课程。当我点击我想学习的课程时,它会打开一个包含课程的新窗口。这是我在程序中无法完成的部分 我想到的第一种方法是使用PHP,请求web页面并简单地保存它们。问题是有一个登录,还有一些javascript事件和一些我不知道如何用php自动化的事情。我甚至用一个POST请求登录,但无法理解其余的内容 今天,我尝试使用Windows窗体C#,使用dotnet WebBrowser控件来实现它。我让它为我登录并导航到我需要选择要打开的课程的页面,但如果我单击该链接,它将尝试在Internet Explorer中打开该页面。如果我使用它打开的链接,我会从该站点得到一个错误 检查我遇到问题的页面上的链接,我发现打开新窗口的javascript事件。它用重定向链接打开它。在新选项卡中使用此重定向链接而不是在Chrome中使用新窗口,但我不知道如何从C#获取重定向链接。C# 以编程方式保存网站中网页的内部文本,c#,.net,html,web,C#,.net,Html,Web,我正在参加谷歌Apex系统的在线课程,希望能够自动保存某些页面的数据。在正常浏览时,登录并获取内容的过程如下:打开webapp并登录,浏览我想要查看的课程,单击课程。当我点击我想学习的课程时,它会打开一个包含课程的新窗口。这是我在程序中无法完成的部分 我想到的第一种方法是使用PHP,请求web页面并简单地保存它们。问题是有一个登录,还有一些javascript事件和一些我不知道如何用php自动化的事情。我甚至用一个POST请求登录,但无法理解其余的内容 今天,我尝试使用Windows窗体C#,使
a
元素在iframe中,我必须在那里获取链接<代码>在C#中,如何从iframe中检索元素?
另外,还有更好的方法吗?使用类获取url的html
例1:
string htmlTd;
using (WebClient client = new WebClient())
{
//or - request.UserAgent = "Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US)";
client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
htmlTd = client.DownloadString(myurl);
}
GetImagesInHTMLString(htmlTd);
//从页面获取图像。。。由于我的修改,它现在有问题。。。
我正在努力,但是帮你达成目标
private void GetImagesInHTMLString(string htmlString)
{
List<string> images = new List<string>();
string pattern = @"<(img)\b[^>]*>";
Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches(htmlString);
string b =@"src=""";
string c=@"src="""+myurl+"";
//if (matches.Count >1)
//{
for (int i = 0, l =matches.Count; i < l; i++)
{
string pattern1 =@"s/\s*src='[^']*'//";
// images.Add(matches[i].Value.Replace(b, c));
string allmatch = matches[i].Value.Replace(b, c);
string patrern1="#(= src=['\"].+[^\"]?)?src=[\"']?([^\"']+)#i";
Regex rgx1 = new Regex(pattern1);
MatchCollection matches1 = rgx1.Matches(allmatch);
string siya = matches1[0].Value.ToString();
//string b = @"src=""";
//string c = @"src=""" + myurl + "";
}
// }
foreach (var item in images)
{
Response.Write(item);
}
}
问题不是从网页中获取html,而是要正确设置服务器上的php会话变量,这样我就可以查看并下载页面。如果我尝试使用url,我会得到一个关于未登录的错误。
WebClient client = new WebClient ();
// Add a user agent header in case the
// requested URI contains a query.
client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead (URl);
StreamReader reader = new StreamReader (data);
string s = reader.ReadToEnd ();
Console.WriteLine (s);
data.Close ();
reader.Close ();