2019年2月16日 星期六

網頁爬蟲終極武器: puppeteer

無頭瀏覽器

下載靜態網頁可以用 wget 或 curl。 那如果是 javascript 動態產生/填寫的頁面呢? 如果只需要網頁快照截圖, 可以用 cutycapt; 如果需要取得 javascript 所產生的文字內容, 那就用 puppeteer。 (字的原意: 操偶師) 它會呼叫 chrome 幫它執行頁面的 javascript, 但不會真的在桌面上打開 chrome 視窗。 在這種模式下運作的瀏覽器, 稱為 headless browser。 今天我們要用 puppeteer 及 headless chrome 來製作網頁爬蟲。

2019年2月7日 星期四

網頁畫面定時快照截圖

過年期間的天氣圖 想要定期下載某網頁, 可以在 cron job 裡面用 wget。 [ 鳥哥 教育大市集] 但這僅適用於伺服器端產生的靜態網頁。 如果是 javascript 產生的動態網頁呢? 如果需要取得網頁文字內容, 那就必須用比較進階的 網頁爬蟲終極武器: puppeteer; 如果只需要快照截圖 (例如想要觀察 google 地圖或開放街圖某塊區域的長期變化), 那麼本篇介紹的 cutycapt 就夠用了。

2019年2月1日 星期五

Windows 桌面驚魂記

xfreerdp 太可怕了! 老朋友要分享大檔給我, 竟然開了他的 windows 桌面讓我登入。 我試著用 rdesktop 連線, 得到錯誤訊息 「ERROR: CredSSP: Initialize failed, do you have correct kerberos tgt initialized ? Failed to connect, CredSSP required by server.」 搜尋到救星解答: 採用 xfreerdp。 在 ubuntu 18.04 底下, 安裝 freerdp2-x11 套件, 然後 xfreerdp /u:帳號名稱 /v:伺服器的IP /drive:gregbasket,/home/ckhung/share 回答完密碼之後就出現了駭人的 windows 桌面。 握著滑鼠的手顫抖地點選 「我的電腦」, 會看到有一顆硬碟/隨身碟名為 "gregbasket", 也就是剛才命令列上用 /drive 參數任意取的遠端名稱, 它對應到本機的 /home/ckhung/share 目錄。 從朋友的桌面上把檔案丟到 gregbasket, 拿了就跑, 趕快逃離可怕的 windows。 (完)

2019年1月27日 星期日

拿股票三維資料學習 pandas 的 multiindex

股票三維資料 最近認真用 python 的 pandas 函式庫讀取股票每日收盤資料, 結論是: 嗯, 還是用陽春 python 處理比較簡單快速 -- 執行的時間跟程式除錯的時間都比較省。 本篇是跟 pandas 的分手宣言。 閱讀本文之前, 請先按照 我上個月的 pandas 開箱文 操作一遍。 (好短的戀情啊~~)

2019年1月22日 星期二

slax: 330MB 的圖形桌面

中文勉強可用版 slax 9.6.6 桌面 Tomas Matejicek 推出 (羽量級 linux) slax 9.6.6 。 現在改採 debian 作為基底, 採用 fluxbox 作為視窗介面, 但一樣只佔不到 280MB 的空間 (僅能使用英文)。 客製化的過程變得更簡單 -- 我做了一個 50MB 的正體中文勉強可用外掛模組, 只有 sakura 終端機可以輸入中文; 瀏覽器只能讀中文不能直接輸入 (可以剪貼), 卡關太久, 沒有進展, 乾脆直接把這個半成品放出來請大家幫忙解決問題。

2019年1月5日 星期六

跟蹤狂祖克柏退散! 免登入也能閱讀臉書上的公開貼文

有些 FB 網紅大大的頁面明明是公開的, 但讀者卻必須登入他自己的 FB 才能閱讀網紅大大的貼文。 這樣的設定對於保護隱私完全沒有幫助。 (事實上 「臉書上的隱私」 本來就只是一種幻想, 看看 性工作者身份暴露的故事 就知道臉書的可怕) 這只會犧牲自己的人氣幫 FB 換取更多的追蹤訪客的機會, 好像店長僱了一位街頭小弟幫你發商店傳單, 小弟卻對訪客說: 「你先加入XX幫, 才可以進來消費」 一樣, 仿佛又回到了十年前 網站自殘 -- 微軟綁架你的點閱率 的年代。 因為我是 無賴 不要臉的邊緣人, 不太會用 FB, 不太確定自己的 FB 是否也跟小英總統一樣設壞掉了? 總之如果讀者知道該如何更改這個設定, 讓沒有登入的訪客也能看自己的 FB 公開貼文, 麻煩分享一下, 讓這些網紅大大不再犧牲自己的人氣幫 FB 強迫推銷。

