登录其他网站并解析数据

时间:2011-11-28 18:40:40

标签: parsing login httpwebrequest

有php页面,我们称之为http://www.aaaa.org/login.php,它有两个textboxes(name =“username”和name =“password”)和一个按钮。 还有我的.aspx页面,我想从该页面登录.php页面。登录后,我想检索并解析子页面http://www.aaaa.org/details.php?id=1234的一些内容。 我尝试了一些代码,但它总是检索login.php页面的内容,所以我假设我根本无法登录。 你能告诉我确切的代码怎么做吗? 语言是C#。

2 个答案:

答案 0 :(得分:0)

为此,您可以使用HTTPClient库。像这样的东西: http://www.codescales.com/

这将使您能够登录并访问客户端应用程序。请注意,您的应用程序将是脆弱的,并受到Web应用程序的影响,并且它会发生变化。因此,如果他们更改字段名称,您的应用也必须更改。但它会对你想要实现的目标起作用。

我还建议将其写为单独的库,而不是直接写在ASPX代码中。

答案 1 :(得分:0)

    protected void Page_Load(object sender, EventArgs e)
    {
        WebClient req = new WebClient();

        CredentialCache myCache = new CredentialCache();
        //myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Basic", new NetworkCredential("login", "passw"));
        myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Digest", new NetworkCredential("login", "passw"));

        req.Credentials = myCache;

        string results;
        results = System.Text.Encoding.UTF8.GetString(req.DownloadData("http://www.aaaa.org/login.php"));
    }

        protected void Button1_Click(object sender, EventArgs e)
    {
        string TheUrl = "http://www.aaaa.org/details.php?id=2923";
        string response = GetHtmlPage(TheUrl);
        TextBox2.Text = response;
    }

----------------更新:-----------------

    protected void Page_Load(object sender, EventArgs e)
    {
        WebClient req = new WebClient();

        CredentialCache myCache = new CredentialCache();
        myCache.Add(new Uri("http://www.aaaa.org/login.php"), "Basic", new NetworkCredential("login", "passw"));

        NameValueCollection postData = new NameValueCollection();
        postData.Add("username", "login");
        postData.Add("password", "passw");
        req.UploadValues("http://www.aaaa.org/login.php", postData);

        req.Credentials = myCache;

        string results;
        results = System.Text.Encoding.UTF8.GetString(req.DownloadData("http://www.aaaa.org/login.php"));