爬蟲webcollector

爬蟲webcollector實現網頁內容抓取

一、導入jar包(webcollector,mysql)css

二、代碼以下:mysql

public class TutorialCrawler extends BreadthCrawler {web

    public TutorialCrawler(String crawlPath, boolean autoParse) {
        super(crawlPath, autoParse);
    }
    public void visit(Page page, CrawlDatums next) {
        // 驅動程序名        
        String driver = "com.mysql.jdbc.Driver";  
        // URI指向要訪問的數據庫名
        //若是報錯在數據庫明後添加 ?useUnicode=true&characterEncoding=UTF-8
        String uri="jdbc:mysql://服務器地址/數據庫名";
        // MySQL配置時的用戶名      
        String user = "**";           
        // MySQL配置時的密碼          
        String password = "********";
        //判斷URL是否匹配
        if (page.matchUrl("http://.*")) {
            //設置關鍵字段
            String t1="藏品徵集";
            String t2="徵集公告";
            String t3="藏品徵集的";
            String t4="藏品的公告";
            String t5="徵集藏品";
            //獲取符合規則網頁的body的文字
            String cont = page.select("body").first().text();
            //判斷是否含有關鍵字
            boolean con1 = cont.contains(t1);
            boolean con2 = cont.contains(t2);
            boolean con3 = cont.contains(t3);
            boolean con4 = cont.contains(t4);    
            boolean con5 = cont.contains(t5);
            //若是知足條件,存入數據庫
            if(con1||con2||con3||con4||con5){
                //能夠經過正則表達式進行篩選,這裏舉了個例子,能夠看下。
                /*==>舉例開始<==
                //測測你有多瞭解奧運會? 13754人測試過 0次收藏 2016-08-06 69條評論 共 10  題
              String regex = " (\\d{1,})人測試過   (\\d{1,})次收藏   (.{10})   (\\d{1,})條評論 共 (\\d{1,})  題";
                Pattern p = Pattern.compile(regex);//得到正則對象
                Matcher m = p.matcher(text);//得到比較器,從而得到比較結果,這裏要把原始的字符串傳遞進去
                while(m.find()){//經過循環獲取比較結果
                    String testnum = m.group(1);//測試人數
                    String favnum = m.group(2);
                    String createTime = m.group(3);
                    String replynum = m.group(4);
                    String questionNum = m.group(5);
                    System.out.println(testnum + "|" + favnum + "|" + createTime + "|" + replynum  );
                }
                Elements img = page.select("div.tshow>p.pbox>img");
                System.out.println("圖片地址爲:" + img.attr("src"));
                System.out.println("描述信息:" + page.select("p.tdesc").text());
                ==>舉例結束<==*/
                //獲取網頁的URL    
                String url=page.getUrl();
                try {               
                    // 加載驅動程序
                    Class.forName(driver);  
                    // 連續數據庫       
                    Connection conn = DriverManager.getConnection(uri, user, password);  
                    if(!conn.isClosed())          
                    System.out.println("Succeeded connecting to the Database!");  
                    System.out.println(cont);
                    // statement用來執行SQL語句             
                    Statement statement = (Statement) conn.createStatement();  
                    // 要執行的SQL語句           
                    String sql = "INSERT INTO zkxa_crawler  (url,content) VALUES  ('"+url+"','"+cont+"')";  
                    // 結果集        
                    statement.executeUpdate(sql);  
                    System.out.println("======插入成功======");
                    conn.close();  
                } catch(ClassNotFoundException e) {  
                    System.out.println("Sorry,can`t find the Driver!");
                    e.printStackTrace();  
                } catch(SQLException e) {  
                    e.printStackTrace();  
                    System.out.println("======SQLException======");
                } catch(Exception e) {  
                     e.printStackTrace();  
                     System.out.println("======插入失敗======");
                }
            }else {
            }
        }
    }正則表達式

    public static void main(String[] args) throws Exception {
        //構造函數中兩個參數分別抓取器的id與是否解析網頁true
        TutorialCrawler crawler = new TutorialCrawler("crawler", true);
        //定義抓取的入口
        crawler.addSeed("https://www.baidu.com");
        //篩選URL的過濾條件
        crawler.addRegex("http://.*");    
        /*禁止爬取圖片*/  
        crawler.addRegex("-.*png.*");  
        crawler.addRegex("-.*jpg.*");  
        crawler.addRegex("-.*gif.*");  
        crawler.addRegex("-.*js.*");
        crawler.addRegex("-.*css.*");
        /*斷點續爬功能開啓
        dc.setResumable(true);*/
        //同時啓動多少個線程進行抓取
        crawler.setThreads(10);
        //啓動爬蟲,向下爬10層
        crawler.start(5);
    }
}sql

若有BUG或者須要jar包,加我微信!數據庫

相關文章
相關標籤/搜索