她打算用 Java 寫,我看了一下網頁內容,Java 我不會,那我用 Pyhton 試試看,結果用 urllib2 弄了辦也弄不出來,生氣,換上 wget,結果 server 丟了一個 500 給我,告訴我這樣是行不通的,我沒辦法啦。就在這個時候建勳剛好用 MSN 找我吃晚餐,我記得前幾天以前在 PTT 的 Python 版上看到他在跟別人討論抓網頁的東西,我想他應該有經驗可以指教,就詢問他這個問題,結果得到了很不錯的答案。
前置動作:
- 請使用 firefox 瀏覽器
- 請學會簡單的 JavaScript
不過我本來是不會,一邊用一邊學,一個晚上就好了。 - 請裝上 GreaseMonkey 插件
GreaseMonkey 可以在載入指定網頁的時候,執行自訂的 JavaScript,使用者可以透過 DOM 變更網頁內容,操作瀏覽器執行特定動作,像是跳到指定的網址,然後跳回來等等的動作。這邊有 GreaseMonkey 的使用教學(Dive into GreaseMonkey)必看。 - 請裝上 Auto Save 插件
Auto Save 會在 firefox 瀏覽到指定頁面的時候,自動將該往頁儲存起來。所以你只要把你想要儲存的頁面用一些像是 prefix 的規則寫好,那你配合 GreaseMonkey 自動切頁過去的時候,Auto Save 就會剛好自動把你的網頁給存起來。 - 請裝上 DOM Inspector 插件
firefox 選單「工具」拉下來應該就可以看到,如果你沒看到,那表示你沒裝,firefox 從 2003 年 11 月之後,他就被內建到安裝程式裡面的,安裝 firefox 的時候,選擇自訂選項安裝,把 DOM Inspector 打勾,然後完成你的安裝就可以了。這個東西等等可以幫助你用來解析你的目標網頁,讓你可以知道要怎麼透過 JavaScript 操作你的網頁。 - 請裝上 Inspect Context 插件
因為只有 DOM Inspector 並不是很容易定位你要的資料位置,配合 Inspect Context,你可以在網頁的任何一個地方按右鍵,選擇「Inspect」,這個時候 DOM Inspector 就會開啟,並且自動展開到你所點選的位置。 - 請到 Web Development Bookmarklets,把第一個 shell 拖曳到書籤工具列上。
這個 shell 可厲害了,點他一下,他會跳出一個 JavaScript shell 視窗,你可以即時的在這邊進行操作,而不用每次都寫一個完整的 JavaScript 檔案掛到 GreaseMonkey 上面去測試,是開發期的良好工具,請善用。
- 針對要抓取的頁面,一邊使用 Inpect Context / DOM Inspector 這兩樣東西分析你的目標網頁,一邊使用 Java Script Shell 進行開發跟測試你的 JavaScript。
- JavaScript 寫好以後,把寫好 JavaScript 掛上 GreaseMonkey。
- 打開 Auto Save 設定好網址,然後 enable。
- 開始瀏覽,自動抓取,完工 :)