我是Asp.Net C#开发人员,我想从PHP站点下载CSV文件。 如果已经涵盖了这一点,请道歉,但在这种情况下,链接显示javascript表单提交。
现在我们登录登录页面 然后在搜索页面上输入日期。 结果页面以Html显示结果,并且还有一个“下载”链接,单击该链接将为CSV文件提供服务。
我们希望通过屏幕抓取/下载文件定期“拉”CSV文件。
“下载”链接显示以下javascript,将表单提交回服务器以下载CSV文件:
javascript:document.aForm.action='download.php'; setTarget();document.aForm.submit();
我想设置一个C#控制台应用程序定期运行: 登录并下载CSV文件。
我可以使用webclient downloaddata方法访问此CSV文件吗? 请提供代码示例。
我可以执行一些程序化抓取来登录并填写一些搜索条件 并进入结果页面下载csv?
建议用什么? HTML敏捷包? 非常感谢任何链接或代码片段。
感谢您的帮助。
答案 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
。上面我已经告诉你如何发布。