导航:首页 > 文件教程 > htmlunit本地文件

htmlunit本地文件

发布时间:2023-07-18 11:22:41

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

java">importjava.io.FileOutputStream;
importjava.io.InputStream;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;

importorg.apache.commons.io.IOUtils;

importcom.gargoylesoftware.htmlunit.Page;
importcom.gargoylesoftware.htmlunit.WebClient;

publicclassDownloadFile{
publicstaticvoidmain(String[]args)throwsException{
StringbaseUrl="http://hanyu.iciba.com/hanzi/1.shtml";
StringbihuaRegex="class="guanggao"[^<]*<[^<]*<param\s*name="movie"\s*value="([^"]*)";
StringaSoundRegex="class="js12">ā.*?name="FlashVars"\s*value="f=([^"]*)";
StringeSoundRegex="class="js12">ē.*?name="FlashVars"\s*value="f=([^"]*)";
WebClientclient=newWebClient();
client.getOptions().setCssEnabled(false);
client.getOptions().setJavaScriptEnabled(false);
client.getOptions().(false);
client.getOptions().(false);
Pagepage=client.getPage(baseUrl);
Stringsource=page.getWebResponse().getContentAsString();
MatchermBihuan=Regex(source,bihuaRegex);
MatchermA=Regex(source,aSoundRegex);
MatchermE=Regex(source,eSoundRegex);
while(mBihuan.find()){
Stringurl="http://hanyu.iciba.com/"+mBihuan.group(1);
page=client.getPage(url);
saveFile(page,"d:/testDownload/bihua.swf");
}
while(mA.find()){
Stringurl=mA.group(1);
page=client.getPage(url);
saveFile(page,"d:/testDownload/a.mp3");
}
while(mE.find()){
Stringurl=mE.group(1);
page=client.getPage(url);
saveFile(page,"d:/testDownload/e.mp3");
}
}

publicstaticMatcherRegex(Stringsource,Stringregex){
Patternp=Pattern.compile(regex,Pattern.DOTALL);
returnp.matcher(source);
}

publicstaticvoidsaveFile(Pagepage,Stringfile)throwsException{
InputStreamis=page.getWebResponse().getContentAsStream();
FileOutputStreamoutput=newFileOutputStream(file);
IOUtils.(is,output);
output.close();
}
}

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

『贰』 GB2312 的编码,繁体内容变成乱码,怎么解决

第一步:下载htmlunit的源代码,在com\gargoylesoftware\htmlunit\util目录下有个EncodingSniffer文件,其中就有获取页面编码的情况,大概在626行encoding = encoding.toUpperCase(Locale.ROOT);后边添加if(encoding.equals("GB2312"))encoding="GBK";

第二步:大概在715行charset = charset.toUpperCase(Locale.ROOT);后边添加if(charset.equals("GB2312"))charset="GBK";

原理:gb2312支持的字符集编码比较小,GBK兼容并且大,可以直接转GBK的,所以获取页面的时候,htmlunit本身会调用这个EncodingSniffer类,将其中遇到gb2312的情况,统一变成gbk。

比较麻烦就是要下载htmlunit源码,做个编译后,把生成的EncodingSniffer.class文件覆盖到maven引用的包对应的class文件中。

『叁』 如何从网页捉取JS动态数据

代码比较简单,直接看就可以了,需要注意的是,由于浏览器查询需要时间,在查询的过程中,应该让主线程休眠一段时间,才能保证htmlunit浏览器已经查询完毕。

import java.util.concurrent.TimeUnit;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomNodeList;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlTable;
import com.gargoylesoftware.htmlunit.html.HtmlTableBody;

public class Entrance {

public static void main (String[] args ) throws Exception
{
String webUrl = "http://www.xy2046.com/xypk10.aspx?T=234&day=2016-05-29";
HtmlPage page = getHtmlPage(webUrl);
final HtmlTable div = (HtmlTable) page.getElementById("mytable");
HtmlTableBody tbody = (HtmlTableBody) div.getBodies().get(0);
printTable(tbody);
System.err.println("查询数据成功");
}
答案可在CSDN中找到。

『肆』 java相关。爬虫问题,关于新浪微博。谢谢!

1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完专成的,类装载器所做的工作实质是把类属文件从硬盘读取到内存中
2.java中的类大致分为三种:
1.系统
2.扩展类
3.由程序员自定义的类

3.类装载方式,有两种
1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中。
2.显式装载, 通过class.forname()等方法,显式加载需要的类

想必您肯定也上网查过,但是我想具体是什么机制,属于内部的机密了吧。毕竟网上查的到的话,那结果可想而知了。

阅读全文

与htmlunit本地文件相关的资料

热点内容
数控机床常用的编程方法有哪些 浏览:467
铁路与大数据分析产生什么结果 浏览:572
如何把文件转为种子 浏览:59
玩股票杠杆用什么app 浏览:999
怎么用q币充qq红包 浏览:140
海外代购app哪个比较好 浏览:729
手机改qq密码怎么改 浏览:238
api压缩文件夹 浏览:847
网络营销中营销策略都有哪些 浏览:926
mat格式文件数据类型 浏览:132
手机文件删除如何恢复 浏览:682
如何计算带有指数的数据 浏览:243
手机数据存储在主板的哪里 浏览:151
什么网站物品最实惠 浏览:361
win7自带截图工具不能用 浏览:939
javamail发送html邮件 浏览:682
穿越火线枪战王者游戏录制在哪个文件夹 浏览:10
cad图复制到另一个cad文件标注变形 浏览:198
腾讯大数据平台部属于哪个群 浏览:350
电极自动编程哪个软件好用 浏览:550

友情链接