我需要从一个页面(可能超过100个文件与单独的链接)自动下载多个链接的文件。我知道要登录的URL,并且我有凭据。
我愿意用自动化的Java程序来完成。进入下载位置页面的唯一方法是登录网站。
cURL命令对此有帮助吗?
请建议我这样做。
您可以使用wget来下载日志文件:
wget -r --no-parent --user=user --password=password --no-check-certificate <URL>
- 你可以在——header中传递头信息,例如——header "Cookie: JSONSESSIONID=3433434343434"
- 你可以使用——post-data 'email=$ email &password=$PASSWRD'来传递post数据
或者您可以在java中使用以下HttpClient:
- 以下是HTTPClient登录和传递POST/GET/Headers信息的示例
- 首先获得整个HTML页面作为字符串
- 解析该字符串以获取文件链接或使用XML到对象映射器转换为java对象,如https://github.com/FasterXML/jackson-dataformat-xml
- 一旦你得到文件的链接,使用HttpClient 下载文件
public void saveFile(String url, String FileName) throws ClientProtocolException, IOException{ HttpGet httpget = new HttpGet(url); HttpResponse response = httpClient.execute(httpget); HttpEntity entity = response.getEntity(); if (entity != null) { long len = entity.getContentLength(); InputStream is = entity.getContent(); FileOutputStream fos = new FileOutputStream(new File(filePath))); IOUtils.copy(is, fos); } return; }
如果您打算将文件从站点复制到本地文件,那么您可以使用java.nio.file
Files.copy(new URL("http://host/site/filename").openStream(), Paths.get(localfile)