Data Science 入門:Selenium 初體驗 — Data Scientist, Machine Learning Engineer 不專業薪情分析
最近剛好跟朋友談到 Data Scientist 在台灣的薪水,但手邊一直沒有相關的統計數據,於是把腦筋動到了 Yourator 上,但發現用傳統 python 的 requests 似乎會被 yourator 拒絕存取,就摸索了一下 Selenium,成功透過 Selenium 騙過 yourator 獲取到我想要的資料。這篇文章就像是一個小的 Data Science Project,希望能幫助到一些想要入門 Data Science 的人!
一、安裝會用到的libraries:
Seleium, BeautifulSoup, pandas, re (regular expression)
Conda版本:
conda install -c conda-forge seleniumconda install -c conda-forge pandasconda install -c anaconda beautifulsoup4
Pip 版本:
pip install seleniumpip install pandaspip install beautifulsoup4
如果你跟我一樣使用firefox:請下載這個driver。
如果你是使用Google Chrome:請下載這個driver。
安裝完之後,請確保自己的瀏覽器是目前最新的版本,
二、Data Extracting: 開始抓資料 (selenium):
selenium 會開啟你的 browser 然後將資訊從 driver.page_source 存到 web_content,這時候我們就可以透過這個 web_content 來獲得我們要的資訊。
三、Data Parsing: 開始解析資料 (Beautiful soup):
這邊就不多做介紹了,因為我本身對 Beautiful Soup 也不是特別熟稔,總之就是找出所有 class 為 y-card y-card-horizontal 的地方,在找出裡面的 職稱、公司名稱、薪資:
(二) + (三):因為 Machine Learning, Data Science 的職缺有三頁,因此我就寫了一個loop 版本的,一次把資訊都抓下來
titles:
商業資料分析師(Business Data Analyst),
深度 / 機器學習,
風控模型算法工程師...(省略)
companies:
UrCosme (@cosme TAIWAN),
PEZZALoan by GDP,
PEZZALoan by GDP... (省略)
salaries:
面議(經常性薪資達4萬元),
NT$ 1,000,000 - 2,000,000 (年薪),
NT$ 1,000,000 - 1,500,000 (年薪)... (省略)
四、Data Preprocessing 資料預處理 (pandas, re):
import pandas as pd# Assemble what we just get!
df = pd.DataFrame(zip(titles, companies, salaries))
df.columns = ['job_title', 'company_name', 'salary']
df
五、結果:
因為 Pandas 預設顯示float的方式會轉換成科學記號 (例如:3e10之類的)所以要轉換成我們比較好讀的格式:
至於第二行,因為我的朋友很厲害,我覺得年薪一百萬以下的工作他可能不會考慮,所以就幫他 drop 掉了。
pd.options.display.float_format = '{:.2f}'.format
df_high = df[df['month_salary_high'] >= 1000000]
df_high
太多了太多了,我朋友說他時間寶貴,他想要知道所有這些工作的總數,lower/upper bound 的平均數、標準差、四分位數!
df_high.describe()
describe會將所有數值的資料,做這些計算一次全部列出來,所以這些工作總共有24個,lower bound 平均數: 98萬多,upper bound 平均數 175萬多。
你可能會疑惑,column: salary_low、salary_high也是數值,為什麼沒有跑出來,因為他們其實是string。
結語:
其實這就像是一個小型 Data Science 更準確地來說會被歸類在 Data Engineering 的 Project(可能會有人不認同),從獲得數據(selenium)、再將數據清理乾淨(BeautifulSoup,regular expression)、獲得我想要的薪資資訊(pandas),其實 data science 沒那麼複雜沒那麼難,只是在大型的專案中,獲得數據、清理數據、分析數據、獲取資訊都會有更深入一些的作法,如果你跟我一樣對於花半個小時來寫 code ,然後對最後得到的這些簡單統計資訊感到開心的話,恭喜你!趕快和我一起加入 Data science 吧!
參考資料: