世新大學知識經濟發展研究院-助理研究員(公共政策)|世新大學_人事室

我要應徵
學歷: 公共關係相關、公共行政相關、經濟社會及心理學科類,碩士、博士
需加強技能-企業要求 點擊標籤,查看學習內容
PythonRExcelPowerPointWord中文打字20~50英文打字20~50SASSPSS品牌行銷管理提案與簡報技巧市場調查資料分析與報告撰寫廣告企劃案╱文案撰寫英文
符合度
?

履歷符合度:登入計算

適合度
?

性格適合度:登入計算

Python
Python是一種物件導向、直譯式電腦程式語言,也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。這種語言具有非常簡捷而清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的作業系統中執行。 雖然 Python 可能被粗略地分類為「指令碼語言」(script language),但實際上一些大規模軟體開發計劃例如 Zope、Mnet 及 BitTorrent,Google 也廣泛地使用它。 Python 的支援者較喜歡稱它為一種高階動態編程語言,原因是「指令碼語言」泛指僅作簡單編程任務的語言,如 shell script、JavaScript 等只能處理簡單任務的編程語言,並不能與 Python 相提並論。 此外,由於 Python 對於 C 和其他語言的良好支援,很多人還把 Python 作為一種「膠水語言」(glue language)使用。 使用 Python 將其他語言編寫的程式進行整合和封裝。 在 Google 內部的很多專案使用 C++ 編寫性能要求極高的部分,然後用Python呼叫相應的模組。

不知如何開始嗎? 先進行技能挑戰吧~

技能挑戰:初級
目前等級:未達初級
2593 人已通過「初級」測驗,通過率83%,和求職精靈一起探索知識、增強能力!
我要挑戰
Hi~ 分享你的學習心得來幫助後輩或向前輩提問吧!
我要分享
我要提問

動態

全部
影片
文章

Learn Code With Mike品牌創辦人

10/20 21:39

解析Python物件導向設計的3種類型方法

Q:什麼是實體方法(Instance Method)?
Python類別(Class)中沒有加任何裝飾詞(Decorator)的方法(Method),至少要有一個self參數,於方法(Method)被呼叫時指向物件(Object),其後可以依需求增加額外參數,如下範例:
class Cars:
def drive(self):
print("Drive is instance method.")
實體方法(Instance Method)透過self參數可以自由的存取物件(Object)的屬性(Attribute)及其他方法(Method),藉此來改變物件(Object)的狀態,如下範例:
class Cars:
# 建構式
def __init__(self):
self.color = "blue"
def drive(self):
print(f"{self} is {self.color}.")
self.message()
def message(self):
print("Message method is called.")
mazda = Cars()
mazda.drive()
Q:什麼是類別方法(Class Method)?
Python類別(Class)中有@classmethod裝飾詞(Decorator)的方法(Method),被呼叫時,相較於實體方法(Instance Method)的self參數指向物件(Object),類別方法(Class Method)為cls參數,指向類別(Class),如下範例:
class Cars:
# 類別方法(Class Method)
@classmethod
def open_door(cls):
print("Open door is class method.")
由於類別方法(Class Method)的cls參數指向類別(Class),所以類別方法(Class Method)僅能改變類別的狀態,而無法改變物件(Object)的狀態,因為它沒有self參數可以存取物件的屬性(Attribute)及方法(Method)。如下範例:
class Cars:
door = 4
# 類別方法(Class Method)
@classmethod
def open_door(cls):
print(f"{cls} has {cls.door} doors.")
mazda = Cars()
mazda.open_door()
Cars.open_door()
Q:什麼是靜態方法(Static Method)?
Python類別中有@staticmethod裝飾詞(Decorator)的方法(Method),可以接受任意的參數,也因為它沒有self及cls參數,所以靜態方法(Static Method)無法改變類別(Class)及物件(Object)的狀態,如下範例:
class Cars:
#靜態方法
@staticmethod
def accelerate():
print("Accelerate is static method.")
靜態方法(Static Method)在類別(Class)中是一個獨立的方法(Method),通常應用於方法(Method)中無需存取物件(Object)的屬性(Attribute)或方法(Method),單純執行傳入參數或功能上運算的情況,如下範例:
class Cars:
# 速率靜態方法
@staticmethod
def speed_rate(distance, minute):
return distance / minute
van = Cars()
van_rate = van.speed_rate(10000, 20)
print("van rate: ", van_rate)
sports_car_rate = Cars.speed_rate(20000, 20)
print("sports car rate: ", sports_car_rate)
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-method.html )網站觀看更多精彩內容。
  • OOP
  • Python
