大家好,歡迎來到爬蟲的世界!為了因應大家的動態網頁的出現,本系列文章將和大家分享,如何善用Selenium爬蟲工具 ,讓爬蟲技巧更聰明~~

初學爬蟲的人,大多從靜態網頁開始入門。但對於時下最常用的FB及IG的大量資訊,是否也非常想要小試身手!?

動態網頁爬蟲不知道怎麼爬嗎?本系列文章,將帶大家從動態網頁的必備最佳助手Selenium入門。Selenium它就是模擬一般消費者瀏覽的網頁的所有習性,也因此爬蟲速度會較慢、同時也仰賴網速及消耗大量cpu!但!它絕對是資料科學領域不可不學的爬蟲工具!

更多系列文章:動態網頁爬蟲第二道鎖 — Selenium教學:如何使用find_element(s)取得任何網頁上看到的內容(附Python 程式碼)

本篇文章會依序介紹以下7大步驟,讓大家可以依此打開動態 …


你也正在留學生必備的選校徬徨期嗎?沒有請代辦不知道怎麼選學校嗎?如果是的話,希望我的心路歷程、選校計畫跟申請表格模板可以幫助你找到理想中的學校!

這篇文章適用於任何有選擇障礙的你,從網路上雜亂的資訊、學長姊各方踴躍的分享中,幫助你抽絲剝繭,找到最完美的選校清單!

感覺才剛申請完下一輪的申請又要開始了~相信這個時期很多人正在徬徨迷茫吧~那這篇文章大概就是你的強效救心丸啦XD,讓我們繼續看下去!

