Java系列文章

來杯咖啡暖暖心吧

Java系列文章

[Java]手把手帶你實作PTT爬蟲(2)-文章內容及儲存

前言 上一篇教學實作了一個簡單的爬蟲並成功的爬到了 PTT 的文章列表 這次就繼續將 PTT 文章內容給爬回來然後儲存到電腦上 必備知識 1. 上一篇所列的知識 2. 多型 3. 介面 4. 執行緒 5. 檔案處理 獲取文章內容 這邊就直接放出程式碼了,大多都是上一篇說明過的部分 在 ptt.crawler.Reader 中加入以下 Method public String getBody(Article article) throws IOException { /* 如果看板需要成年檢查 */ if (article.getParent().getAdultCheck()) { runAdultCheck(article.getUrl()); } /* 抓取目標頁面 */ Request request = new Request.Builder() .url(Config.

By Michael

Java系列文章

[Java]手把手帶你實作PTT爬蟲(1)-文章列表

前言 好幾年前寫過一篇 Java 的爬蟲文章,好像是我部落格內最受歡迎的一篇... 時過境遷,Eclipse 退流行了、Java 出到 15 了,加上一些因素 打算把爬蟲文章重新寫過一遍,這次會當是做一個 Site project,盡量把內容充實一點 預計這系列文章應該會寫個五六篇以上,後面也會教到資料庫及圖形化介面 必備知識 1. 常用 Http request   Ex. get post 2. Cookie 相關知識 3. HTML相關知識 4. CSS 選擇器相關知識 5. Java OOP 相關知識 使用環境 1. Intelli J 2. Chrome 創建專案 這次我們使用的 IDE 是

By Michael

Java系列文章

[Java]教你網路爬蟲基本觀念及實作

開了一篇新教學,使用新的 IDE 及 方便的套件 [Java]手把手帶你實作PTT爬蟲(1)-文章列表                     簡單來說網路爬蟲就是自動去蒐集網站內容 進而從網站的內容中,截取關鍵字進行建檔 再截取其中的網址繼續爬下去 所以今天我們就拿一個網站來試驗 看看爬蟲是怎麼抓資料的 今天選的網站是鼎鼎大名的SOGO論壇 什麼??你說你不知道??嗯...不要問很可怕 我們先來講解一下最基本的觀念 你丟出去,對方丟回來 所有的網站皆是如此!!很單純 複雜的是有些網站的驗證機制不好過 這次我們使用Chrome的F12來分析網站 Step 1 開啟網站點下F12,切到Network,勾選Preserve log Step 2 我們先從登入開始 點一下上方的登入,觀察一下右邊出現的Log 可以發現點下去的第一時間,向一個網址發送了GET請求 點進去可以看到請求的詳細內容 往下拉到底可以到看Query St

By Michael

Java系列文章

[Java]ArrayList、LinkedList 資料插入比較

前言 之前聽到的說法是 ArrayList 優勢在於查詢資料 而 LinkedList 優勢在於插入資料 那麼今天來針對插入資料的部分驗證一下是否如此 驗證 一開始先向兩種 List 塞入 50 萬筆資料 然後以 1000 為間隔從索引值 0 開始插入 10000 筆資料 紀錄兩者所花費的時間 public static void main(String[] args) throws Exception { int initSize = 500000; for (int j = 0; j <= initSize; j += 1000){ ArrayList array = new ArrayList(); LinkedList linked

By Michael

Java系列文章

[Java]自製ResultSet轉Object映射器

前言 有時候不想要使用ORM框架,但又想要自動映射的功能怎麼辦? 所以今天就來自製JAVA版本的簡單映射器吧 其實映射器有很多種方式可以實現 但必要前提是必須要知道資料表中的欄位要怎麼和物件中的欄位對應 1. 下註解 2. 寫XML文件 3. 強制物件中欄位必須要和資料表中的欄位相同 但今天我們使用第一種方式(下註解) 這邊的註解不是平常寫代碼的那種註解(Comment、Mark) 而是 Annotation ,那就開始實作吧 建立 Annotation 到底什麼是 Annotation 呢,簡單一點的說就是用來輔助編譯器的 在編譯的過程中可以取得更多的資訊 平常常用的幾種 Annotation 1. @Override 複寫父類別方法 2. @SuppressWarnings 隱蔽一些編譯器警告 但其實 Annot

By Michael