發表文章

目前顯示的是有「Python」標籤的文章

Python-selenium - 輸入文字/輸入帳號密碼/textbox

圖片
  使用selenium輸入帳號密碼或是在對話框輸入內容 範例使用Google首頁,在搜尋欄打上Python 首先取得搜尋欄位xpath 若不會找xpath 請點我

Python-selenium - 下拉式選單 - 選擇選單 - 下拉選擇

圖片
利用selenium 選擇下拉式選單 需要另外引入Select套件 範例使用中央氣象局網站  https://www.cwb.gov.tw/V8/C/ 目標將下圖「選擇鄉鎮」的下拉選單,選到松山區

Python-selenium - 切換分頁視窗 - 點選分頁視窗/瀏覽器分頁/瀏覽器視窗

當瀏覽器的分頁不只一個 想點選分頁的時候或是到另一個分頁取得資料時 我們需要做切換視窗的動作 程式碼  driver.switch_to_window(browser.window_handles[1]) #browser.window_handles[1] 數字1指的是index 看你需要的是第幾個視窗

Python-selenium - frame - 轉移至frame - 尋找frame中的物件、頁面元素

如若網站結構中有使用 frame 則可能無法直接透過find_element找到需要的頁面元素 此時須先將driver轉換到frame之中 利用driver.switch_to.frame() 程式碼 driver.switch_to.frame(browser.find_element_by_xpath('frame的xpath')) 若不會找xpath 請點我 Python-selenium - 滑鼠點選/點擊/雙擊 - 實現網站自動化(瀏覽器自動化) 模擬人為操作

Python-selenium - 錯誤 - Error -NoSuchElementException解決/處理

當出現 NoSuchElementException 錯誤時 Message: no such element: Unable to locate element 如果自己找不到程式中的問題,也確認頁面標籤是對的 可能是因為網頁還是未載入完成,但程式已先行尋找 建議在程式碼中import time 並在載入頁面時使用time.sleep(請輸入秒數) 例如隔兩秒切換分頁可以這樣寫   browser.switch_to_window(browser.window_handles[1])   time.sleep(2)   browser.switch_to_window(browser.window_handles[0]) time.sleep(2)                 

Python-selenium - 選擇頁面元素/找物件的幾種常用方式 - 實現網站自動化(瀏覽器自動化) 模擬人為操作

圖片
本篇重點要來介紹幾種常用的 取得頁面某個物件 的方式 這樣才能點選或是輸入啊! 其他通篇教學都使用Xpath (Xpath 用F12複製就好,不用打字很爽) 偏偏舞爺自己遇到的需求最不常使用Xpath... 因為可能要同個網站跑好幾次不同帳號登入,即使登入後看起來是同一個按鈕 但因為動態產生,所以Xpath跟ID會改變... 好啦不廢話 抓取頁面元素 主要介紹我最常用的四種 find_element_by_xpath('') #推薦在非動態產生的頁面中使用(第一順位) find_element_by_id('') #推薦在有id以及不會是動態生成的id狀況下使用(第二順位) find_element_by_link_text('') #推薦在顯示文字不會改變時 #動態產生的物件也OK(動態物件第一順位,一般物件第三順位) find_element_by_name('') #其他方法都不行,只有name的時候我才考慮 其中的id跟name同樣是用F12去檢查元素 作法幾乎是一模一樣的,這邊用id來做示範 例如google首頁的登入按鈕 可以看到id="gb_70"

Python-selenium - 按鈕/滑鼠點選/點擊/雙擊 - 實現網站自動化(瀏覽器自動化) 模擬人為操作

圖片
這一篇主要是介紹如何使用selenium 實現 滑鼠對於按鈕或物件或連結的點擊 ! 雙擊的部分在最下面! 一、單擊、點擊、點選 一樣拿google示範 開啟google首頁後,實現自動點擊右上角的「圖片」,跳換到google圖片搜尋頁面 首先我們需要獲得google圖片的 Xpath 已經會的朋友可以跳過去下面~ 打開google首頁 按下鍵盤 F12 開啟開發者控制台 點選左上角箭頭符號

Python-selenium - webdriver 下載 - 實現網站自動化(瀏覽器自動化) 模擬人為操作

有時候我們希望瀏覽器可以自己動作,例如自動開啟網頁,並登入帳號密碼,下載某個檔案等等... python就提供了很方便的selenium 套件 基本上可以模擬一切的行為 也可以真實看到瀏覽器開啟以及一步一步的動作 Step1.安裝selenium $pip install selenium Step2.下載webdriver   為了控制瀏覽器  必須先取得該瀏覽器相關的webdriver  Chrome載點 Firefox載點 IE快死了,就不找了XD 下載完成後會得到exe檔案 這個exe檔案需要放到你安裝python的路徑 例如我的python放在C:\Python38 我就必須把這個exe檔案丟進Python38這個資料夾 注意會跟你的python.exe在一起 圖片中的chromediver.exe就是chrome的webdriver 

Python-pandas DataFrame利用columnName 插入列(column) 新增列

交換column順序並保留原始內容的方式有許多種。 大多數是用index,這篇將是用columnName 因為自己遇到的excel檔案可能有幾十個column,不想看也不想算到底是數來第幾個... 有名字好辦事啊! 插入一欄新的列(column) 這個列的內容都會為空值 首先請自行準備好有資料的 DataFrame 以下程式 DataFrame變數為df col_name = df.columns.tolist() #先取得所有的 df的 columns名稱 col_name.insert(col_name.index('column名稱')+1,'這邊是新插入的column名稱 ') #在指定的column名稱後面增加新的一列 df=df.reindex(columns=col_name) #將df更新為新的 columns順序 以上便完成了新的一列插入 插入 原本的列(column) 這邊推薦如列數很少,可以直接更新 DataFrame就好 例如我有一個DataFrame名df有三個column名稱A B C 順序即為A B C 我想將其改成A C B,只要下列一行程式即可  df = pd.DataFrame(df, columns = ["A","C","B"]) 我想將其改成A C,不要B,也只要下列一行程式即可 df = pd.DataFrame( df , columns = ["A", "C" ]) 這樣一定是最快的,但column若有30個...就寫到瘋了哈哈... 但要用columnName保留內容並修改順序,會需要比較多步驟 加設同樣是column名稱A B C,我需要把C換到A後面 也就是順序變成A C B 步驟如下 df_saveC = df['C']    #1.先另外保留要換位置的column內容 df=df.drop('C',axis=1)    #2....

Python-pandas - 讀取html轉DataFrame

用pandas讀取excel時 有時會遇到pd.read_csv或read_excel不能讀取xls的情況 注意此Excel是否由網頁輸出產生,其副檔案名稱雖為xls 但實際讓為html,需要使用read_html才可以使用。 且直接由pd.read_html讀取的xls會是list的型別 需指定才會轉為DataFrame  程式碼如下: import pandas as pd df = pd.read_html('名稱.xls', header=0)[0]   print(df)

Python-LINEbot 製作教學 -建立LINEbot與webhook串接 - flask

圖片
   關於自製的LINEbot,無論是商用或是個人使用,都已經常存在於日常生活中。 這篇製作教學提供給有python程式底子的夥伴,快速製作自己的LINEbot。 這邊不使用heroku,而是用glitch直接線上編輯程式並產生可用於webhook的網址。 heroku下次有機會再寫教學。 一、前置設定 1.首先到 LINE Developers 登入(可使用自己有的LINE帳號) 2.點選Messaging API進入說明頁面,移動 到畫面右下角「開 始體驗」便可以建立一個Bot(網站上都有按鈕,就資料填一填下一步按完就對了) 3.創建好之後按 Messaging API 的選項,會到 Channel settings 做好應該會有這樣的介面(Provider List內會有創建好的專案) 4.在Basic settings中找到 Channel secret 並將內容完整複製存起(等下會使用到) 5.移動到 Messaging API 往下滑取得 Channel access token 並將內容完整複製存起(等下會使用到) 注意: 請勿將Channel secret 與 Channel access token公開或外流 順帶一提,可以利用這裡的ID(此ID就是你bot的ID,可以在新增好友的搜尋中找到) 或是直接掃描QRcode加入自己做的LINEbot好友。 但現在Bot應該只會回覆原廠的預設功能。 6.為了關掉原廠的自動回覆功能並改成 Webhook ,找到 Auto-reply messages   並按下右邊的Edit 在進階設定中設定如下 以上前置作業都完成了 請確認自己是否已經完成這三件事 1.取得 Channel secret 與  Channel access token 2.加入自己的LINEbot好友 3.停用原本的自動回應,啟用 Webhook 完成就繼續往下看(注意LINE的網頁不要關) 二、程式修改 我在glitch上面用Python寫了一個LINEbot的初始程式 點此開啟 開啟網頁後,稍微往下移動,中間視窗的右下角有一個按鈕 點下去會開啟頁面 我已經設定與寫好的程式碼就在這裡,而這一份你開起來可以修改的專案便是你自己的! (記得申請glitch的帳號,這樣你改好的專案才會存在自己帳號裡) 程...