`
water84222
  • 浏览: 369427 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

HtmlParase解析html文件

阅读更多

    第一次使用htmlparser到现在已经有4个月了。现在想整理一下,备忘。

package epson;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.Tag;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.filters.OrFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.BodyTag;
import org.htmlparser.tags.HeadTag;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.MetaTag;
import org.htmlparser.tags.TableColumn;
import org.htmlparser.tags.TableRow;
import org.htmlparser.tags.TableTag;
import org.htmlparser.tags.TitleTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.util.SimpleNodeIterator;
import org.htmlparser.visitors.TextExtractingVisitor;


public class HtmlAnalysis {
    /**
     * @param args
     */
    private String metaDataString;
    private String title;
    private String charset;
    private String contentType;
    private String content;
    private String link;
    
    
    private String localPath ;
    private Parser parser = null;
    private String htmlsource=null;
    
    public static final String META_KEYWORDS="keywords";
    public static final String META_AUTHOR="author";
    public static final String META_DESCRIPTION="description";
    public static final String META_HTTP_EQUIV="http-equiv";
    
    public HtmlAnalysis(String htmlsource){
    	this.htmlsource = htmlsource; 
    }
    
    public HtmlAnalysis(File htmlsource){
    	
    	try{
    	String resource = this.getContentByLocalFile(htmlsource);
    	this.htmlsource = resource;
    	}catch(Exception e){
    		
    	}
    }
    
    public void init() throws Exception{
    	try{
    	parser = new Parser(this.htmlsource);
    	}catch(Exception e){
    		throw e;
    	}
    }
    
    
    public String getMetaKeywords(){
    	String metaKeywords = "";
        	
    	try {
			NodeFilter nt = new NodeClassFilter(MetaTag.class) ;
			NodeList nodeList = parser.parse(nt);
			for (int i = 0 ; i< nodeList.size(); i++) {
				MetaTag mt =(MetaTag) nodeList.elementAt(i) ;
				String cont  = mt.getAttribute("name") ;
				
				if (cont!=null && cont.equalsIgnoreCase("Keywords")) {
					metaKeywords = mt.getAttribute("content");
					break;
				}
			}
		} catch (ParserException e) {
			e.printStackTrace();
		}
    	return metaKeywords;
    }

    public String getTitle() {
    	String title="";
       	
    	try {
			NodeFilter nt = new NodeClassFilter(TitleTag.class) ;
			NodeList nodeList = parser.parse(nt);
			for (int i = 0 ; i< nodeList.size(); i++) {
                TitleTag titlenode = (TitleTag) nodeList.elementAt(i) ;
                title = titlenode.getTitle();
                break;
			}    
		} catch (ParserException e) {
			e.printStackTrace();
		}

        return title;
    }

    public String getBody() {
    	String body="";
       	
    	try {
		NodeFilter nt = new NodeClassFilter(BodyTag.class) ;
		NodeList nodeList = parser.parse(nt);
		for (int i = 0 ; i< nodeList.size(); i++) {
                   BodyTag bodynode = (BodyTag) nodeList.elementAt(i) ;
                   body = bodynode.getChildrenHTML();
                   break;
		}    
		} catch (ParserException e) {
			e.printStackTrace();
		}

        return body;
    }

    public String getBodyOnload() {
    	String bodyonload=""; 	
    	try {
			NodeFilter nt = new NodeClassFilter(BodyTag.class) ;
			NodeList nodeList = parser.parse(nt);
			for (int i = 0 ; i< nodeList.size(); i++) {
				BodyTag bodynode = (BodyTag) nodeList.elementAt(i) ;
				bodyonload = bodynode.getAttribute("onload");
                               break;
			}  
            
		} catch (ParserException e) {
			e.printStackTrace();
		}

        return bodyonload;
    }    
    
    public String getHeadInfo() {
    	String head="";
       	
    	try {
			NodeFilter nt = new NodeClassFilter(HeadTag.class) ;
			NodeList nodeList = parser.parse(nt);
            
			HeadTag headnode = null;
			for (int i = 0 ; i< nodeList.size(); i++) {
				headnode = (HeadTag) nodeList.elementAt(i) ;
				break;
			}  
			
			
			if(headnode !=null){
				SimpleNodeIterator tag = headnode.children();
				int i=0;
				while(tag.hasMoreNodes()){
					Node node =tag.nextNode();
					if((node instanceof MetaTag) || node instanceof TitleTag){
						headnode.removeChild(i);
					}
					
					i++;
				}
			}
			
			head = headnode.getChildrenHTML();
            
            
		} catch (ParserException e) {
			e.printStackTrace();
		}

        return head;
    } 
    
    
    public String getMetaInfo(String keytype){
    	String metaInfo = "";
        	
    	try {
    		
			NodeFilter nt = new NodeClassFilter(MetaTag.class) ;
			NodeList nodeList = parser.parse(nt);
			
    		if(META_KEYWORDS.equalsIgnoreCase(keytype)
    			||
    			META_AUTHOR.equalsIgnoreCase(keytype)
    			||
    			META_DESCRIPTION.equalsIgnoreCase(keytype))
    		{

				for (int i = 0 ; i< nodeList.size(); i++) {
					MetaTag mt =(MetaTag) nodeList.elementAt(i) ;
					String cont  = mt.getAttribute("name") ;
					
					if (cont!=null && cont.equalsIgnoreCase(keytype)) {
						metaInfo = mt.getAttribute("content");
						break;
					}
				}
    		}else if(META_HTTP_EQUIV.equals(keytype)){
				for (int i = 0 ; i< nodeList.size(); i++) {
					MetaTag mt =(MetaTag) nodeList.elementAt(i) ;
					String cont  = mt.getAttribute("http-equiv") ;
					
					if (cont!=null && cont.equalsIgnoreCase(keytype)) {
						metaInfo = mt.getAttribute("content");
						break;
					}
				}
    		}else{
				for (int i = 0 ; i< nodeList.size(); i++) {
					MetaTag mt =(MetaTag) nodeList.elementAt(i) ;
					String cont  = mt.getAttribute("name") ;
					
					if (cont!=null) {
						
						if(META_KEYWORDS.equalsIgnoreCase(cont)
				    			||
				    			META_AUTHOR.equalsIgnoreCase(cont)
				    			||
				    			META_DESCRIPTION.equalsIgnoreCase(cont)){
							
							//
						}else{
							String tempmetaInfo = mt.getAttribute("content");
							metaInfo +="<"+cont+">"+tempmetaInfo+"</"+cont+">";
						}
							
						
					}
				}
    			
    		}
    		
    		
		} catch (ParserException e) {
			e.printStackTrace();
		}
    	return metaInfo;
    }
    
    
    public String  getContentByLocalFile (File path) throws IOException {
    	StringBuffer sbStr = new StringBuffer();
    	BufferedReader reader = null ;
    	String result = null ;
		try {
			reader = new BufferedReader(new FileReader(path));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		String temp = "";
		while((temp=reader.readLine())!=null)
		  {
		   sbStr.append(temp);
		   sbStr.append("\r\n");
		  }
		  reader.close();
		  result = sbStr.toString();
    	return result ;
    }

    
    public String getContentByUrl(String url){
    	return null ;
    }
    
    public void getmetaDataByVistor() {
    }

    public String getURLContent(String Url) {
        Parser parser = null;

        try {
            parser = new Parser(Url);
            String a="";
            parser = new Parser(a);
            TextExtractingVisitor visitor = new TextExtractingVisitor();
            parser.visitAllNodesWith(visitor);
            content = visitor.getExtractedText();
        } catch (ParserException e1) {
            e1.printStackTrace();
        }

        return content;
    }
    public NodeList getDiv(){
    	  NodeList nodelist=null;
    	  NodeFilter[] nodeFilter=new NodeFilter[2];
    	  try{
    	   parser.setEncoding("GB2312");//set encode
    	   TagNameFilter divFilter=new TagNameFilter("div");//get the table content
    	   HasAttributeFilter divAttribute=new HasAttributeFilter("id","Cont_13");//hava the attribute "bgcolor"
    	   nodeFilter[0]=divFilter;
    	   nodeFilter[1]=divAttribute;
    	   AndFilter andFilter=new AndFilter(nodeFilter);//to link the three filter that above together
    	   nodelist=parser.extractAllNodesThatMatch(andFilter);//get the result that fit for the filter
    	  }catch(Exception e){
    	   e.printStackTrace();
    	  }
    	  return nodelist;
    }
    public NodeList getTable() throws ParserException{
    	NodeList nodelist=null;
    	String dd = getDiv().toHtml();
    	Parser parser2 = new Parser(dd);
    	TagNameFilter tableFilter=new TagNameFilter("table");
    	nodelist = parser2.extractAllNodesThatMatch(tableFilter);
    	String htmlresult ="";
    	for (int i = 0; i <= nodelist.size(); i++) {
            if (nodelist.elementAt(i) instanceof TableTag) {
                TableTag tag = (TableTag) nodelist.elementAt(i);
                TableRow[] rows = tag.getRows();

                for (int j = 0; j < rows.length; j++) {
                    TableRow tr = (TableRow) rows[j];
                    TableColumn[] td = tr.getColumns();
                    for (int k = 0; k < td.length; k++) {
                    	String result = td[k].toPlainTextString().trim().replace("\t", "");
                    	if(k==0){
                    		htmlresult += "<title>"+result+"</title>";
                    	}
                    	else
                    		htmlresult += "<id>"+result+"</id>";
                    }
                }
            }
        }
    	System.out.println(htmlresult);
		return nodelist;
    }
    public void testTable() {
//        Parser myParser;
        NodeList nodeList = null;
//        myParser = Parser.createParser("<body> " + "<table id=’table1′ >"
//                + "<tr><td>1-11</td><td>1-12</td><td>1-13</td>"
//                + "<tr><td>1-21</td><td>1-22</td><td>1-23</td>"
//                + "<tr><td>1-31</td><td>1-32</td><td>1-33</td></table>"
//                + "<table id=’table2′ >"
//                + "<tr><td>2-11</td><td>2-12</td><td>2-13</td>"
//                + "<tr><td>2-21</td><td>2-22</td><td>2-23</td>"
//                + "<tr><td>2-31</td><td>2-32</td><td>2-33</td></table>"
//                + "</body>", "GBK");
        NodeFilter tableFilter = new NodeClassFilter(TableTag.class);
        OrFilter lastFilter = new OrFilter();
        lastFilter.setPredicates(new NodeFilter[] { tableFilter });
        try {
            nodeList = parser.parse(lastFilter);
            for (int i = 0; i <= nodeList.size(); i++) {
                if (nodeList.elementAt(i) instanceof TableTag) {
                    TableTag tag = (TableTag) nodeList.elementAt(i);
                    TableRow[] rows = tag.getRows();

                    for (int j = 0; j < rows.length; j++) {
                        TableRow tr = (TableRow) rows[j];
                        TableColumn[] td = tr.getColumns();
                        for (int k = 0; k < td.length; k++) {
                            System.out.println("<td>" + td[k].toPlainTextString());
                        }

                    }

                }
            }

        } catch (ParserException e) {
            e.printStackTrace();
        }
    }
    public String getImg() {
    	String img="";
    	ImageTag imgnode=null;
    	File file = new File("e:\\test\\jsp\\jsp\\test1.htm");
    	String imgRealPath="";
    	if(file.exists())
    	{  
    		file.delete();  
    		try 
    		{
				file.createNewFile();
			} catch (IOException e) 
			{
				e.printStackTrace();
			}  
    	}else{  
			  try 
			  {
				file.createNewFile();
			  } catch (IOException e) {
				e.printStackTrace();
//					 TODO Auto-generated catch block
			  }  
    	}   
    	try {
			NodeFilter nt = new NodeClassFilter(ImageTag.class) ;
			
			//BufferedWriter writer = new BufferedWriter(new OutputStreamWriter (new FileOutputStream (file)));
			NodeList nodeList = parser.parse(nt);
			
			for (int i = 0 ; i< nodeList.size(); i++){
				int num=0;
				imgnode = (ImageTag)nodeList.elementAt(i);
                img = imgnode.getImageURL();
                System.out.println(img);
               /* String[] filePath = file.getParent().split("\\\\");
                String[] imgPath = img.split("/");
                System.out.println(img+"  "+file.getParent());
                for(int j=0;j<imgPath.length;j++)
                {
                	if(imgPath[j].equals(".."))
                	{	
                		num++;
                	}
                }
                System.out.println(img.indexOf(":")+"img.indexOf(:)"+img);
                if(img.indexOf(":")!=-1)
                {
                	imgRealPath=img;
                }
                else if(num>1)
                {
                	System.out.println("img before replace"+img);
                	img = img.replace("../","");
                	System.out.println("img num>1"+img+num);
                	imgRealPath = filePath[filePath.length-1-num]+"/"+img;
                	while((filePath.length-1-num)>0)
                	{
                		num++;
                		imgRealPath = filePath[filePath.length-1-num]+imgRealPath;
                	}
                	System.out.println("imgRealPath"+imgRealPath+(filePath.length-1-num));
                }
                else if(imgPath[0].equals("."))
                {
                	System.out.println(file.getParent()+"imgPath[0].equals(.)");
                	img = img.replace("./","");
                	imgRealPath=file.getParent()+"\\"+img;
                }
                else
                {
	                for(int j=0;j<imgPath.length;j++)
	                {
	                	if(imgPath[j].equals(".."))
	                	{
	                		imgPath[j] = (String)( imgPath[j].replace("..",filePath[j+1]));
	                		System.out.println(imgPath[j]);
	                	}
	                	if(!imgPath[j].equals(""))
	                		imgRealPath += "/"+imgPath[j];
	                }
	                imgRealPath=filePath[0]+imgRealPath;
                }
                imgRealPath = imgRealPath.replaceAll("\\\\","/");
                imgnode.setImageURL(imgRealPath);
                imgRealPath="";
                writer.write(imgnode.toHtml()); */
			}  
			//writer.flush();
           // writer.close ();  
		} catch (Exception e) {
			e.printStackTrace();
		}
        return imgRealPath;
    }

    public static void main(String[] args) {
    	HtmlAnalysis htmlAnalysis= new HtmlAnalysis(new File("f:\\test.html")); 
    	try{
    		htmlAnalysis.init();
//    		System.out.println(htmlAnalysis.getMetaInfo("keywords"));
//    		htmlAnalysis.parser.reset();
//    		System.out.println(htmlAnalysis.getMetaInfo("author"));
//    		htmlAnalysis.parser.reset();
//    		System.out.println(htmlAnalysis.getMetaInfo("description"));
//    		htmlAnalysis.parser.reset();
//    		System.out.println(htmlAnalysis.getMetaInfo("other"));
//    		htmlAnalysis.parser.reset();
    		//System.out.println(htmlAnalysis.getTitle());
    		//htmlAnalysis.parser.reset();
    		//System.out.println(htmlAnalysis.getHeadInfo());
    		htmlAnalysis.getTable();
//    		htmlAnalysis.testTable();
    	}catch(Exception e){
    		
    	}

    }
    
    public static void visitTag(Tag tag) {
        if (tag.getAttribute("class") != null) {
            System.out.println(" " + tag.getTagName() +
                tag.getAttribute("class"));
        }
    }
    
    

    public String getCharset() {
        return charset;
    }

    public void setCharset(String charset) {
        this.charset = charset;
    }

    public String getContentType() {
        return contentType;
    }

    public void setContentType(String contentType) {
        this.contentType = contentType;
    }

    public String getMetaDataString() {
        return metaDataString;
    }

    public void setMetaDataString(String metaDataString) {
        this.metaDataString = metaDataString;
    }



    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

 

分享到:
评论
1 楼 menglinxi 2009-09-29  
org.htmlparser   似乎不能对域名中包含特殊字符的连接进行抓取:如http://www.oj-sz.com,会出现
org.htmlparser.util.ParserException: Exception getting input stream from http://www.oj-sz.com/ (Not in GZIP format).;
java.io.IOException: Not in GZIP format。

相关推荐

    httpClient&htmlParase

    下载了几个抓包的jar包,httpClient和htmlParase包,以及连个淘宝包

    Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar

    Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rarJava开发案例-springboot-19-校验表单重复提交-源代码+文档.rar Java开发案例-springboot-19-校验表单重复提交-源代码+文档.rar

    基于android的公司员工考勤综合信息平台源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    珍藏很久的一套源码升级了很多

    很强大的阿凤飞飞的身份就把饭啦啊开房记录看妇科阿里看到就考虑是否就解放路口空间按时到路口附近开了房间卡拉的时间分开垃圾的浪费空间按可浪费阿克纠纷的看了觉得空房间看大神经费卡上的减肥快接啊看来积分卡时间分开拉丝机房里看见啦开恐怕为日文名弄法卡上的健康饭卡里解放开了哈嘎考虑对方好几万呢uaho时到路口附近开了房间卡拉的时间分开垃圾的浪费空间按可浪费阿克纠纷的看了觉得空房间看大神经费卡上的减肥快接啊看来积分卡时间分开拉丝机房里看见啦开恐怕为日文名弄法卡上的健康饭卡里解放开了哈嘎考虑对方好几万呢uaho上的健康饭卡里解放开了哈嘎考虑对方好几万呢uaho时到路口附近开了房间卡拉的时间分开垃圾的浪费空间按可浪费阿克纠纷的看了觉得空房间看大神经费卡上的减肥快接啊看来积分卡时间分开拉丝机房里看见啦开恐怕为日文名弄法卡上的健康饭卡里解放开了哈嘎考虑对方好几万呢uaho垃圾的浪费空间按可浪费阿克纠纷的看了觉得空房间看大神经费卡上的减肥快接啊看来积分卡时间分开拉丝机房里看见啦开恐怕为日文名弄法卡上的健康饭卡里解放开了哈嘎考虑对方好几万呢uaho上的健康饭卡里解放开了哈嘎考虑对方好几万呢uaho时到路口附近开

    附件二六个指标与权重得分 - 副本.xlsx

    附件二六个指标与权重得分 - 副本

    自学助词自学助词自学助词

    自学助词自学助词自学助词

    ipywidgets-7.7.3.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Seay PHP代码审计工具2.1公测版.rar

    Seay PHP代码审计工具是一个专门用于审核PHP代码安全性的工具,以下是关于该工具的一些关键信息: 功能特性: 源码浏览:允许用户通过文件列表浏览源代码,并可直接查看和分析含有特定关键字的代码。 关键字扫描:支持单个关键字扫描,方便查找特定模式的代码。 函数扫描:可以批量扫描指定的函数,检查其使用是否安全。 正则匹配:使用正则表达式进行批量匹配,提供高精度和高效率的扫描。 代码审计:自动化审计功能帮助检测常见的安全漏洞,如SQL注入、代码执行、命令执行等。 插件扩展:可能支持通过插件扩展审计功能。 自定义规则:允许用户配置自定义的审计规则。 代码调试:可能包含代码调试功能,帮助理解代码行为。 数据库执行监控:可能有监控数据库操作的功能,以检测潜在的安全问题。 安装与使用: Seay工具通常需要在Windows环境下运行,可能依赖.NET组件。 安装过程相对简单,一般提供一键安装或绿色版,无需复杂配置即可使用。 适用场景: 主要适用于PHP项目的安全测试和代码审查,尤其是对于需要确保代码安全性的开发者和安全分析师。

    app-debug(1).apk

    app-debug(1).apk

    seL4内核参考⼿册4.0.9(中文)

    seL4微内核是⼀个操作系统内核, 它被设计为能为⼴泛的应⽤领域提供安全、 可靠的操作 基础。 作为微内核, 它只为应⽤程序提供了少量的服务, ⽐如创建和管理虚拟地址空间、 线程以及进程间通信(IPC)的抽象等, 少量的服务直接决定了其⼤约仅8700⾏C代码的⼩的 实现。 这就能够让ARMv6版本的内核可以通过Isabelle/HOL理论模型, 遵循明确的规范进 ⾏形式化证明, 进⽽验证了内核的强制完整性和保密性。 内核的⼩尺⼨也有助于对最坏情 况下执⾏时间(WCET)进⾏完整合理的分析 。 虽然我们已经努⼒确保本⼿册准确反映了seL4内核的⾏为, 但本⽂档绝不是内核的正式规 范。 当需要知道内核在特定情况下的精确⾏为时, ⽤⼾应该参考seL4抽象规范, 它给出了 seL4内核的正式描述。

    Highlight Plus 2D 3.5.2

    Highlight Plus 2D为2D或3D场景中的任何精灵添加轮廓、发光、透明、叠加、阴影和缩放效果。 Highlight Plus 2D的设计考虑了平台兼容性和性能: 兼容Mac、Windows、安卓、iOS、WebGL。 兼容内置、URP(正向和2D渲染器)和HDRP管道。 兼容VR(多通道和单通道)。 移动设备上运行速度超快。 ** 视觉特征 ** - 发光颜色、宽度、alpha、动画速度、抖动、多色。 - 轮廓颜色、阿尔法通道和宽度。 - 叠加颜色、阿尔法通道和动画速度。 - 透明效果强度、色调和alpha。 - 击打/闪光效果,具有自定义颜色、强度和淡出持续时间。 - 悬停时缩放。 - 2D和3D阴影。 **其他功能** - 使用带有SpriteRenderer组件的单个和基于图集的精灵。 - 适用于四边形游戏对象(具有纹理的四边形)。 - 与基于Spine的动画网格渲染器一起使用。 - 支持动画(SpriteSkin),变换和自定义轴心。 - 预览效果在编辑器中(无需进入播放模式)。 - 将单个或一组子图形高亮显示为单个对象。

    自建房图纸规划局新农村建房(水、电)-t3.dwg

    自建房图纸规划局新农村建房(水、电)_t3.dwg

    Java基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zip

    【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! Java基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zipJava基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zipJava基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zipJava基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zipJava基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zipJava基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zipJava基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zipJava基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zipJava基于安卓系统开发的时间管理软件APP源码+设计报告+apk安装包.zip

    2D超声图像人工智能模型智能分割

    这个完整工程给出对2D图像的处理,以及建立人工智能模型对图像进行智能分割,并对程序有详细说明,可作为熟悉该工程的学习资料。

    可用于恢复删除文件的软件

    可用于恢复删除文件的软件

    grpcio-1.44.0-cp39-cp39-manylinux2010_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于Java的微信小游戏消灭星星的设计与实现源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    ipywidgets-8.0.0a1.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于3D-CNN的暴力行为检测python源码+文档说明+实验报告(高分项目)

    基于3D-CNN的暴力行为检测python源码+文档说明+实验报告(高分项目)本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。基于3D-CNN的暴力行为检测python源码+文档说明

    模拟电子技术课程设计-基于LM324的电路仿真设计

    模拟电子技术课程设计,主要任务是使用通用四运放芯片LM324构建电路实现特定功能,包括信号的加法、滤波和比较。电路设计要求接收一个500Hz的正弦波信号ui1,并与自制振荡器产生的信号uo1相加,经过反相加法器得到输出ui2,然后通过低通滤波器滤除uo1的频率分量,得到峰峰值为9V的正弦波信号uo2。最后,经过滞回比较器处理,得到峰峰值为2V的方波信号uo3。电路设计中还特别强调了电源的选择限制以及测试端子的预留。文档还提供了电路的仿真结果,包括三角波、加法器、滤波器和比较器的输出波形,这些仿真结果展示了电路设计的理论波形与实际仿真波形之间的对比,以及电路的稳定性和误差情况。

Global site tag (gtag.js) - Google Analytics