跳到主要內容

發表文章

facebook貼文爬蟲-python selenium

最近有一個想法需要收集一些粉絲專頁公開貼文資料,上網查了一下有現成的code!用了發現有些問題,還有我要補抓的東西,想想改寫的code也分享出來。簡單來說呢,主體是用selenium(自動化測試工具)以一個webdriver瀏覽器假裝是真人在看,然後用BeautifulSoup(漂亮湯)html tag解析工具,找到要存的資料。 先說為什麼不用facebook graph api抓取?因為現在連公開內容抓取也需要送審應用程式(上圖),一直還沒搞懂/去走一遍流程(抓取自己粉絲頁的數據從2017年開始每天跑都還活著,也多了點偷懶的理由…) 引入套件 在一開始提過了,這次的重點是前三項。selenium、webdriver、BeautifulSoup。 selenium的設定 driver這個地方,在開始前需要去下載一個真的webdriver回來,並且要跟目前使用的瀏覽器是相同版本,例如,你要模擬Chrome的使用狀況,就要找Chrome相同版本。 Chrome Webdriver下載:上網Google吧 。我下載後放在專案的資料夾裡,以指定路徑的方式打開,加到環境變數也是一種方法。 如果要把程式部署到雲端主機就有另外的設定方法,我有部署到Heroku過,也是東找範例西找解方做出來,下次再整理出來。 這段執行完,瀏覽器就會打開了,如果要手動以帳號密碼登入也是可以的。這裡輸入的是m.facebook.com的版本喔! 抓取內容 while迴圈就是讓它一直執行,我是大概估算一個數量(結果太多)。原本找到的案例是去判斷最後一則貼文的時間,很精準。但是我後來改抓手機版網頁,取到的日期資料是文字,沒時間做轉換,就暴力開下去了。 觸發頁面loading更多貼文,這是參考案例來的code,就是讓瀏覽器執行捲動到最下面,我貪心一點點,捲動頁面兩次再抓資料(中間間隔幾秒,讓資料load完)。 接下來是去看html tag的步驟。比較難抓的是,class name、id都沒什麼識別意義,包的div又很多很雜,所以會有 .find().find().find_next_siblings() 這種兩、三步驟的定位方法。 有另外一個問題是,不是所有貼文類型都是一樣的html寫法,像是更新大頭貼照、直播,樣態好像就不一樣。因為趕著抓完
最近的文章

2020總統大選資料整理- python pandas與google app script

