可以使用动态HTML从一个HTML页面元素中获取数据。它允许获取和 *** 作数据而不需经过服务器。使用页面上对象的属性,在 Visual Basic \x0d\代码中可以在页面上搜集数据、执行计算并显示响应,而不需将处理从客户端传送到服务器,传送将增加对用户 *** 作和请求的响应时间。\x0d\\x0d\例如,假设正在使用一个应用程序,它允许用户通过输入作者名字、书名或检索书号到一个搜索页的文本字段中,从一个数据库中查询书目。文本字段被命名为Author、Title和CallNo。当从应用程序的搜索页提交一个查询时,应用程序必须从这些文本字段获取该值。\x0d\\x0d\下面的代码显示了如何使用变量来获取这些字段的值:\x0d\Private function cmdSearch_onclick() As Boolean\x0d\创建变量包含搜索条件。\x0d\Dim sAuthor as String\x0d\Dim sTitle as String\x0d\Dim sCallNo as String\x0d\从页面获取搜索条件。\x0d\sAuthor=MeauthorValue\x0d\sTitle=MetitleValue\x0d\sCallNo=MecallnoValue\x0d\这里的代码处理并返回查询。\x0d\End Function\x0d\这段代码使用HTML文本字段的Value属性获取字段的数据,代码将打开一个数据库连接、创建一个记录集并返回适当的记录,然后数据被发送给用户。
简单实现:
HtmlRequest类的内容:
[java] view plaincopy
package comcapinfotechnet;
import javaioByteArrayOutputStream;
import javaioIOException;
import javaioInputStream;
import javanet>
HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,基本各种需求都可以满足。比如问题中提到的提取网页文本信息。
用以下代码来实现提取网页文本信息
// 提取网页主要文本内容
public String getContent(){
content=(isHub())getHubEntries():getTopicBlock();
Systemoutprintln("<Content>:");
Systemoutprintln("=========================");
Systemoutprintln(content);
return content;
}
// 提取Hub类网页文本内容,如yahoo,sina等门户网
public String getHubEntries(){
StringBean bean=new StringBean();
beansetLinks(false);
beansetReplaceNonBreakingSpaces(true);
beansetCollapse(true);
try {
parservisitAllNodesWith(bean);
} catch (ParserException e) {
Systemerrprintln("getHubEntries()-->"+e);
}
parserreset();
return beangetStrings();
}
// 获取主题性(Topical)网页文本内容:对于博客等以文字为主体的网页效果较好
public String getTopicBlock(){
HasParentFilter acceptedFilter=new HasParentFilter(new TagNameFilter("p"));
NodeList nodes=null;
try {
nodes=parserextractAllNodesThatMatch(acceptedFilter);
} catch (ParserException e) {
Systemerrprintln("getTopicBlock"+e);
}
StringBuffer sb=new StringBuffer();
SimpleNodeIterator iter=nodeselements();
while(iterhasMoreNodes()){
Node node=iternextNode();
sbappend(nodegetText()+"\n");
}
parserreset();
return sbtoString();
}
另外,要知道的是
HTMLParser的核心模块是orghtmlparserParser类,这个类实际完成了对于HTML页面的分析工作。这个类有下面几个构造函数:
public Parser ();
public Parser (Lexer lexer, ParserFeedback fb);
public Parser (URLConnection connection, ParserFeedback fb) throws ParserException;
public Parser (String resource, ParserFeedback feedback) throws ParserException;
public Parser (String resource) throws ParserException;
public Parser (Lexer lexer);
public Parser (URLConnection connection) throws ParserException;
和一个静态类public static Parser createParser (String html, String charset);
提供几个常用的
对于树型结构进行遍历的函数,这些函数最容易理解:
Node getParent ():取得父节点
NodeList getChildren ():取得子节点的列表
Node getFirstChild ():取得第一个子节点
Node getLastChild ():取得最后一个子节点
Node getPreviousSibling ():取得前一个兄弟(不好意思,英文是兄弟姐妹,直译太麻烦而且不符合习惯,对不起女同胞了)
Node getNextSibling ():取得下一个兄弟节点
取得Node内容的函数:
String getText ():取得文本
String toPlainTextString():取得纯文本信息。
String toHtml () :取得HTML信息(原始HTML)
String toHtml (boolean verbatim):取得HTML信息(原始HTML)
String toString ():取得字符串信息(原始HTML)
Page getPage ():取得这个Node对应的Page对象
int getStartPosition ():取得这个Node在HTML页面中的起始位置
int getEndPosition ():取得这个Node在HTML页面中的结束位置
用于Filter过滤的函数:
void collectInto (NodeList list, NodeFilter filter):基于filter的条件对于这个节点进行过滤,符合条件的节点放到list中。
用于Visitor遍历的函数:
void accept (NodeVisitor visitor):对这个Node应用visitor
用于修改内容的函数,这类用得比较少:
void setPage (Page page):设置这个Node对应的Page对象
void setText (String text):设置文本
void setChildren (NodeList children):设置子节点列表
其他函数:
void doSemanticAction ():执行这个Node对应的 *** 作(只有少数Tag有对应的 *** 作)
Object clone ():接口Clone的抽象函数。
以上知识可以完整处理HTML页面的所有内容
参考资料:
htmlparser官方网站下载地址
>
1、浏览器打开网页,右键-》查看源代码
然后Ctrl+S保存下来
2、打开要保存的网页,直接Ctrl+S,选择“仅HTML”
以上两种方法,选择其一即可。
以上就是关于html怎么获取动态数据全部的内容,包括:html怎么获取动态数据、java获取html内的内容、如何使用htmlparser提取网页文本信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)