Web API: cnyes & 104.com#
slide for getting json data online
Finding data url
Scraping 104.com job info
Understanding how to send request and get back response
Send request with Cookie, payload, Referer…
Send web requests#
瀏覽器在瀏覽一個頁面時,實際上所做的動作是對對對方伺服器發出一個HTTP要求(request),對方伺服器會根據這個要求合不合法來決定要給對方什麼樣的回應(response)。這些回應主要有如HTTP Status Code上所有的情形。例如對方伺服器如果發現要求的內容是對的,但權限是有問題的,就會回應一個「403 Forbidden」的狀態碼(Status Code)。而如果能夠順利拿回資料的話,便會回應「200 OK」並把所要求的資料在回應中傳回來。
HTTP要求有兩類,分別是GET()
和POST()
。POST()
通常是要填寫表單資訊的時候所送出的要求,例如需要指明要哪一區、哪一種類型的房子、或哪一種類型的車票等。而一般新聞網站或社群網站多會用GET()
取回資料。
import requests
import json
response = requests.get('https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json')
response.json()
type(response.json())
list
Practice: Find out and traverse data behind urls#
逐一測試過每一個link是否都讀得到資料,以獲得對這些資料概略了解。
(hint) Using
requests.get(url, timeout=(x, y))
to set the limitation of waiting timetimeout=(x, y)
: Max x seconds to connect to server and max y seconds to wait on responsehttps://data.moi.gov.tw/moiod/System/Principle.aspx?Sample=2
Canyes#
url_cnyes = "https://news.cnyes.com/api/v3/news/category/headline?startAt=1588262400&endAt=1589212799&limit=30"
res = requests.get(url_cnyes).json()
print(type(res))
print(res.keys())
<class 'dict'>
dict_keys(['items', 'message', 'statusCode'])
PChome 24h product search#
url_pchome = "https://ecshweb.pchome.com.tw/search/v3.3/all/results?q=iphone&page=1&sort=sale/dc"
res = requests.get(url_pchome).json()
print(type(res))
print(res.keys())
<class 'dict'>
dict_keys(['QTime', 'totalRows', 'totalPage', 'range', 'cateName', 'q', 'subq', 'token', 'isMust', 'prods'])
Dcard#
Dcard API最近又做了改版,用以下的Code應該沒辦法順利撈回,但你也可以測試看看,可以看到什麼樣的錯誤訊息。
url_dcard = "https://www.dcard.tw/service/api/v2/forums/relationship/posts?limit=50"
user_agent_dcard = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.34"
headers = {'User-Agent': user_agent_dcard}
res = requests.get(url_dcard, headers = headers)
print(res)
<Response [403]>
(Option) Write a function to load json data#
def get_web_json(url, headers=""):
response = requests.get(url, timeout=(3, 5), headers=headers)
print("Response Code:", response.status_code)
if not response.ok:
return None
data = response.json()
return data
# get_web_json(url_pchome)
# get_web_json(url_cnyes)
Scraping 104.com#
Address
https://www.104.com.tw/jobs/search/list?ro=0&kwop=7&keyword=data%20scientist&expansionType=area%2Cspec%2Ccom%2Cjob%2Cwf%2Cwktm&order=14&asc=0&page=2&mode=s&jobsource=2018indexpoc
Step01. Get the 1st page (but fails)#
先嘗試用上面的方法獲取104.com的搜尋結果的第一頁資料網址,結果應該會傳回來一個空的HTML無法傳回資料。這是因為通常服務提供方會嘗試要求提出拜訪要求的瀏覽器需要提供一些簡單的驗證機制,例如是用什麼瀏覽器連上去的(稱為User-agent,DCard會要求這樣的資訊)、是從哪一個頁面跳過去的(稱為Referer,104.com就有這樣的要求)。
撰寫爬蟲時必須「模仿」瀏覽器的機制,如果對方希望瀏覽器提供這樣的資訊,那撰寫爬蟲時也就要提供這樣的資訊。
url_104 = 'https://www.104.com.tw/jobs/search/api/jobs?jobsource=index_s&keyword=%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8&mode=s&order=15&page=1&pagesize=20&'
response = requests.get(url_104)
print(response.status_code)
403
print(response.text)
<html><head></head><body></body></html>
print(response.headers)
{'Date': 'Thu, 27 Mar 2025 07:18:23 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Accept-Encoding', 'cf-cache-status': 'DYNAMIC', 'Server': 'cloudflare', 'CF-RAY': '926d1d067fc66a84-TPE', 'Content-Encoding': 'gzip'}
Trick. Write html to file#
當明明知道他是一個json,卻一直無法順利用.json()
將其拆且為list
or dict
的型態時,最有可能的問題是,該網址設了一些檢核機制讓我們不能那麼粗暴草率地拿到資料,導致它傳回來給我們的是一個用html編寫成的錯誤訊息,例如stuatus code: 403。這時候我要怎麼知道發生錯誤?一種方式是把status code印出來看看;另一種方式是,他可能也是傳給你status code:200,但實際上就是傳回一個告知你不能存取的html。這時候我們可以採取的作法就是把該HTML,也就是回傳的結果寫入到.html檔,然後用瀏覽器開啟看看他究竟傳回來什麼錯誤訊息。
觀察上面response.text
中的回應顯然是以HTML格式撰寫,而下方程式碼會把回應內容寫到一個HTML檔案裡面去,可以在本機端或CoLab上點開該HTML檔來觀察看看究竟傳回來什麼東西。
with open('temp_output.html', 'w') as fout:
fout.write(response.text)
# webbrowser cannot work, why?
import webbrowser
webbrowser.open_new_tab('temp_output.html')
True
Practice. Observe youbike data headers#
Youtube data所回傳的是一個JSON檔,而上述104.com目前回傳的資料內容是個HTML檔,觀察看看,youbike回應標題是什麼(response headers)?如果要很會寫爬蟲,一定要會觀察header,而這只是最簡單的一種情形。
import requests
import json
response = requests.get('https://tcgbusfs.blob.core.windows.net/dotapp/youbike/v2/youbike_immediate.json')
print(response)
print(response.status_code)
print(type(response)) # <class 'requests.models.Response'>
print(type(response.text)) # <class 'str'>
<Response [200]>
200
<class 'requests.models.Response'>
<class 'str'>
print(response.headers)
import pandas as pd
print(pd.DataFrame.from_dict(response.headers, orient='index'))
{'Content-Length': '808177', 'Content-Type': 'application/json; charset=UTF-8', 'Content-MD5': 'mA7/xcXHwZ3iIgSCq6CoMA==', 'Last-Modified': 'Thu, 27 Mar 2025 07:18:09 GMT', 'ETag': '0x8DD6CFF86FB107E', 'Server': 'Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0', 'x-ms-request-id': '7a9aca76-601e-003e-02e8-9ef7d6000000', 'x-ms-version': '2009-09-19', 'x-ms-lease-status': 'unlocked', 'x-ms-blob-type': 'BlockBlob', 'Access-Control-Allow-Origin': '*', 'Date': 'Thu, 27 Mar 2025 07:18:23 GMT'}
0
Content-Length 808177
Content-Type application/json; charset=UTF-8
Content-MD5 mA7/xcXHwZ3iIgSCq6CoMA==
Last-Modified Thu, 27 Mar 2025 07:18:09 GMT
ETag 0x8DD6CFF86FB107E
Server Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id 7a9aca76-601e-003e-02e8-9ef7d6000000
x-ms-version 2009-09-19
x-ms-lease-status unlocked
x-ms-blob-type BlockBlob
Access-Control-Allow-Origin *
Date Thu, 27 Mar 2025 07:18:23 GMT
Step02. Add Referer to get 104 data#
現在我們來加入一些對方伺服器可能會要求我們發出request的時候提供的東西,最常見的有以下的資訊。但,實際上我們得一個一個測試看看,才會知道對方要求什麼。通常會從User-agent測起,再來Referer、再來Cookie。但有經驗的人多半一看就猜得到。
User-Agent: 你用什麼瀏覽器或系統
Referer: 你從哪個頁面點選、跳轉過來
Cookies: 經過與伺服器建立連結後,他給了你什麼資訊好讓你持續可以待在這個頁面。
下方程式碼在送出GET()
要求時也一併送出了Referer的資訊'https://www.104.com.tw/'
,意義相當於偽裝成先打開104.com的首頁後,從首頁進入這個查詢連結。理論上如果沒進入首頁,就直接進入查詢連結,不是非常可疑嗎?所以,有些伺服器會偵測,這個要求是從哪一個頁面網址點選後轉過來的,
url_104 = 'https://www.104.com.tw/jobs/search/api/jobs?jobsource=index_s&keyword=%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8&mode=s&order=15&page=1&pagesize=20'
headers = {
'referer': 'https://www.104.com.tw/',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.34'
}
raw = requests.get(url_104, headers=headers).json()
type(raw)
dict
Step03. Traverse data to get the data block#
觀察一下資料的概況,並把他轉為pandas來觀察它。
print(raw.keys())
print(type(raw['data']))
print(type(raw['data'][0]))
df = pd.DataFrame(raw['data'])
df
# print(raw['data'].keys())
# print(type(raw['data']['list']))
# print(type(raw['data']['list'][0]))
# df = pd.DataFrame(raw['data']['list'])
# df
dict_keys(['data', 'metadata'])
<class 'list'>
<class 'dict'>
appearDate | applyCnt | coIndustry | coIndustryDesc | custName | custNo | description | descSnippet | mrtDist | jobAddress | ... | s5 | d3 | hrBehaviorPR | jobCat | labels | isSave | isApplied | applyDate | userApplyCount | isActivelyHiring | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 20250324 | 5 | 1004001007 | 金融控股業 | 富邦產物保險股份有限公司 | 70826461000 | ★富邦產險招募MA:經營管理組\n目標以成為企業及個人保險之全方位經營管理人才為發展方向,歷... | ★富邦產險招募MA:經營管理組\n目標以成為企業及個人保險之全方位經營管理人才為發展方向,歷... | 0.00 | (以大台北地區為主,依公司指派) | ... | 0 | 08:30-17:30 | 0.317307 | [2001001002, 2003002013, 2007001018] | [c@wf7, c@wf35, c@wf28, c@wf4, c@wf31, c@wf9, ... | None | None | None | None | False |
1 | 20250325 | 1 | 1013001002 | 國防事業 | 國家中山科學研究院 | 130000000055232 | 錄取後依考生學經歷、專長、個人特質賦予以下部分或多項工作:\n1. 各類契約(包含中、英文契... | 錄取後依考生學經歷、專長、個人特質賦予以下部分或多項工作:\n1. 各類契約(包含中、英文契... | 0.00 | 中正路佳安段481號 | ... | 0 | 0.199704 | [2002002004, 2002001007, 2002002006] | [c@wf1, c@wf10, c@wf29, c@wf30, c@wf8, c@wf16,... | None | None | None | None | False | |
2 | 20250319 | 7 | 1001004001 | 光電產業 | 聯齊科技股份有限公司 | 130000000047967 | 【關於 NextDrive 資料團隊】\nNextDrive 資料團隊專注於資料洞察與應用,... | 【關於 NextDrive [[[資料]]]團隊】\nNextDrive [[[資料]]]團... | 0.32 | 昆陽街18號2樓 | ... | 0 | 0.886519 | [2007001021, 2007001018, 2007001022] | [c@wf26, c@wf10, c@wf1, c@wf29, c@wf8, c@wf11,... | None | None | None | None | True | |
3 | 20250327 | 8 | 1004003001 | 人身保險業 | (總公司)南山人壽保險股份有限公司 | 11456006000 | 推動人工智能 (AI) 和其他資料科學新技術的應用,並將其成功地導入企業流程中,以提高效率、... | 推動人工智能 (AI) 和其他[[[資料科學]]]新技術的應用,並將其成功地導入企業流程中,... | 0.21 | 莊敬路168號 | ... | 0 | 8:30-17:00 | 0.092319 | [2007001021, 2007001022] | [c@wf3, foreigners@foreigners_tick, c@wf2, c@w... | None | None | None | None | False |
4 | 20250313 | 12 | 1001001002 | 電腦軟體服務業 | 詠鋐智能股份有限公司 | 130000000186926 | 執行資料科學專案,包含理解商務問題、資料分析、提出並驗證解決方案,以及展示專案成果。 \n... | 執行[[[資料科學]]]專案,包含理解商務問題、[[[資料]]]分析、提出並驗證解決方案,以... | 0.06 | 羅斯福路二段100號25樓 | ... | 0 | 09:00-18:00 | 0.634182 | [2007001021, 2007001022, 2007001018] | [c@wf31, c@wf8, c@wf2, foreigners@foreigners_t... | None | None | None | None | False |
5 | 20250304 | 9 | 1001001002 | 電腦軟體服務業 | 維曙智能科技有限公司 | 130000000229061 | 會是您大展身手的地方。歡迎加入我們。\n\n作為資料科學家,需要對新技術保有高度熱誠,能夠歸... | 會是您大展身手的地方。歡迎加入我們。\n\n作為[[[資料科學]]]家,需要對新技術保有高度... | 0.18 | 忠孝東路二段116號5樓 | ... | 0 | 0.560439 | [2007001021, 2007001020, 2007001012] | [c@wf9, c@wf12, c@wf26, c@wf7, c@wf8] | None | None | None | None | False | |
6 | 20250325 | 8 | 1006003001 | 廣告行銷公關業 | 浩騰媒體股份有限公司 | 16832894000 | 道,協助生成動態數據可視化報告 ,讓內部團隊和客戶能快速理解數據結果並做出策略性決策。\n4... | 道,協助生成動態數據可視化報告 ,讓內部團隊和客戶能快速理解數據結果並做出策略性決策。\n4... | 0.03 | 復興北路378號9樓 | ... | 0 | 09:00~18:00 | 0.905547 | [2007001022, 2007001021, 2007001018] | [c@wf2, c@wf35, c@wf9, c@wf31, c@wf10, c@wf7, ... | None | None | None | None | True |
7 | 20250324 | 9 | 1001001003 | 網際網路相關業 | 易可思科技股份有限公司 | 130000000215354 | \n2. 機器學習與深度學習演算法開發及優化。\n3. 進行資料統計分析與視覺化。\n4. ... | \n2. 機器學習與深度學習演算法開發及優化。\n3. 進行[[[資料]]]統計分析與視覺化... | 0.32 | 吉林路24號8樓之2 | ... | 0 | 0.516875 | [2007001021] | [c@wf24, c@wf4, c@wf1, c@wf26, c@wf7, c@wf8, c... | None | None | None | None | False | |
8 | 20250304 | 11 | 1001001002 | 電腦軟體服務業 | 維曙智能科技有限公司 | 130000000229061 | 會是您大展身手的地方。歡迎加入我們。\n\n作為資料科學家,需要對新技術保有高度熱誠,能夠歸... | 會是您大展身手的地方。歡迎加入我們。\n\n作為[[[資料科學]]]家,需要對新技術保有高度... | 0.18 | 忠孝東路二段116號5樓 | ... | 0 | 9:30-18:30 | 0.510947 | [2007001021, 2007001020, 2007001012] | [c@wf26, c@wf12, c@wf7, c@wf8, c@wf9] | None | None | None | None | False |
9 | 20250325 | 11 | 1006002002 | 電視業 | 緯來電視網股份有限公司 | 20913187000 | 1. 進行數據清洗、資料貼標以及特徵工程等資料前處理工作。 \n2. 選用資料科學或人工智慧... | 1. 進行數據清洗、[[[資料]]]貼標以及特徵工程等[[[資料]]]前處理工作。 \n2.... | 0.43 | 瑞光路480號3樓 | ... | 0 | 0.775427 | [2007001012, 2004001010, 2007001009] | [c@wf2, c@wf10, c@wf1, c@wf23, c@wf9, c@wf7] | None | None | None | None | True | |
10 | 20250325 | 7 | 1004001007 | 金融控股業 | 國泰金控_國泰金融控股股份有限公司 | 70827406000 | [工作內容]\n職務包含但不限於以下內容\n- 基於 Python 語言之產品開發,推廣及後... | [工作內容]\n職務包含但不限於以下內容\n- 基於 Python 語言之產品開發,推廣及後... | 0.00 | ... | 0 | 0.172487 | [2007001022, 2007001009] | [c@wf29, c@wf33, c@wf13, c@wf32, c@wf25, c@wf1... | None | None | None | None | False | ||
11 | 20250324 | 12 | 1001001006 | 其它軟體及網路相關業 | 皓博科技股份有限公司 | 130000000076068 | 與部署。\n\n資料科學家在現今數據化時代中扮演重要的角色,憑藉數據分析技能和洞察力,能夠協... | 與部署。\n\n[[[資料科學]]]家在現今數據化時代中扮演重要的角色,憑藉數據分析技能和洞... | 0.27 | 忠孝東路五段508號20樓-3 | ... | 0 | 0.366117 | [2007001012, 2007001021] | [c@wf26, c@wf7, c@wf32, c@wf8, c@wf1, c@wf4, c... | None | None | None | None | False | |
12 | 20250327 | 7 | 1008003006 | 其他專業/科學及技術業 | 工研院 _財團法人工業技術研究院 | 2750963000 | 1. 資料分析軟體模組開發、系統整合與測試。 \n2. 針對資料科學應用主題瞭解領域知識,並... | 1. [[[資料]]]分析軟體模組開發、系統整合與測試。 \n2. 針對[[[資料科學]]]... | 0.00 | 工業二路31號 | ... | 0 | 08:00~17:00 | 0.199704 | [2007001004, 2008001009] | [c@wf3, c@wf23, c@wf21, c@wf30, c@wf1, c@wf12,... | None | None | None | None | False |
13 | 20250324 | 3 | 1001001002 | 電腦軟體服務業 | 緯謙科技股份有限公司 | 130000000175101 | 透過數據蒐集、資料分析與可視化架構,解決商業痛點推動業務增長並提升運營效率,與各部門緊密協作... | 透過數據蒐集、[[[資料]]]分析與可視化架構,解決商業痛點推動業務增長並提升運營效率,與各... | 0.00 | 新台五路一段88號 | ... | 0 | 0.867634 | [2007001004, 2007001012, 2007001021] | [c@wf7, c@wf19, c@wf29, c@wf2, c@wf30, c@wf31,... | None | None | None | None | True | |
14 | 20250326 | 8 | 1001001006 | 其它軟體及網路相關業 | 圖策科技股份有限公司 | 130000000151165 | 【職位名稱】 金融資料科學工程師\n\n【工作內容】\n1. 負責金融數據的蒐集、前處理與清... | 【職位名稱】 金融[[[資料科學]]]工程師\n\n【工作內容】\n1. 負責金融數據的蒐集... | 0.47 | 光復南路65號13樓 | ... | 0 | 0.914398 | [2007001004, 2007001012] | [c@wf1, c@wf7] | None | None | None | None | True | |
15 | 20250326 | 7 | 1001001002 | 電腦軟體服務業 | QNAP_威聯通科技股份有限公司 | 80682695000 | [工作內容]\n1. 透過 NLP 相關技術優化 Chatbot,以提升客戶體驗。\n2. ... | [工作內容]\n1. 透過 NLP 相關技術優化 Chatbot,以提升客戶體驗。\n2. ... | 0.00 | 中興路22號 | ... | 0 | 0.317307 | [2007001021, 2007001022, 2007001012] | [c@wf15, c@wf14, c@wf26, c@wf2, c@wf29, c@wf3,... | None | None | None | None | False | |
16 | 20250324 | 9 | 1008003006 | 其他專業/科學及技術業 | 工研院 _財團法人工業技術研究院 | 2750963000 | \n\n【研究室簡介】\n本研究室專注在發展應用於材料科學與產業之AI相關技術,透過AI平台... | \n\n【研究室簡介】\n本研究室專注在發展應用於材料[[[科學]]]與產業之AI相關技術,... | 0.00 | 中興路四段195號 | ... | 0 | 0.611876 | [2007001021, 2007001018, 2007001020] | [c@wf7, c@wf34, c@wf18, c@wf21, c@wf23, c@wf28... | None | None | None | None | False | |
17 | 20250320 | 18 | 1008003001 | 工商顧問服務業 | 創代科技股份有限公司 | 130000000123231 | 我們正在尋找具備 LLM 經驗的資料科學家 Data Scientist,主要負責 大型語言... | 我們正在尋找具備 LLM 經驗的[[[資料科學]]]家 Data Scientist,主要負... | 0.11 | 松江路101號10樓 | ... | 0 | 0.948939 | [2007001021, 2007001018, 2007001012] | [c@wf1, c@wf7, c@wf29, c@wf12, c@wf17, c@wf34,... | None | None | None | None | True | |
18 | 20250324 | 5 | 1001006002 | 半導體製造業 | 中國砂輪企業股份有限公司 | 3089008000 | 1. 維護已開發之AI模型與Web介面\n2. 協助整合外部合作學校/公司開發之AI模型與W... | 1. 維護已開發之AI模型與Web介面\n2. 協助整合外部合作學校/公司開發之AI模型與W... | 0.00 | 中山路64號 | ... | 0 | 08:00-17:00 | 0.123449 | [2007001022, 2007001020, 2007001021] | [c@wf7, c@wf10, c@wf17, c@wf1, c@wf27, c@wf16,... | None | None | None | None | False |
19 | 20250325 | 8 | 1004001007 | 金融控股業 | 國泰金控_國泰金融控股股份有限公司 | 70827406000 | 【團隊介紹】\n我們是一個充滿熱情與創意的團隊,致力於結合科技與數據驅動保險業的創新變革。在... | 【團隊介紹】\n我們是一個充滿熱情與創意的團隊,致力於結合科技與數據驅動保險業的創新變革。在... | 0.00 | ... | 0 | 0.530392 | [2007001012, 2007001020, 2007001021] | [c@wf2, c@wf7, c@wf8, c@wf23, c@wf25, c@wf4, c... | None | None | None | None | False | ||
20 | 20250325 | 13 | 1004001001 | 銀行業 | 國泰世華商業銀行股份有限公司 | 4231910004 | 性的環境下,實現個人專業成長、累積市場能見度,一起跟上東南亞數位金融市場的快速成長!\n\n... | 性的環境下,實現個人專業成長、累積市場能見度,一起跟上東南亞數位金融市場的快速成長!\n\n... | 0.00 | ... | 0 | 0.782332 | [2007001021, 2007001018] | [c@wf7, c@wf1, c@wf2, c@wf10, c@wf9, c@wf30, c... | None | None | None | None | True | ||
21 | 20250324 | 6 | 1003001015 | 綜合商品批發代理業 | 華翰物產實業股份有限公司 | 80378420000 | ●我們正在尋找數名資料科學家,此職位將\n1. 與領域專家結合資料面將商業問題轉化為可分析的... | ●我們正在尋找數名[[[資料科學]]]家,此職位將\n1. 與領域專家結合[[[資料]]]面... | 0.00 | 青年一路156號 | ... | 0 | 0.907148 | [2007001007, 2003002008] | [c@wf26, c@wf1, c@wf29, c@wf31, foreigners@for... | None | None | None | None | True |
22 rows × 41 columns
Step04. Get next page: get the 2nd, 1st, 3rd, …, page urls#
接下來要從Chrome Development Tools來觀察,下二頁、三頁、四頁的網址為何(例如以下網址)。然後要去觀察這些網址的變化,應該不難觀察在page=1, page=2, page=3的數字上有所變化。通常這種網址的變化都是有規律性的。
https://www.104.com.tw/jobs/search/api/jobs?jobsource=index_s&keyword=%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8&mode=s&order=15&page=2&pagesize=20
https://www.104.com.tw/jobs/search/api/jobs?jobsource=index_s&keyword=%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8&mode=s&order=15&page=3&pagesize=20
https://www.104.com.tw/jobs/search/api/jobs?jobsource=index_s&keyword=%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8&mode=s&order=15&page=40&pagesize=20
因為知道有這樣的規律性,所以就拆解要發出的網址,把網址的頁碼的獨立出來,然後用for-loop來走過每個頁面。
for page in range(1, 6):
url = 'https://www.104.com.tw/jobs/search/api/jobs?jobsource=index_s&keyword=%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8&mode=s&order=15&page=' + str(page) + '&pagesize=20'
# url = 'https://www.104.com.tw/jobs/search/list?ro=0&kwop=7&keyword=data%20scientist&expansionType=area%2Cspec%2Ccom%2Cjob%2Cwf%2Cwktm&order=14&asc=0&page=' + str(page) + '&mode=s&jobsource=2018indexpoc'
raw = requests.get(url, headers=headers).json()
print(len(raw['data']))
22
22
22
22
22
除了列印出來以外,用all_data
這個變項儲存資料,並在for-loop中把每一頁的資料用extend()
附加到all_data
中。
以下程式碼要注意的是,因為頁面沒有第0頁,但range()
預設是從0開始,所以此時要特別寫定range()
要從1開始。
all_data = []
for page in range(1, 3):
url = 'https://www.104.com.tw/jobs/search/api/jobs?jobsource=index_s&keyword=%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8&mode=s&order=15&page=' + str(page) + '&pagesize=20'
raw = requests.get(url, headers=headers).json()
all_data.extend(raw['data'])
print(len(all_data))
22
44
最後我們把整筆資料轉為pandas比較好觀察。
df = pd.DataFrame(all_data)
print(df.shape)
print(len(set(df.jobNo)))
(44, 41)
44
Step05. Detect ending condition#
前面的步驟中我們知道要如何一步一步抓取每一頁的資料,最後還有一個問題就是,抓到什麼時候才要停?通常程式設計師也得留一個線索,才知道要如何在網頁上自動化呈現最後一頁(如同你看網頁時所看到的最後一頁的頁碼)。所以我們得去揣測程式設計師的邏輯,看他是怎麼設計最後一頁的停止機制的。
通常最主要有兩種:
直接顯示最後一頁是多少:那就寫一個爬蟲,直接去偵測這個最後一頁是多少,然後把他當成ending condition。如104.com的例子是有總資料筆數的,除以頁數就可以知道總頁數。
不直接顯示最後一頁是多少(e.g. PCHOME),就設一個夠大的迴圈,讓爬蟲抓抓抓抓到當掉,或者抓到資料沒再新增了,我們就偵測如果抓到的資料是零筆,就讓他跳出迴圈。
print(raw.keys())
print(type(raw['data']))
print(raw['metadata'].keys())
print(raw['metadata']['pagination'])
print(raw['metadata']['pagination']['lastPage'])
# print(raw['data']['pageNo'])
# print("Total Page:", raw['data']['totalPage'])
# print(raw['data']['count'])
# print(raw['data']['totalCount'])
dict_keys(['data', 'metadata'])
<class 'list'>
dict_keys(['pagination', 'isPreciseHotJob', 'filterQuery', 'personalBoost'])
{'count': 22, 'currentPage': 2, 'lastPage': 94, 'total': 1867}
94
Trick. pprint (pretty-print)#
https://docs.python.org/3/library/pprint.html. … The pprint module provides a capability to “pretty-print” arbitrary Python data structures in a form which can be used as input to the interpreter …
Example
class pprint.PrettyPrinter(indent=1, width=80, depth=None, stream=None, *, compact=False, sort_dicts=True, underscore_numbers=False)¶
import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(raw['data'][:2])
[ { 'appearDate': '20250325',
'applyCnt': 5,
'applyDate': None,
'coIndustry': 1011002002,
'coIndustryDesc': '建物裝修及裝潢業',
'custName': '名匠博物館多媒體設計_名匠設計室內裝修有限公司',
'custNo': '15879744000',
'd3': '8:00-17:30',
'descSnippet': '誠徵熟悉室內裝修業工地各式日報表撰寫及看懂施工圖,熟工程監造之內業工程師。\n'
'\n'
'本公司自1985年成立以來,作品無數,都是整個團隊努力的結果,歡迎你的加入。\n'
'我們致力於投入博物館、展覽館從無到有的過程。將專業能力發揮極致、腦力激盪創造新思維,同時與業主共享心中開花結果的喜悅。我們可以很驕傲地說:「名匠設計是一間值得信賴的設計公司!」\n'
'\n'
'目前我們正在進行的是[國家軍事博物館]、[國家檔案館]以及高雄佛光山的[淨土洞窟]。希望對博物館施工工程有興趣的朋友們,加入名匠團隊,這裡絕對是最好的學習成長環境,在國家級的案子中增廣見聞。彼此腦力激盪、發揮創造力,共同打造最能打動人心的展覽!\n'
'\n'
'經營理念 /\n'
'員工永遠是公司最寶貴的資產,我們致力提供優質的學習環境及成長空間。\n'
'滿足客戶需求、追求金質獎章、建立良好口碑。\n'
'熱忱的服務態度、優良的施工品質、打動無數業主與觀眾的心。\n'
'\n'
'獎項 /\n'
'國立臺灣史前文化博物館已於2023年5月19日隆重開幕,文化部長史哲表示「史前館重新開館是今年博物館日最好的禮物,期許重新開館後的史前館,能讓2300萬的臺灣人都到訪一次」。其中,南島廳入口處動畫「世界開始的地方」更榮獲多項殊榮。\n'
'2023 德國柏林iF設計獎\n'
'2022 美國ADC獎動畫類入圍\n'
'2022 臺灣金點設計獎\n'
'\n'
'工程查核 /\n'
'近幾年政府工程品質查核,均獲甲等。\n'
'2020 澎湖生活博物館\n'
'2019 國立臺灣史前文化博物館\n'
'2014 臺北市立天文科學教育館\n'
'\n'
'作品實績 /\n'
'\uf06e\t世貿中心大型展覽:電腦展、食品展、國防展、資訊月;其中為來來飯店贏得五年美食展首獎。 \n'
'\uf06e\t短期巡迴展:農業科技展、台灣燈會、醫療資訊展。 \n'
'\uf06e\t博物館展示:自2002年與美國Museum Arts '
'Inc.合作完成國立臺灣博物館「展示更新工程」設計監造案之後,邁入新的里程碑。\n'
'2022年7月贏得「國家軍事博物館」典藏、圖書、展示、劇場、營運設備委託勞務採購案。\n'
'\uf06e\t'
'文史類:國立故宮博物院、故宮南院、澎湖生活博物館、苗栗客家文物館、國立海洋科技博物館-海洋文化廳、台東國立史前文化博物館。\n'
'\uf06e\t'
'科技類:臺北市立天文科學教育館、苗栗台灣油礦陳列館、國立科學工藝博物館-健康探索廳、國立自然科學博物館-半導體的世界(台積電)、友達光電-達達大師的魔術盒。\n'
'\uf06e\t'
'自然與生態類:嘉義市立博物館、國立臺灣博物館-臺灣的生物、國立科學工藝博物館-氣候變遷、臺北花卉博覽會-養生館、湖山水庫管理中心。\n'
'\uf06e\t'
'其他:佛光山-佛教節慶、蘭陽別院-甲子堂紀念館、臺北捷運逃生體驗營、睿澤香水觀光工廠、中國信託文薈館、法鼓山大愿校史館。\n'
'\n'
'更多作品 /\n'
'https://www.craftsmen.com.tw\n'
'\n'
'福利制度 /\n'
'\uf06e\t保險類 \n'
'1.勞保 \n'
'2.健保 \n'
'\n'
'\uf06e\t其他\n'
'1.年終獎金 \n'
'2.三節獎金\n'
'3.比圖獎金\n'
'4.工作獎金\n'
'5.每月全勤獎金\n'
'6.依表現適時調薪\n'
'\n'
'\uf06e\t休閒類 \n'
'1.春酒聚餐 \n'
'2.國外員工旅遊 \n'
'\n'
'\uf06e\t請 / 休假制度 \n'
'1.週休二日 \n'
'2.特休/年假\n'
'\n'
'\n',
'description': '誠徵熟悉室內裝修業工地各式日報表撰寫及看懂施工圖,熟工程監造之內業工程師。\n'
'\n'
'本公司自1985年成立以來,作品無數,都是整個團隊努力的結果,歡迎你的加入。\n'
'我們致力於投入博物館、展覽館從無到有的過程。將專業能力發揮極致、腦力激盪創造新思維,同時與業主共享心中開花結果的喜悅。我們可以很驕傲地說:「名匠設計是一間值得信賴的設計公司!」\n'
'\n'
'目前我們正在進行的是[國家軍事博物館]、[國家檔案館]以及高雄佛光山的[淨土洞窟]。希望對博物館施工工程有興趣的朋友們,加入名匠團隊,這裡絕對是最好的學習成長環境,在國家級的案子中增廣見聞。彼此腦力激盪、發揮創造力,共同打造最能打動人心的展覽!\n'
'\n'
'經營理念 /\n'
'員工永遠是公司最寶貴的資產,我們致力提供優質的學習環境及成長空間。\n'
'滿足客戶需求、追求金質獎章、建立良好口碑。\n'
'熱忱的服務態度、優良的施工品質、打動無數業主與觀眾的心。\n'
'\n'
'獎項 /\n'
'國立臺灣史前文化博物館已於2023年5月19日隆重開幕,文化部長史哲表示「史前館重新開館是今年博物館日最好的禮物,期許重新開館後的史前館,能讓2300萬的臺灣人都到訪一次」。其中,南島廳入口處動畫「世界開始的地方」更榮獲多項殊榮。\n'
'2023 德國柏林iF設計獎\n'
'2022 美國ADC獎動畫類入圍\n'
'2022 臺灣金點設計獎\n'
'\n'
'工程查核 /\n'
'近幾年政府工程品質查核,均獲甲等。\n'
'2020 澎湖生活博物館\n'
'2019 國立臺灣史前文化博物館\n'
'2014 臺北市立天文科學教育館\n'
'\n'
'作品實績 /\n'
'\uf06e\t世貿中心大型展覽:電腦展、食品展、國防展、資訊月;其中為來來飯店贏得五年美食展首獎。 \n'
'\uf06e\t短期巡迴展:農業科技展、台灣燈會、醫療資訊展。 \n'
'\uf06e\t博物館展示:自2002年與美國Museum Arts '
'Inc.合作完成國立臺灣博物館「展示更新工程」設計監造案之後,邁入新的里程碑。\n'
'2022年7月贏得「國家軍事博物館」典藏、圖書、展示、劇場、營運設備委託勞務採購案。\n'
'\uf06e\t'
'文史類:國立故宮博物院、故宮南院、澎湖生活博物館、苗栗客家文物館、國立海洋科技博物館-海洋文化廳、台東國立史前文化博物館。\n'
'\uf06e\t'
'科技類:臺北市立天文科學教育館、苗栗台灣油礦陳列館、國立科學工藝博物館-健康探索廳、國立自然科學博物館-半導體的世界(台積電)、友達光電-達達大師的魔術盒。\n'
'\uf06e\t'
'自然與生態類:嘉義市立博物館、國立臺灣博物館-臺灣的生物、國立科學工藝博物館-氣候變遷、臺北花卉博覽會-養生館、湖山水庫管理中心。\n'
'\uf06e\t'
'其他:佛光山-佛教節慶、蘭陽別院-甲子堂紀念館、臺北捷運逃生體驗營、睿澤香水觀光工廠、中國信託文薈館、法鼓山大愿校史館。\n'
'\n'
'更多作品 /\n'
'https://www.craftsmen.com.tw\n'
'\n'
'福利制度 /\n'
'\uf06e\t保險類 \n'
'1.勞保 \n'
'2.健保 \n'
'\n'
'\uf06e\t其他\n'
'1.年終獎金 \n'
'2.三節獎金\n'
'3.比圖獎金\n'
'4.工作獎金\n'
'5.每月全勤獎金\n'
'6.依表現適時調薪\n'
'\n'
'\uf06e\t休閒類 \n'
'1.春酒聚餐 \n'
'2.國外員工旅遊 \n'
'\n'
'\uf06e\t請 / 休假制度 \n'
'1.週休二日 \n'
'2.特休/年假\n'
'\n'
'\n',
'hrBehaviorPR': 0.8326258572997556,
'isActivelyHiring': True,
'isApplied': None,
'isSave': None,
'jobAddrNo': 6001001001,
'jobAddrNoDesc': '台北市中正區',
'jobAddress': '',
'jobCat': [2012001009, 2012001010, 2012002002],
'jobName': '內業工程師/工務',
'jobNameSnippet': '內業工程師/工務',
'jobNo': '14406589',
'jobRo': 1,
'jobType': 1,
'labels': ['c@wf1', 'c@wf7', 'c@wf2'],
'lat': 25.0421407,
'link': { 'applyAnalyze': 'https://www.104.com.tw/jobs/apply/analysis/8ks71?channel=104rpt',
'cust': 'https://www.104.com.tw/company/7ame0w0',
'job': 'https://www.104.com.tw/job/8ks71'},
'lon': 121.5198716,
'major': [],
'mrt': '',
'mrtDesc': '',
'mrtDist': 0,
'optionEdu': [2, 3, 4],
'period': 3,
'remoteWorkType': 0,
's10': 50,
's5': 0,
's9': [1],
'salaryHigh': 9999999,
'salaryLow': 50000,
'tags': { 'wf1': {'desc': '', 'param': 'wf1'},
'wf2': {'desc': '', 'param': 'wf2'},
'wf7': {'desc': '', 'param': 'wf7'}},
'userApplyCount': None},
{ 'appearDate': '20250327',
'applyCnt': 2,
'applyDate': None,
'coIndustry': 1011002002,
'coIndustryDesc': '建物裝修及裝潢業',
'custName': '名匠博物館多媒體設計_名匠設計室內裝修有限公司',
'custNo': '15879744000',
'd3': '9:00am~06:30pm',
'descSnippet': '我們正在尋找對博物館有興趣,熟悉 Auto CAD 的施工圖繪製工程師。\n'
'\n'
'本公司自1985年成立以來,作品無數,都是整個團隊努力的結果,歡迎你的加入。\n'
'我們致力於投入博物館、展覽館從無到有的過程。將專業能力發揮極致、腦力激盪創造新思維,同時與業主共享心中開花結果的喜悅。我們可以很驕傲地說:「名匠設計是一間值得信賴的設計公司!」\n'
'\n'
'目前我們正在進行的是[國家軍事博物館]、[國家檔案館]以及高雄佛光山的[淨土洞窟]。希望對設計有想法、有興趣的朋友們,加入名匠團隊,這裡絕對是最好的學習成長環境,在國家級的案子中增廣見聞。彼此腦力激盪、發揮創造力,共同打造最能打動人心的展覽!\n'
'\n'
'經營理念 /\n'
'員工永遠是公司最寶貴的資產,我們致力提供優質的學習環境及成長空間。\n'
'滿足客戶需求、追求金質獎章、建立良好口碑。\n'
'熱忱的服務態度、優良的施工品質、打動無數業主與觀眾的心。\n'
'\n'
'獎項 /\n'
'國立臺灣史前文化博物館已於2023年5月19日隆重開幕,文化部長史哲表示「史前館重新開館是今年博物館日最好的禮物,期許重新開館後的史前館,能讓2300萬的臺灣人都到訪一次」。其中,南島廳入口處動畫「世界開始的地方」更榮獲多項殊榮。\n'
'2023 德國柏林iF設計獎\n'
'2022 美國ADC獎動畫類入圍\n'
'2022 臺灣金點設計獎\n'
'\n'
'工程查核 /\n'
'近幾年政府工程品質查核,均獲甲等。\n'
'2020 澎湖生活博物館\n'
'2019 國立臺灣史前文化博物館\n'
'2014 臺北市立天文科學教育館\n'
'\n'
'作品實績 /\n'
'\uf06e\t世貿中心大型展覽:電腦展、食品展、國防展、資訊月;其中為來來飯店贏得五年美食展首獎。 \n'
'\uf06e\t短期巡迴展:農業科技展、台灣燈會、醫療資訊展。 \n'
'\uf06e\t博物館展示:自2002年與美國Museum Arts '
'Inc.合作完成國立臺灣博物館「展示更新工程」設計監造案之後,邁入新的里程碑。\n'
'2022年7月贏得「國家軍事博物館」典藏、圖書、展示、劇場、營運設備委託勞務採購案。\n'
'\uf06e\t'
'文史類:國立故宮博物院、故宮南院、澎湖生活博物館、苗栗客家文物館、國立海洋科技博物館-海洋文化廳、台東國立史前文化博物館。\n'
'\uf06e\t'
'科技類:臺北市立天文科學教育館、苗栗台灣油礦陳列館、國立科學工藝博物館-健康探索廳、國立自然科學博物館-半導體的世界(台積電)、友達光電-達達大師的魔術盒。\n'
'\uf06e\t'
'自然與生態類:嘉義市立博物館、國立臺灣博物館-臺灣的生物、國立科學工藝博物館-氣候變遷、臺北花卉博覽會-養生館、湖山水庫管理中心。\n'
'\uf06e\t'
'其他:佛光山-佛教節慶、蘭陽別院-甲子堂紀念館、臺北捷運逃生體驗營、睿澤香水觀光工廠、中國信託文薈館、法鼓山大愿校史館。\n'
'\n'
'更多作品 /\n'
'https://www.craftsmen.com.tw\n'
'\n'
'福利制度 /\n'
'\uf06e\t保險類 \n'
'1.勞保 \n'
'2.健保 \n'
'\n'
'\uf06e\t其他\n'
'1.年終獎金 \n'
'2.三節獎金\n'
'3.比圖獎金\n'
'4.工作獎金\n'
'5.每月全勤獎金\n'
'6.依表現適時調薪\n'
'\n'
'\uf06e\t休閒類 \n'
'1.春酒聚餐 \n'
'2.國外員工旅遊 \n'
'\n'
'\uf06e\t請 / 休假制度 \n'
'1.週休二日 \n'
'2.特休/年假',
'description': '我們正在尋找對博物館有興趣,熟悉 Auto CAD 的施工圖繪製工程師。\n'
'\n'
'本公司自1985年成立以來,作品無數,都是整個團隊努力的結果,歡迎你的加入。\n'
'我們致力於投入博物館、展覽館從無到有的過程。將專業能力發揮極致、腦力激盪創造新思維,同時與業主共享心中開花結果的喜悅。我們可以很驕傲地說:「名匠設計是一間值得信賴的設計公司!」\n'
'\n'
'目前我們正在進行的是[國家軍事博物館]、[國家檔案館]以及高雄佛光山的[淨土洞窟]。希望對設計有想法、有興趣的朋友們,加入名匠團隊,這裡絕對是最好的學習成長環境,在國家級的案子中增廣見聞。彼此腦力激盪、發揮創造力,共同打造最能打動人心的展覽!\n'
'\n'
'經營理念 /\n'
'員工永遠是公司最寶貴的資產,我們致力提供優質的學習環境及成長空間。\n'
'滿足客戶需求、追求金質獎章、建立良好口碑。\n'
'熱忱的服務態度、優良的施工品質、打動無數業主與觀眾的心。\n'
'\n'
'獎項 /\n'
'國立臺灣史前文化博物館已於2023年5月19日隆重開幕,文化部長史哲表示「史前館重新開館是今年博物館日最好的禮物,期許重新開館後的史前館,能讓2300萬的臺灣人都到訪一次」。其中,南島廳入口處動畫「世界開始的地方」更榮獲多項殊榮。\n'
'2023 德國柏林iF設計獎\n'
'2022 美國ADC獎動畫類入圍\n'
'2022 臺灣金點設計獎\n'
'\n'
'工程查核 /\n'
'近幾年政府工程品質查核,均獲甲等。\n'
'2020 澎湖生活博物館\n'
'2019 國立臺灣史前文化博物館\n'
'2014 臺北市立天文科學教育館\n'
'\n'
'作品實績 /\n'
'\uf06e\t世貿中心大型展覽:電腦展、食品展、國防展、資訊月;其中為來來飯店贏得五年美食展首獎。 \n'
'\uf06e\t短期巡迴展:農業科技展、台灣燈會、醫療資訊展。 \n'
'\uf06e\t博物館展示:自2002年與美國Museum Arts '
'Inc.合作完成國立臺灣博物館「展示更新工程」設計監造案之後,邁入新的里程碑。\n'
'2022年7月贏得「國家軍事博物館」典藏、圖書、展示、劇場、營運設備委託勞務採購案。\n'
'\uf06e\t'
'文史類:國立故宮博物院、故宮南院、澎湖生活博物館、苗栗客家文物館、國立海洋科技博物館-海洋文化廳、台東國立史前文化博物館。\n'
'\uf06e\t'
'科技類:臺北市立天文科學教育館、苗栗台灣油礦陳列館、國立科學工藝博物館-健康探索廳、國立自然科學博物館-半導體的世界(台積電)、友達光電-達達大師的魔術盒。\n'
'\uf06e\t'
'自然與生態類:嘉義市立博物館、國立臺灣博物館-臺灣的生物、國立科學工藝博物館-氣候變遷、臺北花卉博覽會-養生館、湖山水庫管理中心。\n'
'\uf06e\t'
'其他:佛光山-佛教節慶、蘭陽別院-甲子堂紀念館、臺北捷運逃生體驗營、睿澤香水觀光工廠、中國信託文薈館、法鼓山大愿校史館。\n'
'\n'
'更多作品 /\n'
'https://www.craftsmen.com.tw\n'
'\n'
'福利制度 /\n'
'\uf06e\t保險類 \n'
'1.勞保 \n'
'2.健保 \n'
'\n'
'\uf06e\t其他\n'
'1.年終獎金 \n'
'2.三節獎金\n'
'3.比圖獎金\n'
'4.工作獎金\n'
'5.每月全勤獎金\n'
'6.依表現適時調薪\n'
'\n'
'\uf06e\t休閒類 \n'
'1.春酒聚餐 \n'
'2.國外員工旅遊 \n'
'\n'
'\uf06e\t請 / 休假制度 \n'
'1.週休二日 \n'
'2.特休/年假',
'hrBehaviorPR': 0.6284257064192972,
'isActivelyHiring': False,
'isApplied': None,
'isSave': None,
'jobAddrNo': 6001001004,
'jobAddrNoDesc': '台北市松山區',
'jobAddress': '三民路108號4樓之14',
'jobCat': [2012003006, 2012003001, 2012003002],
'jobName': '施工圖繪製工程師',
'jobNameSnippet': '施工圖繪製工程師',
'jobNo': '11805045',
'jobRo': 1,
'jobType': 1,
'labels': ['c@wf7', 'c@wf1', 'c@wf2'],
'lat': 25.057752,
'link': { 'applyAnalyze': 'https://www.104.com.tw/jobs/apply/analysis/710tx?channel=104rpt',
'cust': 'https://www.104.com.tw/company/7ame0w0',
'job': 'https://www.104.com.tw/job/710tx'},
'lon': 121.563733,
'major': ['其他相關科系', '室內藝術相關', '建築相關'],
'mrt': '',
'mrtDesc': '',
'mrtDist': 0,
'optionEdu': [3, 4, 5],
'period': 4,
'remoteWorkType': 0,
's10': 50,
's5': 0,
's9': [1],
'salaryHigh': 9999999,
'salaryLow': 50000,
'tags': { 'wf1': {'desc': '', 'param': 'wf1'},
'wf2': {'desc': '', 'param': 'wf2'},
'wf7': {'desc': '', 'param': 'wf7'}},
'userApplyCount': None}]
totalPage = raw['metadata']['pagination']['lastPage']
all_data = []
# Uncomment the next line code to scrape from 1 to totalage
totalPage = 2
for page in range(1, totalPage+1):
url = 'https://www.104.com.tw/jobs/search/api/jobs?jobsource=index_s&keyword=%E8%B3%87%E6%96%99%E7%A7%91%E5%AD%B8&mode=s&order=15&page=' + str(page) + '&pagesize=20'
raw = requests.get(url, headers=headers).json()
all_data.extend(raw['data'])
print(len(all_data))
22
44
6. convert to dataframe#
df = pd.DataFrame(all_data)
print(df.shape)
df
(44, 41)
appearDate | applyCnt | coIndustry | coIndustryDesc | custName | custNo | description | descSnippet | mrtDist | jobAddress | ... | s5 | d3 | hrBehaviorPR | jobCat | labels | isSave | isApplied | applyDate | userApplyCount | isActivelyHiring | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 20250324 | 5 | 1004001007 | 金融控股業 | 富邦產物保險股份有限公司 | 70826461000 | ★富邦產險招募MA:經營管理組\n目標以成為企業及個人保險之全方位經營管理人才為發展方向,歷... | ★富邦產險招募MA:經營管理組\n目標以成為企業及個人保險之全方位經營管理人才為發展方向,歷... | 0.00 | (以大台北地區為主,依公司指派) | ... | 0 | 08:30-17:30 | 0.317307 | [2001001002, 2003002013, 2007001018] | [c@wf7, c@wf35, c@wf28, c@wf4, c@wf31, c@wf9, ... | None | None | None | None | False |
1 | 20250325 | 1 | 1013001002 | 國防事業 | 國家中山科學研究院 | 130000000055232 | 錄取後依考生學經歷、專長、個人特質賦予以下部分或多項工作:\n1. 各類契約(包含中、英文契... | 錄取後依考生學經歷、專長、個人特質賦予以下部分或多項工作:\n1. 各類契約(包含中、英文契... | 0.00 | 中正路佳安段481號 | ... | 0 | 0.199704 | [2002002004, 2002001007, 2002002006] | [c@wf1, c@wf10, c@wf29, c@wf30, c@wf8, c@wf16,... | None | None | None | None | False | |
2 | 20250319 | 7 | 1001004001 | 光電產業 | 聯齊科技股份有限公司 | 130000000047967 | 【關於 NextDrive 資料團隊】\nNextDrive 資料團隊專注於資料洞察與應用,... | 【關於 NextDrive [[[資料]]]團隊】\nNextDrive [[[資料]]]團... | 0.32 | 昆陽街18號2樓 | ... | 0 | 0.886519 | [2007001021, 2007001018, 2007001022] | [c@wf26, c@wf10, c@wf1, c@wf29, c@wf8, c@wf11,... | None | None | None | None | True | |
3 | 20250327 | 8 | 1004003001 | 人身保險業 | (總公司)南山人壽保險股份有限公司 | 11456006000 | 推動人工智能 (AI) 和其他資料科學新技術的應用,並將其成功地導入企業流程中,以提高效率、... | 推動人工智能 (AI) 和其他[[[資料科學]]]新技術的應用,並將其成功地導入企業流程中,... | 0.21 | 莊敬路168號 | ... | 0 | 8:30-17:00 | 0.092319 | [2007001021, 2007001022] | [c@wf3, foreigners@foreigners_tick, c@wf2, c@w... | None | None | None | None | False |
4 | 20250313 | 12 | 1001001002 | 電腦軟體服務業 | 詠鋐智能股份有限公司 | 130000000186926 | 執行資料科學專案,包含理解商務問題、資料分析、提出並驗證解決方案,以及展示專案成果。 \n... | 執行[[[資料科學]]]專案,包含理解商務問題、[[[資料]]]分析、提出並驗證解決方案,以... | 0.06 | 羅斯福路二段100號25樓 | ... | 0 | 09:00-18:00 | 0.634182 | [2007001021, 2007001022, 2007001018] | [c@wf31, c@wf8, c@wf2, foreigners@foreigners_t... | None | None | None | None | False |
5 | 20250304 | 9 | 1001001002 | 電腦軟體服務業 | 維曙智能科技有限公司 | 130000000229061 | 會是您大展身手的地方。歡迎加入我們。\n\n作為資料科學家,需要對新技術保有高度熱誠,能夠歸... | 會是您大展身手的地方。歡迎加入我們。\n\n作為[[[資料科學]]]家,需要對新技術保有高度... | 0.18 | 忠孝東路二段116號5樓 | ... | 0 | 0.560439 | [2007001021, 2007001020, 2007001012] | [c@wf9, c@wf12, c@wf26, c@wf7, c@wf8] | None | None | None | None | False | |
6 | 20250325 | 8 | 1006003001 | 廣告行銷公關業 | 浩騰媒體股份有限公司 | 16832894000 | 道,協助生成動態數據可視化報告 ,讓內部團隊和客戶能快速理解數據結果並做出策略性決策。\n4... | 道,協助生成動態數據可視化報告 ,讓內部團隊和客戶能快速理解數據結果並做出策略性決策。\n4... | 0.03 | 復興北路378號9樓 | ... | 0 | 09:00~18:00 | 0.905547 | [2007001022, 2007001021, 2007001018] | [c@wf2, c@wf35, c@wf9, c@wf31, c@wf10, c@wf7, ... | None | None | None | None | True |
7 | 20250324 | 9 | 1001001003 | 網際網路相關業 | 易可思科技股份有限公司 | 130000000215354 | \n2. 機器學習與深度學習演算法開發及優化。\n3. 進行資料統計分析與視覺化。\n4. ... | \n2. 機器學習與深度學習演算法開發及優化。\n3. 進行[[[資料]]]統計分析與視覺化... | 0.32 | 吉林路24號8樓之2 | ... | 0 | 0.516875 | [2007001021] | [c@wf24, c@wf4, c@wf1, c@wf26, c@wf7, c@wf8, c... | None | None | None | None | False | |
8 | 20250304 | 11 | 1001001002 | 電腦軟體服務業 | 維曙智能科技有限公司 | 130000000229061 | 會是您大展身手的地方。歡迎加入我們。\n\n作為資料科學家,需要對新技術保有高度熱誠,能夠歸... | 會是您大展身手的地方。歡迎加入我們。\n\n作為[[[資料科學]]]家,需要對新技術保有高度... | 0.18 | 忠孝東路二段116號5樓 | ... | 0 | 9:30-18:30 | 0.510947 | [2007001021, 2007001020, 2007001012] | [c@wf26, c@wf12, c@wf7, c@wf8, c@wf9] | None | None | None | None | False |
9 | 20250325 | 11 | 1006002002 | 電視業 | 緯來電視網股份有限公司 | 20913187000 | 1. 進行數據清洗、資料貼標以及特徵工程等資料前處理工作。 \n2. 選用資料科學或人工智慧... | 1. 進行數據清洗、[[[資料]]]貼標以及特徵工程等[[[資料]]]前處理工作。 \n2.... | 0.43 | 瑞光路480號3樓 | ... | 0 | 0.775427 | [2007001012, 2004001010, 2007001009] | [c@wf2, c@wf10, c@wf1, c@wf23, c@wf9, c@wf7] | None | None | None | None | True | |
10 | 20250325 | 7 | 1004001007 | 金融控股業 | 國泰金控_國泰金融控股股份有限公司 | 70827406000 | [工作內容]\n職務包含但不限於以下內容\n- 基於 Python 語言之產品開發,推廣及後... | [工作內容]\n職務包含但不限於以下內容\n- 基於 Python 語言之產品開發,推廣及後... | 0.00 | ... | 0 | 0.172487 | [2007001022, 2007001009] | [c@wf29, c@wf33, c@wf13, c@wf32, c@wf25, c@wf1... | None | None | None | None | False | ||
11 | 20250324 | 12 | 1001001006 | 其它軟體及網路相關業 | 皓博科技股份有限公司 | 130000000076068 | 與部署。\n\n資料科學家在現今數據化時代中扮演重要的角色,憑藉數據分析技能和洞察力,能夠協... | 與部署。\n\n[[[資料科學]]]家在現今數據化時代中扮演重要的角色,憑藉數據分析技能和洞... | 0.27 | 忠孝東路五段508號20樓-3 | ... | 0 | 0.366117 | [2007001012, 2007001021] | [c@wf26, c@wf7, c@wf32, c@wf8, c@wf1, c@wf4, c... | None | None | None | None | False | |
12 | 20250327 | 7 | 1008003006 | 其他專業/科學及技術業 | 工研院 _財團法人工業技術研究院 | 2750963000 | 1. 資料分析軟體模組開發、系統整合與測試。 \n2. 針對資料科學應用主題瞭解領域知識,並... | 1. [[[資料]]]分析軟體模組開發、系統整合與測試。 \n2. 針對[[[資料科學]]]... | 0.00 | 工業二路31號 | ... | 0 | 08:00~17:00 | 0.199704 | [2007001004, 2008001009] | [c@wf3, c@wf23, c@wf21, c@wf30, c@wf1, c@wf12,... | None | None | None | None | False |
13 | 20250324 | 3 | 1001001002 | 電腦軟體服務業 | 緯謙科技股份有限公司 | 130000000175101 | 透過數據蒐集、資料分析與可視化架構,解決商業痛點推動業務增長並提升運營效率,與各部門緊密協作... | 透過數據蒐集、[[[資料]]]分析與可視化架構,解決商業痛點推動業務增長並提升運營效率,與各... | 0.00 | 新台五路一段88號 | ... | 0 | 0.867634 | [2007001004, 2007001012, 2007001021] | [c@wf7, c@wf19, c@wf29, c@wf2, c@wf30, c@wf31,... | None | None | None | None | True | |
14 | 20250326 | 8 | 1001001006 | 其它軟體及網路相關業 | 圖策科技股份有限公司 | 130000000151165 | 【職位名稱】 金融資料科學工程師\n\n【工作內容】\n1. 負責金融數據的蒐集、前處理與清... | 【職位名稱】 金融[[[資料科學]]]工程師\n\n【工作內容】\n1. 負責金融數據的蒐集... | 0.47 | 光復南路65號13樓 | ... | 0 | 0.914398 | [2007001004, 2007001012] | [c@wf1, c@wf7] | None | None | None | None | True | |
15 | 20250326 | 7 | 1001001002 | 電腦軟體服務業 | QNAP_威聯通科技股份有限公司 | 80682695000 | [工作內容]\n1. 透過 NLP 相關技術優化 Chatbot,以提升客戶體驗。\n2. ... | [工作內容]\n1. 透過 NLP 相關技術優化 Chatbot,以提升客戶體驗。\n2. ... | 0.00 | 中興路22號 | ... | 0 | 0.317307 | [2007001021, 2007001022, 2007001012] | [c@wf15, c@wf14, c@wf26, c@wf2, c@wf29, c@wf3,... | None | None | None | None | False | |
16 | 20250324 | 9 | 1008003006 | 其他專業/科學及技術業 | 工研院 _財團法人工業技術研究院 | 2750963000 | \n\n【研究室簡介】\n本研究室專注在發展應用於材料科學與產業之AI相關技術,透過AI平台... | \n\n【研究室簡介】\n本研究室專注在發展應用於材料[[[科學]]]與產業之AI相關技術,... | 0.00 | 中興路四段195號 | ... | 0 | 0.611876 | [2007001021, 2007001018, 2007001020] | [c@wf7, c@wf34, c@wf18, c@wf21, c@wf23, c@wf28... | None | None | None | None | False | |
17 | 20250320 | 18 | 1008003001 | 工商顧問服務業 | 創代科技股份有限公司 | 130000000123231 | 我們正在尋找具備 LLM 經驗的資料科學家 Data Scientist,主要負責 大型語言... | 我們正在尋找具備 LLM 經驗的[[[資料科學]]]家 Data Scientist,主要負... | 0.11 | 松江路101號10樓 | ... | 0 | 0.948939 | [2007001021, 2007001018, 2007001012] | [c@wf1, c@wf7, c@wf29, c@wf12, c@wf17, c@wf34,... | None | None | None | None | True | |
18 | 20250324 | 5 | 1001006002 | 半導體製造業 | 中國砂輪企業股份有限公司 | 3089008000 | 1. 維護已開發之AI模型與Web介面\n2. 協助整合外部合作學校/公司開發之AI模型與W... | 1. 維護已開發之AI模型與Web介面\n2. 協助整合外部合作學校/公司開發之AI模型與W... | 0.00 | 中山路64號 | ... | 0 | 08:00-17:00 | 0.123449 | [2007001022, 2007001020, 2007001021] | [c@wf7, c@wf10, c@wf17, c@wf1, c@wf27, c@wf16,... | None | None | None | None | False |
19 | 20250325 | 8 | 1004001007 | 金融控股業 | 國泰金控_國泰金融控股股份有限公司 | 70827406000 | 【團隊介紹】\n我們是一個充滿熱情與創意的團隊,致力於結合科技與數據驅動保險業的創新變革。在... | 【團隊介紹】\n我們是一個充滿熱情與創意的團隊,致力於結合科技與數據驅動保險業的創新變革。在... | 0.00 | ... | 0 | 0.530392 | [2007001012, 2007001020, 2007001021] | [c@wf2, c@wf7, c@wf8, c@wf23, c@wf25, c@wf4, c... | None | None | None | None | False | ||
20 | 20250325 | 13 | 1004001001 | 銀行業 | 國泰世華商業銀行股份有限公司 | 4231910004 | 性的環境下,實現個人專業成長、累積市場能見度,一起跟上東南亞數位金融市場的快速成長!\n\n... | 性的環境下,實現個人專業成長、累積市場能見度,一起跟上東南亞數位金融市場的快速成長!\n\n... | 0.00 | ... | 0 | 0.782332 | [2007001021, 2007001018] | [c@wf7, c@wf1, c@wf2, c@wf10, c@wf9, c@wf30, c... | None | None | None | None | True | ||
21 | 20250324 | 6 | 1003001015 | 綜合商品批發代理業 | 華翰物產實業股份有限公司 | 80378420000 | ●我們正在尋找數名資料科學家,此職位將\n1. 與領域專家結合資料面將商業問題轉化為可分析的... | ●我們正在尋找數名[[[資料科學]]]家,此職位將\n1. 與領域專家結合[[[資料]]]面... | 0.00 | 青年一路156號 | ... | 0 | 0.907148 | [2007001007, 2003002008] | [c@wf26, c@wf1, c@wf29, c@wf31, foreigners@for... | None | None | None | None | True | |
22 | 20250325 | 5 | 1011002002 | 建物裝修及裝潢業 | 名匠博物館多媒體設計_名匠設計室內裝修有限公司 | 15879744000 | 誠徵熟悉室內裝修業工地各式日報表撰寫及看懂施工圖,熟工程監造之內業工程師。\n\n本公司自1... | 誠徵熟悉室內裝修業工地各式日報表撰寫及看懂施工圖,熟工程監造之內業工程師。\n\n本公司自1... | 0.00 | ... | 0 | 8:00-17:30 | 0.832626 | [2012001009, 2012001010, 2012002002] | [c@wf1, c@wf7, c@wf2] | None | None | None | None | True | |
23 | 20250327 | 2 | 1011002002 | 建物裝修及裝潢業 | 名匠博物館多媒體設計_名匠設計室內裝修有限公司 | 15879744000 | 我們正在尋找對博物館有興趣,熟悉 Auto CAD 的施工圖繪製工程師。\n\n本公司自19... | 我們正在尋找對博物館有興趣,熟悉 Auto CAD 的施工圖繪製工程師。\n\n本公司自19... | 0.00 | 三民路108號4樓之14 | ... | 0 | 9:00am~06:30pm | 0.628426 | [2012003006, 2012003001, 2012003002] | [c@wf7, c@wf1, c@wf2] | None | None | None | None | False |
24 | 20250224 | 1 | 1005001007 | 大專校院教育事業 | 慈濟學校財團法人慈濟大學 | 8152423000 | SAS 或 STATA 或 R 等)及資料處理分析能力尤佳\n\n工作內容:\n1. 衛生福... | SAS 或 STATA 或 R 等)及[[[資料]]]處理分析能力尤佳\n\n工作內容:\n... | 0.00 | 圓通路301號 | ... | 0 | 0.699350 | [2016001013] | [c@wf7] | None | None | None | None | False | |
25 | 20250311 | 9 | 1001003003 | 消費性電子產品製造業 | 優式機器人股份有限公司 | 130000000137394 | 我們正在招募熱愛資料科學與深度學習的軟體工程師加入我們的新技術開發團隊。您將運用您對資料分析... | 我們正在招募熱愛[[[資料科學]]]與深度學習的軟體工程師加入我們的新技術開發團隊。您將運用... | 0.00 | 新湖一路151號5樓 | ... | 0 | 0.455607 | [2007001020, 2007001004, 2007001012] | [c@wf2, c@wf26, c@wf24, c@wf12, c@wf31, c@wf1,... | None | None | None | None | False | |
26 | 20250327 | 10 | 1002015001 | 精密儀器相關製造業 | 鴻海集團_英屬開曼群島商鴻騰精密科技股份有限公司台灣分公司 | 130000000109701 | DaVinci應用程序。 \n\n所需條件:\n(學歷)\n 擁有計算機科學、數學、物理學、... | DaVinci應用程序。 \n\n所需條件:\n(學歷)\n 擁有計算機[[[科學]]]、數... | 0.50 | 中山路66號 | ... | 0 | 0.524817 | [2007001020, 2007001021, 2007001012] | [c@wf10, c@wf27, c@wf2, c@wf19, c@wf1, c@wf18,... | None | None | None | None | False | |
27 | 20250327 | 6 | 1001004001 | 光電產業 | 瀚宇彩晶股份有限公司 | 16450500000 | 1.分析社群平台事業單位用戶數據並產出洞見。\n2.依產品需求進行 ETL,資料清洗、分析、... | 1.分析社群平台事業單位用戶數據並產出洞見。\n2.依產品需求進行 ETL,[[[資料]]]... | 0.00 | 行善路168巷15號 | ... | 0 | 08:40-17:40 | 0.545596 | [2007001004, 2007001012] | [c@wf10, c@wf28, c@wf19, c@wf18, c@wf7, c@wf9,... | None | None | None | None | False |
28 | 20250325 | 2 | 1004001001 | 銀行業 | 國泰世華商業銀行股份有限公司 | 4231910004 | \n4. 專案會議召集與議程規劃,並定期向上呈報專案進度\n5. 專案經驗傳承、專案文件管理... | \n4. 專案會議召集與議程規劃,並定期向上呈報專案進度\n5. 專案經驗傳承、專案文件管理... | 0.00 | ... | 0 | 0.376735 | [2004003003, 2004003004, 2004003005] | [c@wf10, c@wf1, c@wf9, c@wf7, c@wf30, c@wf3, c... | None | None | None | None | False | ||
29 | 20250115 | 18 | 1004001001 | 銀行業 | 台北富邦商業銀行股份有限公司 | 3750168000 | 習模型、數據特徵庫、產品推薦系統、大型語言模型(LLM)、自主數據分析平台等專案小組(視職能... | 習模型、數據特徵庫、產品推薦系統、大型語言模型(LLM)、自主數據分析平台等專案小組(視職能... | 0.00 | ... | 0 | 0.855133 | [2007001018, 2007001021, 2007001012] | [c@wf2, c@wf30, c@wf3, c@wf7, c@wf9, c@wf28, c... | None | None | None | None | True | ||
30 | 20250324 | 14 | 1001003001 | 電腦及其週邊設備製造業 | 翔耀實業股份有限公司 | 12364770000 | Python、R 或其他常見的資料科學編程語言的熟練操作經驗。\n4. 熟悉 SQL 及 ... | Python、R 或其他常見的[[[資料科學]]]編程語言的熟練操作經驗。\n4. 熟悉 ... | 0.50 | 光復南路438號12樓 | ... | 0 | 0.194947 | [2007001021, 2007001022, 2007001018] | [c@wf1, c@wf2, c@wf7, c@wf10] | None | None | None | None | False | |
31 | 20241217 | 14 | 1001001003 | 網際網路相關業 | 奧丁丁集團英屬開曼群島商台灣子公司_歐簿客科技股份有限公司 | 130000000053344 | 【職務內容】\n1. 基於LLMs開發應用及聊天功能,設計並優化體驗內容 \n2. 機器學習... | 【職務內容】\n1. 基於LLMs開發應用及聊天功能,設計並優化體驗內容 \n2. 機器學習... | 0.00 | 士林科技園區 | ... | 0 | 0.817841 | [2007001021, 2007001022, 2007001020] | [c@wf9, c@wf8] | None | None | None | None | True | |
32 | 20250324 | 9 | 1004003001 | 人身保險業 | 富邦人壽保險股份有限公司(總公司) | 27935073000 | 1.開發深度學習/機器學習模型,或運用生成式AI(GenAI)、自然語言處理(NLP)、電腦... | 1.開發深度學習/機器學習模型,或運用生成式AI(GenAI)、自然語言處理(NLP)、電腦... | 0.00 | 東興路71號 | ... | 0 | 0.250251 | [2007001021, 2007001022] | [c@wf2, c@wf9, c@wf25, c@wf27, c@wf28, c@wf7] | None | None | None | None | False | |
33 | 20250322 | 14 | 1001001002 | 電腦軟體服務業 | 安瑟樂威股份有限公司 | 130000000176504 | 1. 設計、開發及維護大數據平臺、資料倉儲及相關服務\n2. 收集、清洗、轉換和整合資料,並... | 1. 設計、開發及維護大數據平臺、[[[資料]]]倉儲及相關服務\n2. 收集、清洗、轉換和... | 0.04 | 新生南路一段50號四樓之5 | ... | 0 | 0.788082 | [2007001012, 2007001018, 2007001020] | [c@wf1, c@wf9, c@wf10, c@wf26, c@wf32] | None | None | None | None | True | |
34 | 20250324 | 8 | 1001004002 | 光學器材製造業 | 晶碩光學股份有限公司 | 25021158000 | 1. 利用機器學習、深度學習,以研發廠內適用之模型\n2. 訪談模型需求單位,以適切規劃機器... | 1. 利用機器學習、深度學習,以研發廠內適用之模型\n2. 訪談模型需求單位,以適切規劃機器... | 0.00 | 仁和路二段255號 | ... | 0 | 08:30-17:30 | 0.734386 | [2007001020, 2007001021, 2007001012] | [c@wf7, c@wf2, c@wf18, c@wf10, c@wf4, c@wf9, c... | None | None | None | None | True |
35 | 20240808 | 9 | 1001006001 | IC設計相關業 | Phison Electronics Corp_群聯電子股份有限公司 | 12649951000 | 1. 數據特徵解析, 多維關聯分析.\n2. 各單位異常事件偵/預測.\n3. 藉由量化數據... | 1. 數據特徵解析, 多維關聯分析.\n2. 各單位異常事件偵/預測.\n3. 藉由量化數據... | 0.00 | 群義路1號 | ... | 0 | 0.805801 | [2007001012, 2007001004] | [c@wf26, c@wf7, c@wf30, c@wf16, c@wf1, c@wf25,... | None | None | None | None | True | |
36 | 20250123 | 19 | 1001006001 | IC設計相關業 | 華邦電子股份有限公司 | 22099218000 | Win在起跑點、提早卡位! \n\n\n華邦電子2025校園徵才-(竹北/中科)軟體類_資料... | Win在起跑點、提早卡位! \n\n\n華邦電子2025校園徵才-(竹北/中科)軟體類_[[... | 0.00 | 文興路二段539號 | ... | 0 | 0.602780 | [2007001021] | [c@wf7, c@wf1, c@wf2, c@wf4, deboost@kwdeboost... | None | None | None | None | False | |
37 | 20250326 | 2 | 1001001005 | 數位內容產業 | 行動貝果有限公司 | 53550539000 | Please submit your resume via the following li... | Please submit your resume via the following li... | 0.50 | 東興路51號4樓 | ... | 0 | 0.838981 | [2007001004, 2016001007, 2007001012] | [foreigners@foreigners_tick, c@wf26, c@wf24, c... | None | None | None | None | True | |
38 | 20250320 | 2 | 1004001001 | 銀行業 | 國泰世華商業銀行股份有限公司 | 4231910004 | 1. Hive資料市集設計、開發、管理維護\n2. ETL 問題追蹤與管理\n3. 資料處理... | 1. Hive[[[資料]]]市集設計、開發、管理維護\n2. ETL 問題追蹤與管理\n3... | 0.00 | ... | 0 | 0.240375 | [2007001009] | [c@wf2, c@wf9, c@wf10, c@wf30, c@wf7, c@wf3, c... | None | None | None | None | False | ||
39 | 20250327 | 14 | 1003001004 | 家庭電器/設備及用品批發業 | 上洋產業股份有限公司 | 130000000044023 | 數位轉型和資料科學是提升上洋營運效率與決策效益的關鍵,我們正在尋找一位對數位轉型充滿熱情並具... | 數位轉型和[[[資料科學]]]是提升上洋營運效率與決策效益的關鍵,我們正在尋找一位對數位轉型... | 0.00 | 五權六路39號 | ... | 0 | 08:00~17:00 | 0.971606 | [2007001021, 2007001018, 2004001010] | [c@wf3, c@wf10, c@wf2, c@wf19, 45plus@45invite... | None | None | None | None | True |
40 | 20250323 | 17 | 1001001003 | 網際網路相關業 | 鈊象電子股份有限公司 | 23519738000 | 1.理解研發或商務單位提出之需求,使用數據或AI方法進行分析、提出並驗證解決方法,並展示工作... | 1.理解研發或商務單位提出之需求,使用數據或AI方法進行分析、提出並驗證解決方法,並展示工作... | 0.00 | 五工路130號 | ... | 0 | 9:00-18:00 | 0.564394 | [2007001021, 2007001022, 2007001018] | [c@wf34, c@wf9, c@wf27, c@wf3, c@wf25, c@wf7, ... | None | None | None | None | False |
41 | 20250321 | 14 | 1001002001 | 電信相關業 | 台灣大哥大股份有限公司 | 97176270000 | 1.創建並維運用戶特徵模型\n2.大量資料演算法效能優化\n3.以數據導向支援業務單位之問題... | 1.創建並維運用戶特徵模型\n2.大量[[[資料]]]演算法效能優化\n3.以數據導向支援業... | 0.00 | ... | 0 | 0.628426 | [2007001021, 2007001018] | [c@wf30, c@wf4, c@wf28, c@wf26, c@wf7, c@wf2, ... | None | None | None | None | False | ||
42 | 20250319 | 11 | 1008003001 | 工商顧問服務業 | 台灣經濟新報文化事業股份有限公司 | 23740225000 | 【關於這份工作】\nTEJ成立超過30年,擁有強大的財金數據分析基礎。\n我們希望能將這些數... | 【關於這份工作】\nTEJ成立超過30年,擁有強大的財金數據分析基礎。\n我們希望能將這些數... | 0.50 | 東興路57號11樓 | ... | 0 | 8:30~17:30(午休12:00~13:00) | 0.920437 | [2003001003, 2007001021, 2007001022] | [c@wf31, c@wf7, c@wf32, c@wf24, c@wf8, c@wf10,... | None | None | None | None | True |
43 | 20250325 | 17 | 1004001001 | 銀行業 | 國泰世華商業銀行股份有限公司 | 4231910004 | 【職務說明 What will you do】\n1. 生成式AI、機器學習、深度學習或統計... | 【職務說明 What will you do】\n1. 生成式AI、機器學習、深度學習或統計... | 0.00 | ... | 0 | 0.634182 | [2007001007, 2007001012, 2016001007] | [c@wf10, boost@integ_recruit_5, c@wf9, c@wf7, ... | None | None | None | None | False |
44 rows × 41 columns
Dump files for backup#
因為抓取資料很久很辛苦,所以通常會把它寫到後端的檔案、資料庫,或者雲端的資料庫中。在此,我們選擇把他寫到pandas或者
.json()
比較好讀的json檔。通常不會寫到CSV,因為CSV是以逗點分隔為辨識基礎,但文本中可能也會有逗點,會比較容易出錯。建議若設計了寫入,就立刻讀出來看看,省得不小心寫入錯誤,屆時程式關閉了,資料就取不回來了。
還有另外一種檔案是python的pickle檔。pickle是一種暫存檔,也就是我們現在如果有一個變數是pandas dataframe,寫到pickle再讀出來,他還會是一個pandas dataframe,而且資料型態都不會變。這點其實非常好用,因為如果你把一個dataframe轉為json,你要特別注意那些datetime欄位或multiindex的東西被轉成什麼,又是否能夠讀得回來。也就是如果時間物件要寫入到json檔時,理應要先轉成string,然後讀取回來要做分析時,也要再轉回來datetime。但如果你轉為pickle檔,存進去是什麼樣子,拿出來就是什麼樣子。那pickle檔有缺點嗎?有!就和其他的程式例如R或網頁程式無法通用,也無法直接寫到雲端資料庫。
M1. Dump one variable to json by json library#
import json
# Uncomment the following code
# with open('104_list.json', 'w') as outfile:
# json.dump(all_data, outfile)
M2. Dump and load json by pandas library#
# Uncomment the following code
# with open('104_df.json', 'w') as f:
# f.write(df.to_json())
# Uncomment the following code
# Read-back
# pd.read_json("104_df.json")
M3. Dump multiple variables to pickle#
import pickle
with open('104.pkl', 'wb') as fout: # Python 3: open(..., 'wb')
pickle.dump([all_data, df], fout)
# Uncomment the following code
import pickle
# with open('104.pkl', 'wb') as fout: # Python 3: open(..., 'wb')
# pickle.dump([all_data, df], fout)
Load multiple variables back to objects#
with open('104.pkl', "rb") as fin: # Python 3: open(..., 'rb')
test = pickle.load(fin)
print(type(test[0]))
print(type(test[1]))
# Uncomment the following code
# with open('104.pkl', "rb") as fin: # Python 3: open(..., 'rb')
# test = pickle.load(fin)
# print(type(test[0]))
# print(type(test[1]))
# Uncommment the following code
# test[0][0].keys()
Using timestamp as file name#
因為我們抓取資料的for-loop如果有幾千或幾萬個iterations,勢必很怕抓到一半斷掉或當機,卻又得重抓。所以最好的方式就是,每抓個幾百筆或幾千筆,就留一份檔案。但要如何區分這些檔案的先後順序?通常會用撈取的時間加上資料筆數的先後來作為檔名的一部分,這樣之後就可以觀看這些檔名來知道,究竟資料有沒有抓完,或者當在哪裡。
下面的程式碼將取得的現在時間加到檔名中
with open('104_%s.pkl'%(now), 'wb') as fout: # Python 3: open(..., 'wb')
pickle.dump([all_data, df], fout)
from datetime import datetime
now = datetime.now().strftime("%Y%m%d%H%M%S")
print("Current Time =", now)
# with open('104_%s.pkl'%(now), 'wb') as fout: # Python 3: open(..., 'wb')
# pickle.dump([all_data, df], fout)
Current Time = 20250327151830