我也是個講求效率的人啦 (灬ºωº灬),懶得看說明的可以幫我拍拍手再領取我的申請表格模板喔!幫我長按拍滿50下就不怪你-`д´-

表格模板先提供在這裡了!大家可以搭配本文說明使用或副本到自己的雲端編輯,會更加了解!

本文大綱

  1. List your priorities
  2. Stage 1 : Skimming,把想要的學 …

資料分析碩士MSDS/商業分析碩士MSBA的申請總結、方法分享與建議

這篇主要是講講我的申請時間軸、各校申請文件的準備跟選校方法等等,比較技術性層面的說明。適合正要開始準備留學申請的人

想先提的地方:我沒有找代辦、沒有選保底校、然後不要期待本文會有良好的讀書計畫

Follow your heart!

先來講講我的背景,我就讀台大材料科學與工程學系(2017-2021),想出國留學是我從高中以來的夢想,但一直以來我都只是想往工程方向走,對於想走什麼專業沒有什麼想法,不了解各個科系未來的求職方向等等。總的來說,我就是分數考得高了但科系蒙著眼睛瞎選的不良示範(至於我為什麼踏上資料分析的不歸路...><)。

大一的時候我傻傻地相信大學真的可以隨便玩,成績馬馬虎虎的顧,微積分上下學期甚至拿了C跟C-,總共八學分(超硬傷)…這對於我之後申請資 …


[GRE高分獎學金心得] 台大材料 一戰322 大三準備 感謝Mason GRE

前言

今天來分享的是GRE考試的備考過程與心得,剛好Mason的高分獎學金添加了Medium的選項,於是這篇文章就出現啦!這篇文章大部分會是針對在Mason補習GRE的學習經驗,以及對GRE考試的個人想法,中間穿插個人的備戰心法!之後應該會再專門寫一篇給備考中的人。

備考GRE前要知道的五件事(大概是整篇重點):

  1. 設立目標分數:我是設定320分(V: 150/Q:170/AW沒特別設定目標,因為對我不是很重要)。設定好目標之後,評估自身實力差距!
  2. 安排讀書時間:預計考試的時間?這段時間有多少時間可以備考?然後才著手規劃讀書計畫。
  3. 找戰友:如果你是缺乏動力或時間的人,戰友超重要,必要時能互相激勵抒發壓力或檢討讀書方法,個人建議大家都要找個人一起準備考試,也可以透過Mason建立的Line群組找人、參加讀書會!
  4. 想清楚為什麼而戰!在備考期間難免會有瓶頸,當不想念書但又不得不念書的時候,心中的那個信念就很重要,信念不夠強很容易就變成二戰三戰四戰了...(當然除非你還有很多時間消耗也不擔心6000塊的報名費啦)
  5. 跟自己約定休息時間:我們不是機器人,一定要適當休息與放鬆,有助於心態正向發展,對身體的負擔也不會這麼大。可以跟自己約定一個禮拜之中哪些時間可以Play hard,哪些時間一定要Work hard,這樣調適心情會更順利,讀書效率也會更高喔!
積少成多,大家加油!

今天的大綱 ୧☉□☉୨

  1. 考試背景
  2. 為什麼想要考GRE?為什麼想出國?
  3. 念GRE的額外收穫:心志的磨練、讀論文效率提升
  4. 為什麼選擇 Mason GRE?
  5. 各科準備心得:字彙填空、邏輯閱讀、寫作、數學
  6. 考試時程安排:當天時程
  7. 應考時臨場狀況
  8. 總結以及感謝語

考試背景

  • [考試成績] GRE一戰322 V152 Q170 AW3.0 (QVQVQ)
  • [身份背景] 台大材料大三
  • [英文能力] 學測15級/TOEIC 915
  • [準備時間] 2019.08–2020.05 (Mason GRE暑假平日早上班)

為什麼想要考GRE?為什麼想出國?

從高中開始就想要出國留學,所以GRE考試是一定要考的吧!一開始就決定好要申請國外研究所,所以也能提早為留學考試做準備,讀書計畫也能拉得很長(但有點太長了XD)。上網瀏覽資料後發現不論是歐洲還是美國的學校,大部分都需要GRE考試成績,所以就開始備考了!最後也用這個差不多過標準的分數(320)申請上了2021 FALL Columbia MSDS,實在是太感謝了。

念GRE的額外收穫

  1. 心志的磨練
  2. 讀論文效率提升

首先,說到念GRE最大的收穫,對我來說應該是心志的磨練吧!

GRE絕對不是一般的英檢考試,備考的時候常常會有在跟出題者打心理戰的FEEL。我自己也不是超有規劃、超自律的類型,因為放長線的關係,在準備GRE的途中,常常讀書效率不是很高。應考前更是戰戰兢兢,心情起伏不定,深怕要二戰(6000塊丟水溝...)。為了減緩考試壓力,我發展了很多紓壓的方法跟阿Q語錄XD,大大地幫助了之後準備申請的我!

再來,GRE讓我閱讀英文文章的習慣完全轉變,一直以來因為一直想著要出國的關係,英文的能力都有好好維持,一開始遇到閱讀就想著硬碰硬,靠著自身的實力把文章讀懂,但上了Mason GRE的閱讀課、聽了Kory分享的解題方法之後,發現不用完全讀過也能了解透徹一篇文章,實在是太神奇了!對於常常需要讀論文的我是太實用了!

為什麼選擇 Mason GRE?

跟大部分的人一樣,都是親友推薦來的,但我可以強調的地方是Mason校友的Networking會是最物超所值的優勢!因為已經申請到學校,也開始參與Mason校友的社團,常常會舉辦各種活動與就職講座,出國前就可以認識許多未來準備一起出國探險的夥伴,絕對超好評啦!

各科準備心得

語文(Verbal) - 字彙填空

Mason的2000單跟1000單講義整理的超級好用!搭配我一直以來慣用的階梯式背單字法(337背單字法),背單字的效率很高!第一天背三頁,第二天背新的三頁加上複習前天的三頁,像階梯一樣一層一層3+3的往後複習,一個禮拜或是任何比較有空的時候,再來複習一整個禮拜的內容!


How much did I spend? For只想聽結論的人,我花了11萬元。

夢想的代價有多重呢?

前言

今天要分享的內容比較特別,是我準備留學申請的花費。之前參考了許多前人的經驗,於是決定也來回饋一下。

首先,我沒有找留學代辦!我找的是英文潤稿服務!整個申請過程中最有感的是匯率的變動,這段時間因為疫情等等經濟因素台幣不斷走強,前後期刷卡完的金額真的是差很多,特別可以看我托福一戰(10/31)二戰(12/5)的報名費,真的是非常有感。

本文章所有的台幣金額都是加了國外交易手續費的最終花費,因為匯率不同金額會有變動(但是越來越便宜真好…)。

所謂細節

考試相關

  • GRE補習費:13000台幣@Mason團報
  • GRE報名費:205鎂/6242台幣
  • GRE延期費用:50鎂/1531台幣
  • TOEFL一戰報名費:210鎂/6262台幣 (托福還剛好給我漲價比GRE還貴合理嗎!!)
  • TOEFL二戰報名費:210鎂/6103台幣(比GRE便宜了!匯率的力量!)
  • GRE送交正式成績:送一間學校27鎂,最後總共花了5436元台幣(有些學校不看或是只需要Unofficial transcript)
  • TOEFL送交正式成績:送一間學校20鎂,最後總共花了4610元台幣(同上)
  • Mason高分獎學金:-2000台幣(感謝Mason嗚嗚嗚)

以上總共42904元。

送交正式成績單的制度真的很黑心ㄟ(萬惡的ET$$$$$$),如果報名的時候就可以確定要送哪幾間就可以省下四間的錢(考試前可以選擇送四間學校免費,托福跟GRE都是),但你不知道考出來的成績到底好不好,然後像我二戰也還要再送一次…

申請文件相關

  • 找潤稿:28896台幣
  • 做善事:4000台幣,老師說要我做善事才幫我寫推薦信

以上總共32896元。

送出申請的費用

所謂的夢想費,繳交成功才算申請成功(以下台幣包含國外交易手續費)

  • Northwestern University: 100鎂/2897台幣
  • Stanford University: 125鎂/3625台幣
  • EPFL: 150 CHF/4842台幣
  • ETH-Zurich: 150 CHF/4842台幣
  • Georgia Tech: 85鎂/2429台幣
  • UCLA: 200鎂/5697台幣 (超坑,還都不回我信)
  • Columbia: 85鎂/2420台幣
  • New York University: 130鎂/3696台幣
  • Washington University: 85鎂/2427台幣

以上總共32875元。

結語

總花費台幣108675元,包含補習、留學考試、送交成績、英文潤稿費跟夢想費,是挺滿意的價格(我且戰且走的走了許多冤枉路,考試延期啊二戰啊什麼的),畢竟當初也嘗試找過留學代辦但是打聽幾間都是申請八間學校10~12萬的價格,當然還不包含送交考試成績跟夢想費那些…

自己DIY申請留學當然麻煩,但出國後樣樣都要自己來了,磨練一番也是應該的!如果你可以省下潤稿費、考試補習費用,留學考試一戰解決,那最後花費便只有各校夢想費了,依學校排名與熱門程度不同可能會有50到200美元的差距。

如果可以好好規劃自己的留學申請計畫,在考試之前決定好學校名單可以省下四間學校的送交成績費用(當然要考好才行…),好好準備考試的話,最省最省的超理想狀況就只要考慮夢想費跟留學考試的報名費了~

相關閱讀:GRE好難怎麼辦?322一戰高分心得與總結

Q&A

有想問的可以留言告訴我,我會上來補充的~

害羞的話也歡迎來Linkedin上找我問問題~(記得備註一下自己是誰) https://www.linkedin.com/in/clarissa-ruo-ju-tai/

最後祝看到這裡的人,申請順利!

如果我的分享對你有幫助的話,幫我在下面拍拍手~長按可以連續拍50下喔


歡迎回到 Google map review動態網頁爬蟲系列文章~

本篇會帶領各位使用Selenium方法爬取GOOGLE MAP REVIEW的評論資料,例如:評論者、圖片、星級等等,並講解如何選擇評論顯示順序(相關性、時間順序)、選取不同關鍵字進行評論篩選等等!希望各位能收穫滿滿!

若已了解相關概念,可以直接往下滑到最後觀看實作程式碼~

動態網頁爬蟲一切的開始都是從網頁檢視器,觀察觀察再觀察!

更多動態網頁爬蟲相關文章:

  1. 動態網頁爬蟲第一道鎖 — Selenium教學:如何使用Webdriver、send_keys(附Python 程式碼)
  2. 動態網頁爬蟲第二道鎖 — Selenium教學:如何使用find_element(s)取得任何網頁上能看到的內容(附Python 程式碼)

《本文架構》

  1. 獲取單一評論網頁架構
  2. 取得評論內容(評論者名稱、評論次數、星評、評論時間、評論文字內容)
  3. 獲取評論圖片連結
  4. 選擇評論排序方法
  5. 點選關鍵字篩選評論

獲取單一評論網頁架構

在爬取評論資料時,我們同樣要先來破解一下網頁架構,幸好Google的架構比起Instagram及Facebook好閱讀的多,classname也有意義能直接閱讀,爬蟲相對的也簡單許多。

首先,我們找到包含單一評論所有需要的資料的框架,也就是classname為「section-review ripple-container GLOBAL__gm2-body-2」的內容,如圖一所示我們可以使用 beautifulsoup 的 find_all() 函式輕鬆的把所有目前已加載的評論資料抓下來,並將爬取下來的各個評論儲存在列表(List)裡。

解決評論動態加載的問題請看此:Google Map Review 動態爬蟲:如何解決評論動態加載的問題以及在不同視窗間跳轉、滑動

圖一、單一評論內容的網頁框架。

程式碼如下:

之後的內容,我將以第一篇評論為例進行解說。

取得評論內容

接下來就到重頭戲了!就像我一直強調的「看得到的就爬得下來!」,我們要一個一個找到我們需要的內容,並用Selenium的各種方法爬下來。

首先是評論者名稱,使用網頁檢視器點選想要檢視的元素,找到其classname或id,可以使用beautifulsoup或是Selenium的方法來獲取內容,如圖二所示。找到在classname為「section-review-title」的框架下,含有評論者名稱的文字內容,使用find()的方法並搭配.text的屬性,即可輕鬆地抓出評論者名稱。


本篇文章會從頭複習一下,如何檢視網頁及找到所需的資訊,若是您只需要程式碼的話,那也可以直接往下滑到最後唷~

動態網頁爬蟲一切的開始都是從網頁檢視器,觀察觀察再觀察!

Photo by: Christina @ wocintechchat.com

本篇文章,將會帶領大家抓取Instagram貼文的發文時間!

發文時間為什麼很重要呢?因為「時間」在後續分析內會起到相當大的作用!

若您是粉專帳號擁有者:

一定會想知道自己付錢打的廣告有沒有生效?何時生效?

按讚數、留言數是否跟發文時間有關?

早上發文還是晚上發文效果比較好呢?

若您是分析人員,更是應該了解時間是分析上的重大指標,因為:

有了發文時間就能更有效率更有意義的排序貼文並視覺化更多資料了

例如:粉專一個月內成長趨勢圖、貼文發布後一個月的按讚數、留言數成長曲線!帳號未來的成長潛力也會因此而一目瞭然!

話不多說,我們趕快開始介紹吧!

本文將以bbcnews的此篇文章為例

(本文資料畫面來源:https://www.instagram.com/p/CEYqVrtp1HA/)

檢視網頁

第一步,我們先打開網頁檢視器(Windows系統:請按f12、macOS系統:請按option+command+c)可以看到以下視窗(圖一)。


歡迎回到 Google map review動態網頁爬蟲系列文章第三篇~

本篇會帶領各位深入GOOGLE MAP REVIEW的網頁架構,講解如何從搜尋結果進入店面資訊頁,之後跳轉至所有評論頁面,並且在評論頁下滑動態加載評論資料,最後返回店家頁面或搜尋結果頁面!希望各位能收穫滿滿!

若已了解相關概念,可以直接往下滑到最後觀看實作程式碼~

動態網頁爬蟲一切的開始都是從網頁檢視器,觀察觀察再觀察!

更多動態網頁爬蟲相關文章:

  1. 動態網頁爬蟲第一道鎖 — Selenium教學:如何使用Webdriver、send_keys(附Python 程式碼)
  2. 動態網頁爬蟲第二道鎖 — Selenium教學:如何使用find_element(s)取得任何網頁上能看到的內容(附Python 程式碼)

《本文架構》

  1. 載入所有評論
  2. 如何解決動態加載(在評論視窗下滑來加載評論內容)
  3. 如何回到店家資訊頁面
  4. 如何回到搜尋結果頁面

載入所有評論

首先,先進到搜尋結果的畫面,如圖一所示,我們來爬取看看大安區附近某知名連鎖咖啡廳的相關評論XD

圖一、「大安區 星巴克」的Google Map搜尋結果。

點選第一家商家後,會看到此店家的相關營業訊息,如圖二所示。但我們想要的評論資料在哪裡呢?


Base R基礎應用包裡本來就有哪些好用的變數呢?

前言

這一系列是我個人的學習紀錄,學習過程中覺得意外好用或是可以整理一下的會特別記錄下來,也會不定時更新。

正文

Base R 內建變數總共只有五種:

  1. LETTERS:所有26個大寫字母。
  2. letters:所有26個小寫字母。
  3. month.abb:所有12個月份的縮寫表示
  4. month.name:所有12個月份的名稱。
  5. R.version.string:顯示當前使用的R語言版本。

後記

在實作過這麼多進階packages之後,決定重頭研究Base R等基礎packages。有時候會帶給自己意外的驚喜(例如有些code可以不用寫的那麼麻煩…)

有特別想要補充的也可以留言告訴我喔~


找到某個目標之後想一網打盡附近所有符合條件的內容嗎?那就用Selenium的新功能吧!

如何使用Selenium的相對定位器(Relative Locators)?

什麼是相對定位器Relative Locators?相對定位器對應到我們平常慣用的Selenium絕對定位器,也就是XPath、css selector那些。

而Selenium 4提供了幾種相對定位器的方法,配合with_tag_name方法使用,適合爬取特定型態的動態網站。

相對定位器好用之處在於,可以直接以視覺上的相對位置來抓取我們想要的內容,許多網站頁面看起來沒有變動,但裡面的層層疊疊的架構不知道變了多少次(頭痛)。這時相對定位器就派上用場啦!用的巧甚至可以大大降低爬蟲程式碼維護的時間(當然除非網頁大更新大改本,那也只能投降了)

推薦閱讀:

1. 動態網頁爬蟲第一道鎖 — Selenium教學:如何使用Webdriver、send_keys(附Python 程式碼)

2. 動態網頁爬蟲第二道鎖 — Selenium教學:如何使用find_element(s)取得任何網頁上能看到的內容(附Python 程式碼)

正文開始~

Selenium 4提供了相對定位器的方法,可以幫助我們查找網頁元素附近的元素。總共有以下五種方法:

  1. above
  2. below
  3. toLeftOf
  4. toRightOf
  5. near

也就是上、下、左、右以及附近!

使用方法如下:

1. above():獲取頁面上方第一個符合條件的網頁元素。

#from selenium.webdriver.support.relative_locator import with_tag_namepasswordField = driver.find_element(By.ID, “password”)emailAddressField = driver.find_element(with_tag_name(“input”).above(passwordField))

2. below():獲取頁面下方第一個符合條件的網頁元素。

#from selenium.webdriver.support.relative_locator import with_tag_nameemailAddressField = driver.find_element(By.ID, “email”)passwordField = driver.find_element(with_tag_name(“input”).below(emailAddressField))

3. toLeftOf():獲取頁面左方第一個符合條件的網頁元素。

#from selenium.webdriver.support.relative_locator import with_tag_namesubmitButton = driver.find_element(By.ID, “submit”)cancelButton = driver.find_element(with_tag_name(“button”).to_left_of(submitButton))

4. toRightOf():獲取頁面右方第一個符合條件的網頁元素。

#from selenium.webdriver.support.relative_locator import with_tag_nameButton1 = driver.find_element(By.ID, “cancel”)submitButton = driver.find_element(with_tag_name(“button”).to_right_of(cancelButton))

5. near():頁面附近(50 pixel)以內,第一個符合條件的網頁元素。

#from selenium.webdriver.support.relative_locator import with_tag_nameemailAddressLabel = driver.find_element(By.ID, “lbl-email”)emailAddressField = driver.find_element(with_tag_name(“input”).near(emailAddressLabel))

定位方法是使用網頁上的畫面,人眼直接看到的相對位置。例如:「關於 Google」在「Google 商店」的左方。

Clarissa RJ Tai

"Step by step approaching my dream. Welcome to the world of DATA."

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store