拍手 1 留言 0 觀看 5 收藏 0

Learn Code With Mike品牌創辦人

10/20 21:27

3個必須瞭解的Python屬性觀念

Q:什麼是實體屬性(Instance Attribute)?
需伴隨物件(Object)的生成來建立,也就是透過點(.)的語法或在建構式(Constructor)中所生成的屬性(Attribute)。各物件(Object)的實體屬性(Instance Attribute)各自獨立,修改某一個物件(Object)的實體屬性(Instance Attribute)值時,不會影響到其他物件。如下範例:
class Cars:
pass
mazda = Cars()
mazda.color = "blue"
toyota = Cars()
toyota.color = "red"
print("mazda color: ", mazda.color)
print("toyota color: ", toyota.color)
接下來我們來看透過建構式(Constructor)所建立的屬性(Attribute):
class Cars:
# 建構式
def __init__(self, color, seat):
self.color = color
self.seat = seat
self.weight = 140
mazda = Cars("blue", 4)
mazda.color = "yellow"
mazda.seat = 8
mazda.weight = 200
print("mazda color: ", mazda.color)
print("mazda seat: ", mazda.seat)
print("mazda weight: ", mazda.weight)
Q:什麼是類別屬性(Class Attribute)?
定義在類別層級的屬性(Attribute),也就是在建構式(Constructor)之外的屬性(Attribute)。可以不需要建立物件(Object),直接透過類別名稱存取。各物件共享類別屬性(Class Attribute)值,也就是說當我們修改類別屬性(Class Attribute)值時,每一個透過此類別(Class)所建立的物件(Object),都會受到影響。如下範例:
class Cars:
door = 4
# 建構式
def __init__(self, color, seat):
self.color = color
self.seat = seat
self.weight = 140
mazda = Cars("blue", 4)
print("mazda original door: ", mazda.door)
Cars.door = 6
print("mazda new door: ", mazda.door)
Q:什麼是屬性(Property)?
是一個允許我們設定及取得屬性(Attribute)值的物件(Object),當我們想要對類別(Class)中的屬性(Attribute)有更多的控制時,就會使用Python的屬性(Property)來達成。如下範例:
class Cars:
# 建構式
def __init__(self, weight):
self.weight = weight
@property
def weight(self):
return self.__weight
@weight.setter
def weight(self, value):
if value <= 0:
raise ValueError("Car weight cannot be 0 or less.")
self.__weight = value
在讀取屬性(Attribute)的方法上方加上@property Decorator,並且將方法名稱修改為weight,這個weight就是屬性(Property)。接著在設定屬性(Attribute)的方法上方加上@property.setter,也就是@weight.setter,意思就是告訴類別(Class)當來源端要設定屬性(Property)值時,要呼叫這個方法(Method)。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-attribute.html )網站觀看更多精彩內容。
  • Python
  • OOP
拍手 1 留言 0 觀看 5 收藏 0
職場力 Python

09/14 09:27

  • Python
  • 工作排行
  • 拓展市場
  • 業務開發
  • 經營管理
  • 職務知多少
  • 薪資排行
拍手 0 留言 0 觀看 8 收藏 1

Learn Code With Mike品牌創辦人

10/19 21:53

淺談Python類別(Class)

Q:什麼是類別(Class)?
簡單來說,就是物件(Object)的藍圖(blueprint)。就像要生產一部汽車時,都會有設計圖,藉此可以知道此類汽車會有哪些特性及功能,類別(Class)就類似設計圖,會定義未來產生物件(Object)時所擁有的屬性(Attribute)及方法(Method)。而定義類別的語法如下:
class classname:
  statement