但是在那麼多網紅大大學會更改設定之前, 我們路過的訪客還是可以自力救濟 -- 只需要以下幾個指令:

2018年12月11日 星期二

拿公投統計資料學 pandas

以前我都用 perl 處理文字資料, 例如 regexp csv 句型 都很好用。 但是現在大家都用 python, 我當然也要跟著趕一下流行啊~~ 處理試算表類型的資料時, python 程式設計師最常用 pandas 函式庫。 它也是玩機器學習或資料科學一定要學東西。 繪圖的話, matplotlib 跟 plotly 都很好用。 就讓我們拿中華臺北人很有感的十項案公投結果統計資料來當 pandas / matplotlib / plotly 的入門範例吧!

2018年11月26日 星期一

DataTables 的固定表頭、 排名、 置中

先前寫的小程式 jesp 可以拿來把好幾個 csv 檔 join 在一起, 並且方便按照任何欄位排序。 其中表格資料好用的互動排序功能, 靠的就是 jQuery 的 DataTables 外掛。 兩年多前曾在 「jQuery 無痛讀檔」 裡初次使用; 現在重學一次, 並且選用幾個好用的效果。

2018年11月25日 星期日

處處訝異的怪怪語言 php

最近用 php 寫了一個小程式 jesp 可以拿來把好幾個 csv 檔 join 在一起, 並且讓訪客可以很方便地按照任何欄位排序。 過程當中發現 php 語言有很多怪怪的地方, 包含表達能力不足的設定檔、 用過一次就會有意外副作用的 referenc 變數、 不能疊起來的三元運算子。 這真是一個處處充滿詫異的神奇語言啊~~

2018年11月19日 星期一

在手機上開啟本地的 html 跟 svg 檔

Android 作業系統的自由度遠遠不及 GNU/Linux。 例如瀏覽器的功能明明就可以開啟 html 檔或 svg 檔, 但若這個檔案在本地而不在雲端, android 手機就是不提供 「以瀏覽器開啟」 的選項。 我覺得這是 google 的陰謀 -- 就像 chrome 的禁讀令 一樣, 它希望你把一切都移到雲端去, 或是一定要逼你打開一個特定的 app, 總之就是不讓你很方便地用通用的瀏覽器做事。 不管是不是陰謀, 總之這個沒有意義的限制其實是可以繞過去的: Svg 圖檔 (含 sozi 簡報) 及 html (在某些情況下, 甚至包括內含 javascript 的 webapps) 也都可以透過 「open in browser」 這個 app 搭配適當的瀏覽器來開啟。

2018年11月4日 星期日

novnc: 有瀏覽器就可以連上線的遠端桌面

novnc 架構 VNC 是遠端桌面連線程式, 也可以當成電子白板或廣播教學軟體來用。 以前就有聽說過: 如果採用 novnc, 那麼客戶端可以不必安裝任何程式, 只要有瀏覽器就可以連線。 這學期我終於開始用這個方法上課。

2018年10月25日 星期四

逢低買進, 越跌越買? 請先確認不是「空頭排列」

貴哥今年才開始認真學股票, 學了一點點 粗淺的財報常識, 甚至寫了不專業的撈股程式及 撈股試算表 來自嗨嗨(害?)人。 至於 K 線/技術分析, 雖然爬了很多文 (中英文!) 但都不得要領。 最近終於領悟到一件超級重要的事, 分享給其他跟我一樣技術分析能力趨近於零的股友們: 如果你這一輩子只打算花半小時研究 K 線, 那就以搞懂這句話為目標就好: 空頭排列時嚴禁下買單! 股海老手看到這句話應該會很訝異: 這不是最簡單的常識嗎? 是的; 但對我們這些股票麻瓜而言, 當這句話跟其他複雜的狀況與規則混雜在一起時, 早就一頭霧水眼花撩亂霧煞煞、 完全失焦找不到重點了。 所以我就是要針對這句話寫一整篇文章、 加深印象, 讓小格的讀者們別再重蹈我的覆轍。