根據專利號到專利查詢的網站上抓取想要的信息(下)

上一回講了怎麼根據一個專利號發送我們要查詢信息的請求,詳情請看根據專利號到專利查詢的網站上抓取想要的信息(上)。接下來要做的就是從一個Excel表中去讀取我們要查的一系列的申請號,然後將抓到的信息寫到我們的Excel表中。

這裏需要引入的是jexcel.jar包了,下載地址,或是從本文的附件中拿過去。這裏要說明的是這個jar包目前只支持excel95-2003以及以下的支持,這個需要特別注意的,如果你的文件是xlsx結尾的,那麼記得把它另存爲.xls格式的。

public static void main(String[] args) {
        System.out.println(System.setProperty("sun.net.client.defaultConnectTimeout", String
                .valueOf(100000)));// (單位:毫秒)
        WebpageCapture demo = new WebpageCapture();
        WritableWorkbook book = null;
        try {
            //demo.captureHtml("111.142.55.73");
            //Workbook對象用來解析Excel文件
            Workbook workbook ;
            //工作表,用於解析Excel文件裏面的工作表
            Sheet sheet;
            //這裏我的文件是直接放在項目中的,所以沒有加具體的路徑信息
            workbook = Workbook.getWorkbook(new  File("要讀取的文件.xls"));
            //getSheet(0)表示讀取Excel文件的第一個工作表,如果要讀取第二個就是getSheet(1),其他的以此類推。
            //也可以接受getSheet(String str)的形式,str表示工作表的名字
            sheet = workbook.getSheet(0);
            String sqid = "";
            //一個我們新創建的Excel文件
            book = Workbook.createWorkbook(new  File("要寫的文件.xls"));
            WritableSheet sheet2 = book.createSheet("sheet1", 1);
            int j = 0;
            //下面的循環用來讀取每一個申請號,sheet.getCell(int column, int row)
            //和我們平常的習慣不一樣,這裏第一個要寫的是列,第二個是行
            for(int i=0; i<100; i++){
                sqid = sheet.getCell(0, i+1).getContents();
                System.out.println(sqid+"的信息"+"\t"+(i+1));
                                                                                                                     
                sheet2.addCell(new Label(0,j++,sqid+"的信息"));
                //根據sqid調用getFeiInfo(int sqid,WritableSheet sheet2,int rows)
                //上面的rows表示選用的信息的行數,主要用於排版的作用
                //至於這裏的getInfo方法也是基於上一講的getFeiInfo(String sqid);
                j = demo.getFeiInfo(sqid,sheet2,j);
            }
                                                                                                                 
                                                                                                                 
                                                                                                                     
                                                                                                                 
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                //把緩存的信息寫進去
                book.write();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                //關閉對文件的解析
                book.close();
            } catch (WriteException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

下面是getFeiInfo(int sqid,WritableSheet sheet2,int rows)的具體實現


public int getFeiInfo(String sqid, WritableSheet sheet2, int j) throws IOException, RowsExceededException, WriteException {
        Document doc = Jsoup.connect("http://app.sipo.gov.cn:8080/searchfee/searchfee_action.jsp").data("sqh", sqid).post();
        Elements info = doc.getElementsByTag("tr").select(".dixian1");
        int i = 0;
        for (Element element : info) {
            sheet2.addCell(new Label(i++,j,element.text()));
            if(8==i){
                i=0;
                j++;
            }
        }
        return j;
    }

得到的Excel表的內容顯示如下wKioL1MN3sOgNEXVAAWtkKcWuSo999.jpg

這還是一個比較粗糙的,算是jsoup和jexcel的一個拋磚引玉吧,自己也還有很多不知道的,還有待進一步的深入。


附件jecxeclapi.jar下載地址:點這裏去下載頁面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章