一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 零基礎(chǔ)寫Java知乎爬蟲之將抓取的內(nèi)容存儲到本地

零基礎(chǔ)寫Java知乎爬蟲之將抓取的內(nèi)容存儲到本地

2019-12-04 11:31hebedich JAVA教程

上一回我們說到了如何把知乎的某些內(nèi)容爬取出來,那么這一回我們就說說怎么把這些內(nèi)容存儲到本地吧。

說到Java的本地存儲,肯定使用IO流進行操作。
首先,我們需要一個創(chuàng)建文件的函數(shù)createNewFile:

 

復(fù)制代碼代碼如下:

public static boolean createNewFile(String filePath) {  
        boolean isSuccess = true;  
        // 如有則將"\\"轉(zhuǎn)為"/",沒有則不產(chǎn)生任何變化  
        String filePathTurn = filePath.replaceAll("\\\\", "/");  
        // 先過濾掉文件名  
        int index = filePathTurn.lastIndexOf("/");  
        String dir = filePathTurn.substring(0, index);  
        // 再創(chuàng)建文件夾  
        File fileDir = new File(dir);  
        isSuccess = fileDir.mkdirs();  
        // 創(chuàng)建文件  
        File file = new File(filePathTurn);  
        try {  
            isSuccess = file.createNewFile();  
        } catch (IOException e) {  
            isSuccess = false;  
            e.printStackTrace();  
        }  
        return isSuccess;  
    }  

 

然后,我們需要一個寫入文件的函數(shù):

 

復(fù)制代碼代碼如下:

public static boolean writeIntoFile(String content, String filePath,  
            boolean isAppend) {  
        boolean isSuccess = true;  
        // 先過濾掉文件名  
        int index = filePath.lastIndexOf("/");  
        String dir = filePath.substring(0, index);  
        // 創(chuàng)建除文件的路徑  
        File fileDir = new File(dir);  
        fileDir.mkdirs();  
        // 再創(chuàng)建路徑下的文件  
        File file = null;  
        try {  
            file = new File(filePath);  
            file.createNewFile();  
        } catch (IOException e) {  
            isSuccess = false;  
            e.printStackTrace();  
        }  
        // 寫入文件  
        FileWriter fileWriter = null;  
        try {  
            fileWriter = new FileWriter(file, isAppend);  
            fileWriter.write(content);  
            fileWriter.flush();  
        } catch (IOException e) {  
            isSuccess = false;  
            e.printStackTrace();  
        } finally {  
            try {  
                if (fileWriter != null)  
                    fileWriter.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
  
        return isSuccess;  
    }  

 

我們把這兩個函數(shù)封裝到一個FileReaderWriter.java文件中以便后續(xù)使用。
接著我們回到知乎爬蟲中。
我們需要給知乎的Zhihu封裝類加個函數(shù),用來格式化寫入到本地時的排版。

 

復(fù)制代碼代碼如下:

public String writeString() {  
        String result = "";  
        result += "問題:" + question + "\r\n";  
        result += "描述:" + questionDescription + "\r\n";  
        result += "鏈接:" + zhihuUrl + "\r\n";  
        for (int i = 0; i < answers.size(); i++) {  
            result += "回答" + i + ":" + answers.get(i) + "\r\n";  
        }  
        result += "\r\n\r\n";  
        return result;  
}  

 

OK,這樣就差不多了,接下來吧mian方法中的System.out.println改成

 

復(fù)制代碼代碼如下:

// 寫入本地  
        for (Zhihu zhihu : myZhihu) {  
            FileReaderWriter.writeIntoFile(zhihu.writeString(),  
                    "D:/知乎_編輯推薦.txt", true);  
        }  

 

運行,便可以看到本來在控制臺看到的內(nèi)容已經(jīng)被寫到了本地的txt文件里:

零基礎(chǔ)寫Java知乎爬蟲之將抓取的內(nèi)容存儲到本地

大體一看沒什么問題,仔細看看發(fā)現(xiàn)問題:存在太多的html標(biāo)簽,主要是<b>和<br>。
我們可以在輸出的時候?qū)@些標(biāo)記進行處理。
先把<br>換成io流里面的\r\n,再把所有的html標(biāo)簽都刪除,這樣看起來便會清晰很多。

 

復(fù)制代碼代碼如下:

public String writeString() {  
    // 拼接寫入本地的字符串  
    String result = "";  
    result += "問題:" + question + "\r\n";  
    result += "描述:" + questionDescription + "\r\n";  
    result += "鏈接:" + zhihuUrl + "\r\n";  
    for (int i = 0; i < answers.size(); i++) {  
        result += "回答" + i + ":" + answers.get(i) + "\r\n\r\n";  
    }  
    result += "\r\n\r\n\r\n\r\n";  
    // 將其中的html標(biāo)簽進行篩選  
    result = result.replaceAll("<br>", "\r\n");  
    result = result.replaceAll("<.*?>", "");  
    return result;  
}  

 

這里的replaceAll函數(shù)可以使用正則,于是所有的<>標(biāo)簽在最后就都被刪除了。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国色天香视频完整版 | 婷婷综合七月激情啪啪 | 国产精品suv一区二区 | 亚洲AV中文字幕无码久久 | 美女精品永久福利在线 | 日本成熟 | 91chinese 永久免费 | 天天操天天干天天做 | 人皮高跟鞋在线观看 | 亚洲AV无码专区国产精品麻豆 | 欧美一级欧美三级在线 | 俄罗斯年轻男同gay69 | 色中文字幕 | 99在线观看视频免费 | 日本精a在线观看 | 男gay网站视频免费观看 | 亚洲一区二区三区在线播放 | 出轨同学会2在线观看 | 精品91 | 青青青在线免费 | 日韩欧美在线视频一区二区 | 国产情侣偷国语对白 | 国产成人久久精品推最新 | 小寡妇水真多好紧 | 日本不卡在线一区二区三区视频 | 成人影院免费看 | 超高清欧美同性videos | 美女1819xxxx| 撕开老师的丝袜白丝扒开粉嫩的小 | 秋霞宅宅236理论片 秋霞一级黄色片 | 婷婷影院在线观看 | 天天天做天天天天爱天天想 | 国产一级网站 | 精品久久一区 | 欧美亚洲另类综合 | 亚洲国产精品热久久 | 午夜精品网站 | 日本不卡视频免费 | 国产大片视频免费观看 | 日本韩国推理片免费观看网站 | 日韩久久精品 |