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

📄 main.java

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


package spider;

import spider.SaveToDataBase;
import spider.photoOperate;
import spider.PageOperate;
import spider.FormOperate;
import spider.FOperator;
import spider.Form;
import spider.FileOperate;

import java.net.*;
import java.io.*;
import java.util.*;

public class Main
{

	public static void main(String[] args) //网页操作,把网页地址和图片地址保存到数据库,并保存网页到文件夹 		
	{
	 		
/*		
	//提交搜索关键字到搜索引擎,保存下一页到数据库表baidu中		
    //插入第一页url地址
    SaveToDataBase std=new SaveToDataBase();//操作数据库类
    //std.setSearchWord("图书");
    PageOperate MyPageOperate=new PageOperate();
    MyPageOperate.setMyUrl("http://www.baidu.com/s?wd=","西游记 出版社");//设置要连接的url地址,设置搜索时的前缀和搜索的关键词      
    MyPageOperate.setHtml(); //此方法中处用到了私有变量myUrl,从指定的网址取得html字符流设置myHtml  
    String nextPage=MyPageOperate.nextPageUrl("http://www.baidu.com/", "href=", "下一页"); //返回一个下一页的url地址
    String insertOneSql="insert into baidu(myurl) values('"+nextPage+"')";
    String selectOneSql="select * from baidu where myurl='"+nextPage+"'";
    std.operateInsertOneSql(insertOneSql,selectOneSql);//下一页的url地址插入到数据库baidu表中
    //循环插入下一页url地址
    for(int nt=0;nt<1;nt++)//可确定具体多少页
    {
    	MyPageOperate.setMyUrl(nextPage);
    	MyPageOperate.setHtml(); //此方法中处用到了私有变量myUrl,从指定的网址取得html字符流设置myHtml
    	nextPage=MyPageOperate.nextPageUrl("http://www.baidu.com/", "href=", "下一页"); //返回一个下一页的url地址
    	insertOneSql="insert into baidu(myurl) values('"+nextPage+"')";
        selectOneSql="select * from baidu where myurl='"+nextPage+"'";
    	std.operateInsertOneSql(insertOneSql,selectOneSql);//下一页的url地址插入到数据库baidu表中  
    }
    //end 提交搜索关键字到搜索引擎,保存下一页到数据库表baidu中

*/
		
	/*	
	  //从baidu表中取出地址,分析下一页,保存到baidu表
		  //操作baidu表,从baidu表中提取一个url地址,连接地址,并分析网页,从中提取下一页的地址,保存到baidu表中
		   for(int number=1;number<2;number++)
			{
				  try//出现任何情况都要循环到底 
					 {								  
					  int j=number;	  
					  SaveToDataBase std=new SaveToDataBase();//操作数据库类
					  PageOperate MyPageOperate=new PageOperate();//操作页面类
					  std.setWhichUrl(j);//指定要提取的id号
					  std.setUrls("baidu");//指定要丛哪个表提数据
					  String myUrl= std.outPutOneUrl();	//从表中提取一个url地址			 				 				  				  				  								  
					  MyPageOperate.setMyUrl(myUrl);//设置要连接的url地址									 
					  MyPageOperate.setHtml(); //此方法中处用到了私有变量myUrl,从指定的网址取得html字符流设置myHtml					 				    
	                 // MyPageOperate.setHtml(); //此方法中处用到了私有变量myUrl,从指定的网址取得html字符流设置myHtml  
	                  String nextPage=MyPageOperate.nextPageUrl("http://www.baidu.com/", "href=", "下一页"); //返回一个下一页的url地址nextPageUrl("http://www.google.cn/", "href=", "下一页");//
	                  String insertOneSql="insert into baidu(myurl) values('"+nextPage+"')";
	                  String selectOneSql="select * from baidu where myurl='"+nextPage+"'";
	                  std.operateInsertOneSql(insertOneSql,selectOneSql);//下一页的url地址插入到数据库baidu表中
	              //循环插入下一页url地址
	                  for(int nt=0;nt<75;nt++)//可确定具体多少页
	                   {
	                  	MyPageOperate.setMyUrl(nextPage);
	                  	MyPageOperate.setHtml(); //此方法中处用到了私有变量myUrl,从指定的网址取得html字符流设置myHtml
	                  	nextPage=MyPageOperate.nextPageUrl("http://www.baidu.com/", "href=", "下一页"); //返回一个下一页的url地址
	    	            insertOneSql="insert into baidu(myurl) values('"+nextPage+"')";
	    	            selectOneSql="select * from baidu where myurl='"+nextPage+"'";
	    	            std.operateInsertOneSql(insertOneSql,selectOneSql);//下一页的url地址插入到数据库baidu表中  
	                   }					 					 					 
					}
					catch(Exception e) 
					{ System.out.println("循环异常结束"); }
				  
			  }
		   System.out.println("----------操作完成"); 
		   //end 操作baidu表,从表中提取一个url地址,连接地址,保存网页,并分析网页,从中提取具体网页的地址,保存到
				
	
	
		
		
	      //操作baidu表和urls表,从baidu表中提取一个url地址,连接地址,并分析网页,从中提取具体网页的地址,保存到urls表中
			   for(int number=1;number<77;number++)
				{
					  try//出现任何情况都要循环到底 
						 {						 
						  int j=number;	  
						  SaveToDataBase std=new SaveToDataBase();//操作数据库类
						  PageOperate MyPageOperate=new PageOperate();//操作页面类
						  std.setSearchWord("牡丹亭");
						  std.setWhichUrl(j);//指定要提取的id号
						  std.setUrls("baidu");//指定要丛哪个表提数据
						  String myUrl= std.outPutOneUrl();	//从表中提取一个url地址			 				 				  				  				  								  
						  MyPageOperate.setMyUrl(myUrl);//设置要连接的url地址									 
						  MyPageOperate.setHtml(); //此方法中处用到了私有变量myUrl,从指定的网址取得html字符流设置myHtml
						  MyPageOperate.setHttpList("href=");//从httl页面中提取url存放到LIst中,用特定的词splitWord分割网页				  		  
						  std.setUrlList(MyPageOperate.getMyListHttp());
						  std.saveUrlToDataBase();//把urlList中的符合条件的oneUrl保存到数据库表urls中
						  System.out.println("操作完第"+j+"个网页");
						}
						catch(Exception e) 
						{ System.out.println("循环异常结束"); }					  
				  }
			   System.out.println("----------操作完成"); 
			 
			   //end 操作baidu表,从表中提取一个url地址,连接地址,保存网页,并分析网页,从中提取具体网页的地址,保存到
				
		
		*/
		
		


	//操作urls表,从表中提取一个url地址,连接地址,并分析网页,查看是否有表单,有则保存网页到指定的文件中,	
	
		//从urls表中取出若干个符合条件的Url
		String urls_sql="select ID from urls where ID>=5872 and ID<5972 order by ID";//) and zhen=1";
		Map IDMap=new HashMap();
		List IDList=new ArrayList();
		SaveToDataBase IDstd=new SaveToDataBase();//操作数据库类
		IDMap=IDstd.selectIDFromUrls(urls_sql);
		IDList=(List)IDMap.get("IDList");
		Iterator it=IDList.iterator();
		while(it.hasNext())
		{
			int count=0;
			try//出现任何情况都要循环到底 
			 {
				System.out.println("it"+it.toString());		
			    int number=Integer.parseInt(it.next().toString());//((Integer)it.next()).intValue();
						  		 				  
					  int fileNumber=number;//设置文件数
					  int j=number;	  
					  SaveToDataBase std=new SaveToDataBase();//操作数据库类
					  PageOperate MyPageOperate=new PageOperate();//操作页面类
					  FOperator foperator=null;
					  std.setWhichUrl(j);//指定要提取的id号
					  std.setUrls("urls");//指定要丛哪个表提数据
					  String myUrl= std.outPutOneUrl();	//从表中提取一个url地址
					  if(myUrl.indexOf("bbs")==-1 && myUrl.indexOf("blog")==-1 && myUrl.indexOf("bokee")==-1 && myUrl.indexOf("spaces.live.com")==-1 && myUrl.indexOf(".edu.")==-1 && myUrl.indexOf(".gov")==-1 && myUrl.indexOf(".tw")==-1 && myUrl.indexOf("lib.")==-1 && myUrl.indexOf(".org")==-1 && myUrl.indexOf("news")==-1 && myUrl.indexOf("school")==-1 && myUrl.indexOf(".kongfz.")==-1 && myUrl.indexOf(".taobao.")==-1 && myUrl.indexOf(".sohu.")==-1 && myUrl.indexOf(".sina.")==-1)
					  {
						  System.out.println(j+"------"+myUrl);
						  MyPageOperate.setMyUrl(myUrl);//设置要连接的url地址									 
						  MyPageOperate.setHtml(); //此方法中处用到了私有变量myUrl,从指定的网址取得html字符流设置myHtml
				    	  if(MyPageOperate.hasForm())//如果网页中含有有表单	
						  {		
							  count++;
							  String sqlSelect="select * from keywordinsearchinterface";//取出表中的关键字,如书名,出版社
							  foperator=new FOperator(MyPageOperate.getHtml(),std.selectOneForm(sqlSelect));
							  if(foperator.isDeepWebSearchInteface())////判断form表单中是否有书名,作者等关键字,如果有则可能是图书接口
							  {
								  							      
								  sqlSelect="select * from serviceinpage";//取出表中的关键字								  
								  foperator.setKeyWordInForm(std.selectOneForm(sqlSelect));
								  
								  if(foperator.isPagehasbook())//判断页面中有购物车,支付等服务信息
								  {
									  String address="E:\\test\\xiyouji3_page4\\";//保存文件的地址 有搜索接口下面就改变保存地址,没有就用这个地址
									  MyPageOperate.setMyAddress(address); //设置保存网页的文件地址

⌨️ 快捷键说明

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