⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form.java

📁 本程序可从网上利用百度搜索引擎下载和输入关键词有关的网页
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package spider;

import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;

public class Form 
{
  private  String formString;//form表单流
  private  String url;//地址
 // private  int ID;//类型编号1号--高级搜索,0号--多文本框和单文本框,3--下拉表select,4--选择radio
  private  int type;//类型编号1号--多文本框接口,2号--简单接口,3号--文本框+select/radio的接口
  private  int urlID;//地址
  private  String action;//提交地址
  private  String method="get";//提交方法,get,post,默认是get提交
  private  Map hiddensMap=new HashMap();//hidden,隐藏框
  private  Map inputsMap=null;//普通,选择
  private  Map selectMap=null;//下拉表
  private  Map radiotMap=null;//下拉表
  private  Form GreatSearch=null;//高级搜索
	
	
	public  void makeFormMessage()//组装接口信息
	{
		//System.out.println(formString);
		System.out.println("this.getUrl()");
		this.makeAction();//提取action中的内容
		this.makeMethod();//提取method中的内容
		this.makeType();//设置接口类型并提取其内容
		this.makeHiddens();//设置hidden隐藏框中内容
				
	}
	public  void makeXml()//生成xml文档
	{
		
	}
	
   private void makeType()//设置接口类型并提取其内容
	{
		if(formString.toLowerCase().indexOf("type=\"radio\"")!=-1 || formString.toLowerCase().indexOf("type='radio'")!=-1 || formString.toLowerCase().indexOf("type=radio")!=-1)
		{
			this.type=3;
			this.makeRadio();//提取radio中的内容
		}
		else if(formString.toLowerCase().indexOf("<select")!=-1)
		{
			this.type=3;
			this.makeSelect();//提取select中的内容
		}
		else
		{			
			int InputhasNoTypeNumber=0;			
			String[] formInputArray=formString.split("<input");//用<input></input>标签分割
			for(int sia=1;sia<formInputArray.length;sia++)
			{
				String formInputString=null;//select中的<input>标签中的内容
				int beginIndex=0;
				int endIndex=formInputArray[sia].toLowerCase().indexOf(">");
				formInputString=this.pointThing(beginIndex, endIndex, formInputArray[sia]);//取出select中的<input>标签中的内容
				System.out.println("form中的<input>标签中内容是----"+formInputString);							
				//提取form中的<input>标签中的text文本框name属性的值
				if(formInputString!=null)
				{
					//判断是否是text文本框
					if(formInputString.indexOf("type=\"text\"")!=-1 || formInputString.indexOf("type='text'")!=-1 || formInputString.indexOf("type=text")!=-1)
					{	
						InputhasNoTypeNumber++;
					}
					else
					{
						if(formInputString.toLowerCase().indexOf("type=")!=-1)
						{
							System.out.println("form中的<input>标签中不是text文本框");
						}
						else
						{
							InputhasNoTypeNumber++;
						}						
					}
				}
				else
				{
					System.out.println("form中的<input>标签为空");
				}
			}
			if(1==InputhasNoTypeNumber)
			{
				this.type=2;//单文本框
				this.makeInputs();//提取文本框中的内容
			}
			else
			{
			
				this.type=1;//多文本框
				this.makeInputs();//提取文本框中的内容
			}
			
			
			
			
			
		}
	   System.out.println("表单类型为------"+this.type);
	}
	
	private void makeAction()//提取action中的内容
	{
		if(formString.indexOf("action=")!=-1)//<form></form>标签中有action
		{
			//System.out.println(formString);
			int beginIndex=formString.indexOf("action=")+7;			
			int endIndex=formString.length();
			this.action=this.lotsPointThing(beginIndex,  endIndex, formString);					
			if(this.action.indexOf("http://")!=-1)//action中有http://
			 {
				System.out.println("action是----"+this.action);		
			 }
			else
			{
				if(this.action.startsWith("/"))//action中不是以/开头
				{
					this.action=this.url+this.action;//action等于首地址加action中的内容
					System.out.println("action是----"+this.action);	
				}
				else
				{
					this.action=this.url+"/"+this.action;
					System.out.println("action是----"+this.action);
				}
			}
			if(this.action.indexOf("?")!=-1)//action有?号
			{
				this.makeActionHidden();//调用操作action中的去除&号的函数
			}
			else
			{
				this.action=this.action+"?";
				System.out.println("action是----"+this.action);
			}
			
		}
		else
		{
			System.out.println("创造action失败");
		}				
	}
	
	private void makeActionHidden()//操作action中的去除&号的函数
	{
		if(this.action.indexOf("?")!=-1)//action有?号
		{
			List hiddensList=new ArrayList();	
			Map hiddensValueMap=new HashMap();
			String formInputTextName=null;
			String formInputTextNameValue=null;
			
			String[] actionHasHiddenNameValue=this.action.split("\\?");
			System.out.println("actionHasHiddenNameValue.length----"+actionHasHiddenNameValue.length);
			for(int ahhnv=0;ahhnv<actionHasHiddenNameValue.length;ahhnv++)//问号后面有字符串
			{
			        System.out.println("actionHasHiddenNameValue[1]----"+actionHasHiddenNameValue[ahhnv]);
					if(actionHasHiddenNameValue[ahhnv].indexOf("&")!=-1)//问号后面有&
					{
						String[] hasDengHao=actionHasHiddenNameValue[ahhnv].split("&");							
						for(int u=0;u<hasDengHao.length;u++)
						{
							System.out.println("hasDengHao[u]----"+hasDengHao[u]);
							if(hasDengHao[u].indexOf("=")!=-1)//用&号分割后面没有=号
							{
								String[] dengHaoSplit=hasDengHao[u].split("=");
								if(2==dengHaoSplit.length)
								{
									formInputTextName=dengHaoSplit[0];
									formInputTextNameValue=dengHaoSplit[1];
									hiddensList.add(formInputTextName);
									hiddensValueMap.put(formInputTextName, formInputTextNameValue);
								}
							}
							else
							{
								System.out.println("用&号分割后面没有=号");
							}
						}
					}//问号后面没有&											
					else
					{
						if(actionHasHiddenNameValue[ahhnv].indexOf("=")!=-1)//有=号
						{
							String[] dengHaoSplit=actionHasHiddenNameValue[ahhnv].split("=");
							if(2==dengHaoSplit.length)
							{
								formInputTextName=dengHaoSplit[0];
								formInputTextNameValue=dengHaoSplit[1];
								hiddensList.add(formInputTextName);
								hiddensValueMap.put(formInputTextName, formInputTextNameValue);
							}
						}
						else//没有=号
						{
							System.out.println("用&号分割后面没有=号");
						}
					}
			}
			if(hiddensList.size()>0)
			{
				hiddensMap.put("hiddensList", hiddensList);	
				hiddensMap.put("hiddensValueMap", hiddensValueMap);
			}
			else
			{
				System.out.println("form中的<input>标签中没有hidden文本框");
			}
			
				this.action=actionHasHiddenNameValue[0]+"?";
				System.out.println("action是----"+this.action);									
		}			
		else//action中没有?
		{
			this.action=this.action+"?";
			System.out.println("action是----"+this.action);
		}			
	}
	
	private void makeMethod()//提取method中的内容
	{
		if(formString.indexOf("method=")!=-1)
		{
			//System.out.println(formString);
			int beginIndex=formString.indexOf("method=")+7;
			int endIndex=formString.length();
			this.method=this.lotsPointThing(beginIndex,  endIndex, formString);
		}
		else
		{
			System.out.println("创造method失败");
		}
	}
	
	private void makeHiddens()//设置接口类型并提取其内容
	{
	    
		if(formString.indexOf("type=\"hidden\"")!=-1 || formString.indexOf("type='hidden'")!=-1  || formString.indexOf("type=hidden")!=-1)
		{
			List hiddensList=new ArrayList();	
			Map hiddensValueMap=new HashMap();
			
			
			String[] formInputArray=formString.split("<input");//用<input></input>标签分割
			//System.out.println(formInputArray.length);
			for(int sia=1;sia<formInputArray.length;sia++)
			{
				String formInputString=null;//form中的<input>标签中的内容
				int beginIndex=0;
				int endIndex=formInputArray[sia].indexOf(">");
				formInputString=this.pointThing(beginIndex, endIndex, formInputArray[sia]);//取出select中的<input>标签中的内容
				System.out.println("form中的<input>标签中内容是----"+formInputString);
							
				//提取form中的<input>标签中的hidden文本框name属性和它的值的值
				if(formInputString!=null)
				{
					//判断是否是text文本框
					if(formInputString.indexOf("type=\"hidden\"")!=-1 || formInputString.indexOf("type='hidden'")!=-1 || formString.indexOf("type=hidden")!=-1)
					{	
						String formInputTextName=null;//form中的<input>标签中的hidden文本框name
						String formInputTextNameValue=null;//form中的<input>标签中的hidden文本框name属性的值
						beginIndex=formInputString.indexOf("name=")+5;
						endIndex=formInputString.length();
						formInputTextName=this.lotsPointThing(beginIndex,  endIndex, formInputString);					
						System.out.println("form中的<input>标签中的hidden文本框name是----"+formInputTextName);					
						hiddensList.add(formInputTextName);		
						
						if(formInputString.indexOf("value=")!=-1)
						{
							beginIndex=formInputString.indexOf("value=")+6;
							endIndex=formInputString.length();
							formInputTextNameValue=this.lotsPointThing(beginIndex,  endIndex, formInputString);					
							hiddensValueMap.put(formInputTextName, formInputTextNameValue);
							System.out.println("form中的<input>标签中的hidden文本框name属性的值是----"+formInputTextNameValue);			
						}
					}
					else
					{
						System.out.println("form中的<input>标签中没有hidden文本框");	
						
					}
				}
				else
				{
					System.out.println("form中的<input>标签为空");
				}
			}
			if(hiddensList.size()>0)
			{
				hiddensMap.put("hiddensList", hiddensList);	
				hiddensMap.put("hiddensValueMap", hiddensValueMap);
			}
			else
			{
				System.out.println("form中的<input>标签中没有hidden文本框");
			}
					
		}
	}
	