這次總統大選以即時開票為主軸的開票圖表 這次大選資料整理,個人做得比較不激情(跟其他家相比應該是太不認真&深入),但還是記錄一筆資料整理的方式。實際成品: 總統大選即時開票|中央社媒體實驗室 不搶快、不灌票,「2020總統立委大選」中央社帶你掌握最正確的即時開票結果。 www.cna.com.tw 真的!不搶快、沒灌票,這次嘗試的是: 1. 接到中選會的資料 2. 比對選區資料、參選人號次資料 3. 產出圖表需要的json 4. 丟上雲端供前端工程師吃吃 操作與程式流程 這一次大部分的程式都在python裡,考量是因為中選會三分鐘會更新一次資料,如果跟 九合一選舉一樣大多用Spreadsheet當作編輯的中間層的話 ,怕更新速度不夠快(python寫資料進Spreadsheet的API速度很慢),所以這次比對資料不是用Spreadsheet公式,用python pandas處理對表與篩選。 中選會資料 要即時資料要跟中選會申請,過了會得到一個程式跟帳密,打開以後每三分鐘就會存一個json到本機。 json資料處理 json到手以後,是要對什麼呢?舉雙帥對決的中山北松山為例,中選會的資料裡這區參選人得票記在這個list裡,沒有人名、沒有黨籍: [{'candNo': 1, 'tks': 5730, 'candVictor': ' ', 'tksRate': 2.6133}, {'candNo': 2, 'tks': 99539, 'candVictor': ' ', 'tksRate': 45.3973}, {'candNo': 3, 'tks': 1209, 'candVictor': ' ', 'tksRate': 0.5514}, {'candNo': 4, 'tks': 112784, 'candVictor': '

[攝影] 然後天黑

誰人家的夕陽無限好? 好像,大稻埕的看久了也是個膩字 芝山附近的河堤倒也一番風味。 不過,不變的都是「只是近黃昏」, 然後天黑。 喜歡望向天空,是從高中開始的。 這點從我有這麼多折頸照,可以說明: 一路走來,始終如一。 然後天黑。一片靜

[攝影] 櫻櫻梅代誌

櫻色的血染進了水裡 繽紛含苞 染了一片櫻紅 就要梅了,路燈都開了 怒放 平實的顏色 梅一翦 朋友們春節有走春嗎? 花季又要來了, 又要是勤按快門的時候了。

[攝影] 去哪裡之一 雲海

一段時間去了哪裡呢? 雖然不像豬哥亮要去進修, 但是沒有整理照片卻也是某種程度的豬哥亮。 去的地方也不多,卻還是經常遇到感動。 12月12日,好像是因為心情沒多好, 帶好相機、腳架、黑卡、閃光燈、GRD、 沖好一杯統將招牌咖啡,再度上山。 山下不怎麼冷,但是到小油坑、擎天崗一帶卻是相當冷, 每次上陽明山都往二子坪跑去,覺得有點沒意思 但是擎天崗金山一帶也只是芒花,最終還是不敵可能看到夕陽的衝動 回頭去大屯公園。 在第一個觀景台往下看就發現,不對!怎麼有雲海! 大驚的我,在第二個觀景台就停下架腳架,(第一名呢我) (再上山離雲海更遠了,而且深怕它要散去) 就這樣盡覽美景(其實是吹冷風兩個小時) 記得上次上陽明山在仰德大道被開了1200的超速罰單, 這次我相當小心,沒想到, 因為天冷手殘,讓一顆GRD電池掉到山谷下 倒也是不小的損失。 莫非這就是與山神的等價交換嗎?

[攝影] 走馬看。花博

這張照片與標題,就是這次去花博試運最大的感想。 在新生三館的天使館裡,利用環狀的螢幕投影, 將花的影像結合進會場擺設, 也利用螢幕投影,呈現出台灣動人的山水。 在天使館裡,我跳脫了隊伍的節奏, 在眾多的投影間東看看西看看。 走到一處,發現,怎麼沒路了? 正巧影片播放結束的這一刻,一片片螢幕轉動了 通道也出現了。 很多觀眾只顧著沿著參觀動線走, 幾乎不定點停留、靜下心觀賞, 然後說聲,爛死了。 我覺得認真做事的人,聽到這種意見也真的只能自己嘔死了。 在未來館的狹小通道上拍這些植物時, (未來館裡有展高海拔植物,很稀有的) 我很害怕擋到後面隊伍,不時起身讓路, 但是後來發現,起身也沒什麼必要, 因為這些觀眾根本就像是在趕路...沒有停下來仔細端詳的意思。 (真懷疑這麼迅速攻上山頭,主辦單位是有獎勵嗎...) 這或許就是他們的體會方式吧。 也很多人站在蘭花前面擺出了老派的觀光客姿勢,拍下照片走人。 或許可以說,如果主辦單位如果不能滿足這些人的素質, 也只是博覽會成意過高、曲高和寡。 但是,為了迎合這些人,又是何苦呢? 當花博變成選舉的煙火抑或砲火(新聞系劉昌德老師的比喻) 選民的意見被無限放大,但這些人真的有當好觀眾的資格嗎? 花博就是這樣子的場域啊!大家走馬看花,請自便。 (圖為撐著花傘逛花博的民眾,卡波攝 2010年10月28日) 其實走進新生三館(沒去到夢想館啦,扼腕) 我心情是很開心的,建築真的很漂亮,得了建築獎錦上添花。 未來館的明亮與植物環繞, 天使館的影像繽紛, 在兩館之間的生態許願池一片綠, 和諧地讓我覺得身處在很舒適卻又科技的環境中。 噴出水霧的生態許願池,置身其中讓人覺得, 這時許下的願望或許真的可以實現。 身處在花博之中,當然不免俗要拍這種照片, 但,這只是擺在路邊當作裝飾的小花, 我相信,每種植物綻放的美, 並不是走馬看花可以體會的。 面對生命, 不能深刻一點嗎?台灣的觀眾們。