使用C#从Subscription网站(PHP页面)下载文件

时间:2011-12-01 05:42:03

标签: c# php forms download submit

我是Asp.Net C#开发人员,我想从PHP站点下载CSV文件。 如果已经涵盖了这一点,请道歉,但在这种情况下,链接显示javascript表单提交。

现在我们登录登录页面 然后在搜索页面上输入日期。 结果页面以Html显示结果,并且还有一个“下载”链接,单击该链接将为CSV文件提供服务。

我们希望通过屏幕抓取/下载文件定期“拉”CSV文件。

“下载”链接显示以下javascript,将表单提交回服务器以下载CSV文件:

javascript:document.aForm.action='download.php'; setTarget();document.aForm.submit();

我想设置一个C#控制台应用程序定期运行: 登录并下载CSV文件。

  1. 我可以使用webclient downloaddata方法访问此CSV文件吗? 请提供代码示例。

  2. 我可以执行一些程序化抓取来登录并填写一些搜索条件 并进入结果页面下载csv?

  3. 建议用什么? HTML敏捷包? 非常感谢任何链接或代码片段。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用WebClient课程并下载文件,您可以使用WebClient.DownloadFile方法

OR

您可以Curl libcurl .net作为参考,您可以按照post

进行操作

要登录特定页面,您可以尝试使用

WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)");
byte[] bret = client.UploadData("http://www.website.com/post.php", "POST",
            System.Text.Encoding.ASCII.GetBytes("field1=value1&field2=value2") );

string sret = System.Text.Encoding.ASCII.GetString(bret);

获得成功响应后,您可以解析该响应字符串以获取该超链接,然后使用Webclient.DownloadFile下载文件

    try
    {
        client.DownloadFile("http://www.xyz.com/download.php","abc.csv");
        Console.WriteLine("File Saved.");
    }
    catch (WebException we)
    {
        Console.WriteLine(we.Message + "\n" + we.Status.ToString());
    }
    catch (NotSupportedException ne)
    {
        Console.WriteLine(ne.Message);
    }

我想在你的情况下,超链接javascript正在向download.php发帖,因此您可以使用webclient.downloadFile手动简单地发布帖子,而不是使用webclient。上面我已经告诉你如何发布。