C# 以编程方式保存网站中网页的内部文本

C# 以编程方式保存网站中网页的内部文本,c#,.net,html,web,C#,.net,Html,Web,我正在参加谷歌Apex系统的在线课程,希望能够自动保存某些页面的数据。在正常浏览时,登录并获取内容的过程如下:打开webapp并登录,浏览我想要查看的课程,单击课程。当我点击我想学习的课程时,它会打开一个包含课程的新窗口。这是我在程序中无法完成的部分 我想到的第一种方法是使用PHP,请求web页面并简单地保存它们。问题是有一个登录,还有一些javascript事件和一些我不知道如何用php自动化的事情。我甚至用一个POST请求登录,但无法理解其余的内容 今天,我尝试使用Windows窗体C#,使

我正在参加谷歌Apex系统的在线课程,希望能够自动保存某些页面的数据。在正常浏览时,登录并获取内容的过程如下:打开webapp并登录,浏览我想要查看的课程,单击课程。当我点击我想学习的课程时,它会打开一个包含课程的新窗口。这是我在程序中无法完成的部分

我想到的第一种方法是使用PHP,请求web页面并简单地保存它们。问题是有一个登录,还有一些javascript事件和一些我不知道如何用php自动化的事情。我甚至用一个POST请求登录,但无法理解其余的内容

今天,我尝试使用Windows窗体C#,使用dotnet WebBrowser控件来实现它。我让它为我登录并导航到我需要选择要打开的课程的页面,但如果我单击该链接,它将尝试在Internet Explorer中打开该页面。如果我使用它打开的链接,我会从该站点得到一个错误

检查我遇到问题的页面上的链接,我发现打开新窗口的javascript事件。它用重定向链接打开它。在新选项卡中使用此重定向链接而不是在Chrome中使用新窗口,但我不知道如何从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 ();