首先會有class關鍵字,接著自定類別名稱,最後加上冒號。類別名稱的命名原則習慣上使用Pascal命名法,也就是每個單字字首大寫,不得使用空白或底線分隔單字,如下範例:
class MyCars:
Q:什麼是物件(Object)?
就是透過類別(Class)實際建立的實體,就像實際生產出來的汽車(例如:Mazda)。類別(Class)與物件(Object)的關係就像汽車設計圖與汽車實體。而建立物件(Object)的語法如下:
object_name = classname()
範例:
mazda = Cars()
Q:什麼是屬性(Attribute)?
負責存放物件(Object)的資料。設定物件(Object)的屬性值語法如下:
object_name.attribute_name = value
範例:
mazda = Cars() # 建立Cars類別的物件
mazda.color = "blue" #顏色屬性
建立物件(Object)後,才可進行屬性值(Attribute)的設定。會建議使用建構式(Constructor)來進行屬性值(Attribute)的設定。而存取物件的屬性值則透過以下語法:
object_name.attribute_name
範例:
print(mazda.color) # 執行結果:blue
Q:什麼是建構式(Constructor)?
於建立物件(Object)的同時,會自動執行的方法(Method)。所以通常我們會在建構式(Constructor)中初始化物件(Object)的屬性值(Attribute)。至少要有一個self參數,之後利用逗號區隔其他屬性,語法如下:
def __init__(self, color, seat):
  self.color = color # 顏色屬性
  self.seat = seat # 座位屬性
而這個self是什麼意思呢?它代表了實體物件的參考,也就是目前的物件(Object)。這個self就是告訴類別(Class)目前是在設定哪一個物件的屬性(Attribute)。所以範例中的意思就是此物件的color屬性等於傳入的color屬性值,此物件的seat屬性等於傳入的seat屬性值,而傳入屬性值的方式就是在建立物件的時候,如下範例:
class Cars:
def __init__(self, color, seat):
self.color = color # 顏色屬性
self.seat = seat # 座位屬性
mazda = Cars("blue", 4)
範例中於建立mazda物件(Object)的同時,生成其屬性並且初始化屬性值(color和seat)。
Q:什麼是方法(Method)?
可以想像是物件(Object)的行為。定義方法(Method)和函式(Function)的語法很像,都是def關鍵字開頭,接著自訂名稱,但是方法(Method)和建構式(Constructor)一樣至少要有一個self參數,語法如下:
def method_name(self):
  statement
範例:
class Cars:
def __init__(self, color, seat):
self.color = color # 顏色屬性
self.seat = seat # 座位屬性
# 方法(Method)
def drive(self):
print(f"My car is {self.color} and has {self.seat} seats.")
mazda = Cars("blue", 4)
mazda.drive() #執行結果:My car is blue and has 4 seats.
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/01/python-class.html )網站觀看更多精彩內容。
  • OOP
  • Python
拍手 1 留言 0 觀看 2 收藏 0

Learn Code With Mike品牌創辦人

10/19 21:27

7個降低Python網頁爬蟲被偵測封鎖的實用方法(下)