	private void makeInputs()//提取文本框中的内容
	{
		int InputhasNoTypeNumber=0;
		inputsMap=new HashMap();
		List inputsList=new ArrayList();	
		
		String[] formInputArray=formString.split("<input");//用<input></input>标签分割
		//System.out.println(formInputArray.length);
		for(int sia=1;sia<formInputArray.length;sia++)
		{
			String formInputString=null;//select中的<input>标签中的内容
			int beginIndex=0;
			int endIndex=formInputArray[sia].indexOf(">");
			formInputString=this.pointThing(beginIndex, endIndex, formInputArray[sia]);//取出select中的<input>标签中的内容
			System.out.println("form中的<input>标签中内容是----"+formInputString);
						
			//提取form中的<input>标签中的text文本框name属性的值
			if(formInputString!=null)
			{
				//判断是否是text文本框
				if(formInputString.indexOf("type=\"text\"")!=-1 || formInputString.indexOf("type='text'")!=-1 || formInputString.indexOf("type=text")!=-1)
				{	
					String formInputTextName=null;//form中的<input>标签中的text文本框name属性的值
					beginIndex=formInputString.indexOf("name=")+5;
					endIndex=formInputString.length();
					formInputTextName=this.lotsPointThing(beginIndex,  endIndex, formInputString);					
					System.out.println("form中的<input>标签中的text文本框name属性的值是----"+formInputTextName);					
					inputsList.add(formInputTextName);					
				}
				else
				{
					if(formInputString.indexOf("type=")!=-1)
					{
						System.out.println("form中的<input>标签中不是text文本框");
					}
					else
					{
						String formInputTextName=null;//form中的<input>标签中的text文本框name属性的值
						System.out.println("------------"+formInputString);
						if(formInputString.indexOf("name=")!=-1)//有name
						{
							beginIndex=formInputString.indexOf("name=")+5;
							endIndex=formInputString.length();							
							formInputTextName=this.lotsPointThing(beginIndex,  endIndex, formInputString);
							System.out.println("form中的<input>标签中的text文本框name属性的值是----"+formInputTextName);							
							inputsList.add(formInputTextName);	
						}
						InputhasNoTypeNumber++;
						
					}
					
				}
			}
			else
			{
				System.out.println("form中的<input>标签为空");
			}
		}
		
		inputsMap.put("inputsList", inputsList);
		

		
	}


	private void makeRadio()//提取select中的信息
	{
		radiotMap=new HashMap();
		List radioList=new ArrayList();
		
		if(formString.indexOf("type=\"radio\"")!=-1 || formString.indexOf("type='radio'")!=-1 ||formString.indexOf("type=radio")!=-1)
		{
			//提取<form></form>中的<input>标签中的内容
			String[] formInputArray=formString.split("<input");//用<input标签分割
			for(int sia=1;sia<formInputArray.length;sia++)
			{
				String formInputString=null;//select中的<input>标签中的内容
				int beginIndex=0;
				int endIndex=formInputArray[sia].indexOf(">");
				formInputString=this.pointThing(beginIndex, endIndex, formInputArray[sia]);//提取<form></form>标签中的<input>标签中的内容
				//System.out.println("form中的<input>标签中的值是----"+formInputValue);
				//<form></form>中的<input>标签中的内容不为空
				if(formInputString!=null)
				{
					//提取form中的<input>标签中的text文本框value属性的值
					if(formInputString.indexOf("type=\"text\"")!=-1 || formInputString.indexOf("type='text'")!=-1 || formInputString.indexOf("type=text")!=-1)
					{	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -