如何用htmlunit把网页上的flash截取下来

网页为http://hanyu.iciba.com/hanzi/1.shtml要求用htmlunit把该页上阿字的flash动画和发音下载下来。... 网页为http://hanyu.iciba.com/hanzi/1.shtml要求用htmlunit把该页上阿字的flash动画和发音下载下来。 展开
 我来答
苦柳香魂
2014-12-12 · TA获得超过330个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:133万
展开全部
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.io.IOUtils;

import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebClient;

public class DownloadFile {
public static void main(String[] args) throws Exception {
String baseUrl = "http://hanyu.iciba.com/hanzi/1.shtml";
String bihuaRegex = "class=\"guanggao\"[^<]*<[^<]*<param\\s*name=\"movie\"\\s*value=\"([^\"]*)";
String aSoundRegex = "class=\"js12\">ā.*?name=\"FlashVars\"\\s*value=\"f=([^\"]*)";
String eSoundRegex = "class=\"js12\">ē.*?name=\"FlashVars\"\\s*value=\"f=([^\"]*)";
WebClient client = new WebClient();
client.getOptions().setCssEnabled(false);
client.getOptions().setJavaScriptEnabled(false);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
Page page = client.getPage(baseUrl);
String source = page.getWebResponse().getContentAsString();
Matcher mBihuan = Regex(source, bihuaRegex);
Matcher mA = Regex(source, aSoundRegex);
Matcher mE = Regex(source, eSoundRegex);
while(mBihuan.find()) {
String url = "http://hanyu.iciba.com/" + mBihuan.group(1);
page = client.getPage(url);
saveFile(page, "d:/testDownload/bihua.swf");
}
while(mA.find()) {
String url = mA.group(1);
page = client.getPage(url);
saveFile(page, "d:/testDownload/a.mp3");
}
while(mE.find()) {
String url = mE.group(1);
page = client.getPage(url);
saveFile(page, "d:/testDownload/e.mp3");
}
}

public static Matcher Regex(String source, String regex) {
Pattern p = Pattern.compile(regex, Pattern.DOTALL);
return p.matcher(source);
}

public static void saveFile(Page page, String file) throws Exception {
InputStream is = page.getWebResponse().getContentAsStream();
        FileOutputStream output = new FileOutputStream(file);
        IOUtils.copy(is, output);
        output.close();
}
}

注:附件只是下载下来的文件,并不是代码。代码就贴上来的这些。如只是想知道方法,并不需要下载附件。

博思aippt
2024-07-20 广告
博思AIPPT是基于ai制作PPT的智能在线工具,它提供了4种AI制作PPT的方式,包括AI生成大纲、AI直接生成PPT、文本生成PPT、AI提炼文档生成PPT,一站式集成多种AI生成PPT的方式,可满足办公用户的不同需求和使用场景。ai生... 点击进入详情页
本回答由博思aippt提供
木恩月城
2014-12-09 · 专注互联网行业平台渠道推广及信息分享
木恩月城
采纳数:6884 获赞数:17887

向TA提问 私信TA
展开全部

这个没办法,不过你可以到附件地址把swf截取

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式