本文將延續「7個降低Python網頁爬蟲被偵測封鎖的實用方法(上)」,接續分享降低Python網頁爬蟲被偵測封鎖的方法。
Q:如何設定參照位址(Referer)
請求表頭(Request Headers)中另一個重要的欄位就是參照位址(Referer),用來告訴網站這個請求(Request)是來自於哪一個網站,如下範例:
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-TW,zh;q=0.9",
"Host": "example.com",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36",
"Referer": "https://www.google.com/" #參照位址
}
response = requests.get(url="https://example.com", headers=headers)
這時候可以使用像SEMRush( https://www.semrush.com/ )的工具,來顯示目標網頁的反向連結,也就是能夠到達目標網頁的其它連結,就可以在Python網頁爬蟲的每一次請求(Request)前,將不同的反向連結設定到參照位址(Referrer)中,讓每一次的來源網站都不相同,降低被網頁偵測到的風險。
Q:如何設定隨機的延遲時間?
在每一次請求(Request)之間,最好設定隨機的延遲時間(Delay),這樣除了防止每一次的請求(Request)間隔時間不同之外,也沒有固定的請求模式,可以參考以下的範例:
delay_choices = [8, 5, 10, 6, 20, 11]
delay = random.choice(delay_choices)
time.sleep(delay) #延遲
Q:使用無頭瀏覽器(Headless Browser)的方法?
無頭瀏覽器(Headless Browser)和一般瀏覽器不一樣的地方是,它沒有圖形化的使用者介面,通常會使用指令的方式來執行,知名的Selenium套件就可以讓開發人員利用程式碼,自動化控制瀏覽器的執行,模擬人類的操作,降低被偵測到的風險,使用的方式可以參考[Python爬蟲教學]整合Python Selenium及BeautifulSoup實現動態網頁爬蟲文章( https://www.learncodewithmike.com/2020/05/python-selenium-scraper.html )。
Q:如何避免掉入網頁蜜罐陷阱(Honeypot Traps)
網頁蜜罐陷阱(Honeypot Traps)就是許多網頁會在HTML原始碼中埋入只有網頁爬蟲會讀取到的隱藏連結或屬性,如果在開發Python網頁爬蟲沒有注意或避開時,很容易就會被偵測到而被封鎖,舉例來說,有個隱藏的連結帶有「display:none」或「visibility: hidden」的CSS屬性等,這是正常的使用者看不到,而網頁爬蟲所能讀取到的。
要避免掉入網頁蜜罐陷阱(Honeypot Traps),除了要注意網頁的HTML原始碼之外,另一個方法就是在開發Python網頁爬蟲時,可以參考該網頁的網站地圖(Sitemap),其中會列出公開給使用者存取的網頁網址,在開發的過程中,就盡量挑選裡面的公開網址來進行爬取。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html )網站觀看更多精彩內容
  • 網頁資料擷取與分析 Python
  • Python
  • 網頁爬蟲
拍手 1 留言 0 觀看 2 收藏 0

Learn Code With Mike品牌創辦人

10/18 23:04

7個降低Python網頁爬蟲被偵測封鎖的實用方法(上)

Q:有哪些降低Python網頁爬蟲被偵測封鎖的方法?
現在的網頁五花八門,其中充滿了許多有價值的資料,因此有許多的使用者都會使用Python網頁爬蟲的技術來進行取得,而這也衍生了可能因為過量的請求(Request),導致網站的伺服器過載,而產生問題。
所以,越來越多的網站開始偵測網頁爬蟲,將其封鎖,這時候,在開發Python網頁爬蟲時,該如何降低被偵測到的風險呢?
後續將分為上下兩篇來分享以下7個方法給讀者進行參考:
1..輪流切換IP位址
2.設定請求表頭(Request Headers)
3.設定使用者代理(User-Agent)
4.設定參照位址(Referer)
5.設定隨機的延遲時間
6.使用無頭瀏覽器(Headless Browser)
7.避免掉入網頁蜜罐陷阱(Honeypot Traps)
Q:如何輪流切換IP位址
如果固定的使用同一組IP位址,在固定的時間內大量的請求(Request)網站,毫無疑問有很大的機率會被認為是網頁爬蟲,進而被封鎖請求(Request)。
因此,要利用Python網頁爬蟲爬取網站時,會建議需要擁有多組的IP位址,在每一次的請求(Request)時,輪流切換使用,來降低被偵測到的機會,可以參考使用Proxy切換服務,像是Scrapingdog( https://www.scrapingdog.com/ )等,或是IP切換服務,像是ScraperAPI( https://www.scraperapi.com/ )等,讓Python網頁爬蟲進行請求(Request)時,能夠使用不同的IP位址。
Q:如何設定請求表頭(Request Headers)
為了讓Python網頁爬蟲在發送請求(Request)時,能夠像真實的瀏覽器一樣,最好要設定請求表頭(Request Headers)資訊,如果沒有設定,很明顯就會被認為是Python網頁爬蟲而被封鎖。
除了能夠在Chrome瀏覽器開發者模式得知自己的請求表頭(Request Headers)外,也可以利用此網站(https://httpbin.org/anything )來查看,在Python網頁爬蟲的專案中,只要複製其中的headers欄位來使用即可。
Q:如何設定使用者代理(User-Agent)?
舉例來說,在Python網頁爬蟲的專案中,可以使用fake_useragent套件,在每一次的請求(Request)前,隨機產生一個使用者代理(User-Agent),並且加入到請求表頭(Request Headers)中,如下範例:
import requests
from fake_useragent import UserAgent
user_agent = UserAgent()
response = requests.get(url="https://example.com", headers={ 'user-agent': user_agent.random })
這樣就能夠避免Python網頁爬蟲的每一次請求(Request)皆使用相同的使用者代理(User-Agent),而被偵測到。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html )網站觀看更多精彩內容。
  • 網頁資料擷取與分析 Python
  • Python
  • 網頁爬蟲
拍手 1 留言 0 觀看 4 收藏 0

104求職精靈x聯成

聯成

10/07 00:00

  • Photoshop
  • HTML5
  • CSS
  • jQuery
  • AutoCAD
  • 3ds Max
  • Python
  • scikit-learn
  • OpenCV
  • Creo Parametric
  • Illustrator
  • After Effects
  • Premiere
  • Cinema 4D
  • C#
  • Unity3D
  • RHCE
  • Red Hat Certified Engineer
  • CCNA
  • OpenStack
觀看 70 收藏 0

104求職精靈x電腦技能基金會

電腦技能基金會 精選線上課程

02/01 00:00

  • 程式語言 (C/Python)
  • Python
  • 程式語言
  • Python程式設計
觀看 340 收藏 2

104求職精靈xHahow好學校

Hahow好學校 精選線上課程

09/29 11:56

  • SQL
  • Machine Learning
  • 人工智慧
  • 資料庫
  • Python
觀看 434 收藏 23

104求職精靈xCupoy

01/29 15:40

  • Python
  • Google Analytics
  • Weka
  • Flink
  • Firebase
  • 深度學習
  • Machine Learning
  • NLP
  • 演算法開發
  • R
觀看 133 收藏 12

104求職精靈x商業發展研究院

商業發展研究院 精選線上課程

08/13 00:00

  • Python
  • 演算法
  • 資料科學
觀看 60 收藏 7

Learn Code With Mike品牌創辦人

10/15 22:22

Python使用Selenium開發動態網頁爬蟲的技巧

Q: Python的Selenium套件有什麼功能?
Selenium套件被設計於自動化測試,來模擬使用者的動作,進行登入後爬取資料或滾動卷軸,並且能夠執行JavaScript程式碼,這些就是Selenium與BeautifulSoup套件最大不同的地方。對於開發Python動態爬蟲來說,就可以結合Selenium套件以上的特點,讓網頁動態載入資料後,再利用BeautifulSoup套件簡潔的方法(Method),將所需的資料爬取下來。
Q: 要怎麼開始使用Selenium套件?
Python的Selenium套件安裝指令如下:
$ pip install selenium
除此之外,要讓Selenium套件能夠自動開啟瀏覽器,就需要安裝對應的Webdriver(驅動程式),本文將以Chrome瀏覽器來做示範。前往Python套件儲存庫PyPI(Python Package Index),輸入Selenium進行查詢,並且手動安裝相對應版本的瀏覽器驅動程式。
Q: Selenium套件如何請求網頁?
首先,建立webdriver物件,傳入所下載的「瀏覽器驅動程式路徑」,就可以透過get()方法,前往要爬取的網頁網址。如下範例:
from selenium import webdriver
chrome = webdriver.Chrome('./chromedriver')
Q: Selenium套件如何定位網頁上的資料元素?
Selenium套件的定位元素方法非常多,可以參考Selenium套件的官方文件( https://selenium-python.readthedocs.io/locating-elements.html ),這邊以常使用的find_element_by_id()方法(Method)為例,如下:
email = chrome.find_element_by_id("email")
password = chrome.find_element_by_id("pass")
Q:Selenium套件如何模擬使用者輸入資料?
透過Selenium套件的send_keys()方法,就可以模擬使用者輸入資料,如下範例:
email = chrome.find_element_by_id("email")
password = chrome.find_element_by_id("pass")
email.send_keys('example@gmail.com')
password.send_keys('*****')
password.submit()
Q: Selenium套件如何執行JavaScript程式碼?
本文以滾動捲軸這個動作,來分享如何利用Selenium套件的execute_script()方法,來執行JavaScript程式碼,如下範例:
chrome = webdriver.Chrome('./chromedriver', chrome_options=options)
email = chrome.find_element_by_id("email")
password = chrome.find_element_by_id("pass")
email.send_keys('example@gmail.com')
password.send_keys('*****')
password.submit()
time.sleep(3)
for x in range(1, 4):
chrome.execute_script("window.scrollTo(0,document.body.scrollHeight)")
time.sleep(5)
範例中,使用Python的迴圈,執行滾動捲軸3次,每滾動一次就暫停執行程式碼5秒,讓Facebook載入更多的文章。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/05/python-selenium-scraper.html )網站觀看更多精彩內容。
  • Python網路爬蟲
  • 網路爬蟲
  • Python
  • 網頁資料擷取與分析 Python
拍手 1 留言 0 觀看 4 收藏 0
工作機會

python工程師

迪倫蓮恩市場研究顧問有限公司

台北市信義區 經歷不拘 大學

時薪 300~400元

Python Web Developer

StreetVoice _街聲股份有限公司

台北市松山區 1年以上 大學

月薪 40,000~60,000元
我要應徵