發表文章

目前顯示的是 2022的文章

Windows Media Player 播放音樂卡關

工作環境:  Windows 7  Windows Media Player 無法播放音樂,開啟 CD-ROM 之後 Windows Media Player 半透明,然後光碟機轉了一下就不轉了,接著 Windows Media Player 就當了。  到阿榮去下載了 Windows Media Player Classic 免安裝版,立馬順利播放音訊檔。 接下來就可以把 Wave 檔(檔案 / 儲存複件)複製出來了。    收工!

Mikrotik 檔案共享 / NAS

Mikrotik 的路由器有提供 USB 介面,雖然網站上一再強調那是用來做 log 記錄檔存取和讓使用者接 4G 網路的 dongle 用的,不是設計來做 NAS 的,但是,既然它能接 USB 裝置,使用者也不太想掛一台電腦只為了共享檔案,畢竟現在人手一機,能不開電腦,應該就還是手機平板解決吧,試試看能不能接個外接硬碟來做 NAS。  工作環境:  Mikrotik hapAc wifi router  B牌 500G 舊硬碟  設定方式:  到 File 裏看硬碟是掛載在什麼資料夾底下(disk#)記起來  到 IP / SMB 裏把 SMB 打開(Enable) / Apply  到 IP / SMB 裏把 SMB 的分享指定給內網使用者(all/bridge/lan-VPN-sp1) / Apply  到 IP / SMB / Share 裏新增一個分享資料夾的名稱(Share),和剛才的 disk#/(後面要加一個/) 相對應 / Apply  到 IP / SMB / Users 裏新增一個使用者名稱和密碼(read only 不要勾才能讀寫,有寫的權限才能上傳檔案哦) / Apply  回到 Windows: 在檔案總管裏打上分享器內網的 IP(\\192.168.2.1) 應該會看到 Share 點擊後,打好剛才的使用者名稱和密碼就可以用了。  在檔案總管裏打上分享器內網的 IP(\\192.168.2.1) 看到 Share 的時侯,可以按右鍵 / 連線網路磁碟機,給一個代號,之後就有捷徑可以用了。  試著上傳和下載檔案,速度只有 5MB/秒 左右,但是夠用了,省下的 NAS 的錢,可以去吃飯。  對了,那個硬碟要格式化成 fat 或是 ext3 的格式路由器才抓得到, ext4 格式的話路由器會一直重開。    收工!    ======================= 20221214 後記 ======================= 適合電腦使用,很順,不適合手持式裝置像是手機平板之類使用,一組正確的帳密輸好幾次才登進去,火都會上來啊,看來還不如一般的分享器...

WSL 下的 Ubuntu Linux 裝在非系統碟(C:\之外的硬碟)

裝了 WSL 之後,系統就警示硬碟空間不足,要清理空間了,一看之後發現,這個 WSL 下的 Ubuntu 佔了8gb的空間,想把它移到其他的分區(像是 d:\),然後都是一堆看起來高深又麻煩的操作,後來找到了一個比較直覺的,但是看來得先裝好了,再移出去,比移不走好啊,所謂請神容易,送神難…  工作環境:  Windows 10 home: WSL Ubuntu  用指令模式搬移哦~~  1. 確認系統中 WSL2 安裝的東東 wsl --list -v 記得要搬之前先把運作中的子系統關掉,此例為關掉 Ubuntu wsl -t Ubuntu  2. 看要移到哪裏去,記得要先建好資料夾,這次我要移到 D:\wsl_export) wsl --export Ubuntu "D:\wsl_export\ubuntu-ex.tar"  3. 清除 WSL 的子系統註冊訊息 wsl --unregister Ubuntu  4. 重新到 WSL 匯入(記得先建立要匯入的資料夾,這裏是匯到 D:\wsl_import\ubuntu)、重新註冊子系統 wsl --import Ubuntu "D:\wsl_import\ubuntu" "D:\wsl_export\ubuntu-ex.tar" 重開子系統,   收工!

QGIS 縣市分色圖 Null 值處置

圖片
 GIS 的工具越來越多,功能越來越強,可是我只要其中的一、兩項而已,像是常見的縣市分色圖,依照不同的統計值,來分層顯示哪個縣市比較…,例如,用不同的顏色看哪個縣市的人口出生率較高,出生率越低越偏向紅色,出生率越高越偏向藍色。然而,有個縣市沒有資料:NULL 工作環境:   Windows 10   QGIS 3.2     設定 symbology/style Null 又怎樣,Null 不怎樣,就是地圖上一片空白,連縣市的框線都不顯示,而想要的結果是不論如何要把縣市顯示出來,剛才突然想到可以多疊一個只有縣市界的透明填色圖層,但是醬子會和中間色(白色)的區塊混淆,得再設一個和 Graduated 色皆不同的背景色,沒有用過,有興趣的可以自已試試。 簡單地說有 google 到2種方法,一種用 UI 處理,一種用函式處理。 先說說麻瓜的 UI 處理方式: 先用 Graduated 把分色設好,再用 Rule Based 處理例外狀況。 Graduated 分色設定 轉用 Rule Based 方式處理例外值 函式法: case when "Some_Value" IS NULL then 0 else "Some_Value" end 在欄位的地方把 null 值轉成0 這2種方法都可以處理 null 值,聰明如你應該也知道有什麼不同,端看你的喜好了。 收工!      

Mito vs DTale

 Mito 最近應該下了重本,到處宣揚它的功能強大,DTale 則是 UI 相似並且的操作邏輯雷同的方案,雖說 python 做圖的工具不只這2個,至少,這2個是冰淇淋,容易吃的冰淇淋,而 Mito 的賣相好似好一點,曾經,有那麼一會兒的曾經,不知道選那個好一點,有道是,小孩才做選擇… 工作環境:     Windows 10     Anaconda       jupyter       env:         mito         dtale  Mito 裝著裝著就起來了,接著讀表單,然後,就……卡住了,卡在少了個 (*^%$%^&*((*&% 的東東,雖然隔天重開機就自體痊癒了,先醬子好了畢竟,要讀個檔案少了個 UI 還是多一檻  DTale 一會兒裝起來了,馬上   dtale.show(open_browser=True) ,檔案拖、拉、放到剛才開啟的 UI 就開工了…,操作介面還算直覺 目前 DTale 勝出     收工!    

設定 jupyter notebook 工作資料夾

 jupyter notebook 在 windows 底下預設的工作資料夾路徑在 C:\Windows\users\登入帳號\ 之下,但是一般不喜歡用 C:\ 的目錄來工作,因為不好維護,系統掛掉時,很容易忘了備這裏的東西,通常是放 D:\ 下的指定位置,為了方便說明,將這個要客製的資料夾路徑簡稱為工作資料夾(workSpace),路徑就在 D:\workSpace,就這麼簡單的事,也能撞牆  工作環境:     Windows 10     Python 3     anaconda3       jupyter notebook         客製工作資料夾(workSpace)  其實要讓 jupyter notebook 啟動時就在工作資料夾也可以反過來操作,就是先到工作資料夾之後,再啟動 jupyter notebook,操作起來也蠻直覺的,人如果反骨,硬要走自已的路,就容易撞牆  總結下來幾個方式:  法一:  cd d:\workSpace  jupter notebook  法二:  jupyter notebook -- notebook-dir = "D:/workSpace"  法三:懶人最愛的捷徑,做1次,一直用   在 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit) 可以找到 anaconda 相關的應用程式啟動的捷徑,像是 jupyter notebook 的啟用捷徑   在 jupyter notebook 啟動捷徑 > 內容 >     目標 C:\ProgramData\Anaconda3\python.exe C:\ProgramData\Anaconda3\cwp.py C:\ProgramData\Anaconda3 C:\ProgramData\Anaconda3\pyth...

以一般使用者啟用(launch) anaconda jupyterlab

 jupyterlab 當初在裝的時侯可能有遇到權限問題,簡單處理就是大招直接開下去,用管理者權限裝了,導致後來要啟用 jupyterlab 時要先用管理者權限啟用 anaconda 才能啟用 jupyterlab,如果這時侯用一般使用者啟用時會出現類似: alias 引用時有問題,用 i18n() 替代, ExtentionManager 有問題,請檢查你的 jupyter_notebook_config.py 、 jupyter-labextention-script 之類的問題(如下 error log),即使你用管理者權限啟用 jupyterlab 而你的 jupyter notebook 的密碼也設好了,用密碼也登不進去  工作環境:     Windows10       anaconda3         jupyterlab  先移掉 jupyterlab ,如同上述,用管理者權限裝的,先用管理者權限啟用 anaconda 再到 jupyterlab 的齒輪 remove application   重新安裝 jupyterlab ,打開 anaconda prompt (非管理者權限) conda install -c conda-forge jupyterlab  然後就會出現: EnvironmentNotWritableError: The current user does not have write permissions to the target environment. environment location : C :\ ProgramData\Anaconda3 不管 location 是那裏,把你的使用者權限加上去,如果沒有資料夾就開下去 裝好之後再回 anaconda (不使用管理者權限啟用),此時開啟 jupyterlab 就可以啟用了     收工! # lanuch jupyterlab with general user privelege within anaconda =======...

jupyter 的密碼設定

 jupyter 預設了 password 為原始的密碼,但是用 anaconda 裝了 jupyter 之後無效了!  工作環境:     Windows 10     anaconda3       jupyter notebook  C:\Users\登入的使用者名稱\.jupyter\jupyter_notebook_config.py  搜尋關鍵字 password 仔細看設定檔裏面的說明, ## Hashed password to use for web authentication. #   #  To generate, type in a python/IPython shell: #   #    from notebook.auth import passwd; passwd() #   #  The string should be of the form type:salt:hashed-password. c.NotebookApp.password = 把上述的執行結果貼上來  所以就是要再回到終端機(cmd.exe)中: python >>> from notebook.auth import passwd; passwd() Enter password : Verify password :  會得到一堆類似 'argon2)&^&*(*&^*()(*&)(**()(*&^%#$%^&**&^%$#@@#$' 的字串,貼回 jupyter_notebook_config.py 中,重新啟動 jupyter notebook 就行   收工!                      

開機即啟動應用程式的設定路徑

 這個很常用,每次都是谷歌之後再找一次,下次不找了。  C:\Users\登入的使用者名稱\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup   把要啟動的應用程式捷徑放進去上述的資料夾中  收工!

SEO 的反應時間很短

 SEO 很少出現在工作環境中,然而,這次可能得和它打打交道,故事的開始是從,為什麼網頁在搜尋結果中總是找不到?  試試!  關鍵字被找到的過程是個黑箱,至少對搜尋引擎之外的人來說,網站怎麼被搜尋引擎找到的過程和判斷基準,不得而知,只知道在網頁中設計重要的字串放在內容裏很重要,所以,試試!  先搜尋一下,上谷哥找了某個網站的名字,還真找不到,但是它的相關機構的網頁、網站倒是找到了一堆,QQ,網頁的內容另外有人安排的,馬上能做的有一個,把網站的名字設到 DNS 裏面,而且還是別的網域裏的 DNS,比方說:某個想要被搜到的網頁放在 wanted.aaa.com 這個網站裏,但是在 bbb.com 的 DNS server 裏設了 wanted.bbb.com 過了一下下,在谷哥裏再次搜索 wnated.aaa.com 的機構名字,搜尋結果的第一個就跑出來了,成效真快!  SEO 很有趣!      收工! ==========================  不同的搜尋引擎的表現是不一樣的,在用 edge 搜尋之前,都是使用 google 搜尋,後來想要觀察其中不同的時侯,用 edge 已經能找到這個網站,ff 和 chrome 都是找不到的,過了一陣子之後(大約2天),在干預的情形不變的情形下 ff 和 chrome  也能找到了,這個機制可能需要時間,可能不是改動了網站的參數形成,雖然之前已經透過 DNS 的運作干預過了!  之後,突然想到,在設置 blog 之初有個參數,是否讓搜尋引擎找到網站這個選項,或許,這個選項能左右這個搜尋的結果,而使用 google 做為 DNS 伺服器與否,以及 DNS 的設置,會影響這個參數的表現,沒有打開這個參數也沒有設 DNS 的時侯,這個參數決定網站搜尋結果,然而它只約束自已的搜尋引擎,等到其他搜尋引擎已經察覺到這個網站,或許 SEO 就被啟動了,之後,有沒有 DNS 的介入已經不重要,要驗證,得再開一個網站,留給後人吧!

在移除 python2 之後 docker-compose 除錯

 其實要是不手賤可以不用這麼麻煩,因為大部份的時間用的是 python3 但是,裝的時侯沒注意,裝了 python2 和 python3 而預設的 pip 用的是 python2 ,在移除了 python2 之後,原本作動得好好的 docker container 不動了。  症狀: Traceback (most recent call last): File "urllib3/connectionpool.py", line 677, in urlopen File "urllib3/connectionpool.py", line 392, in _make_request File "http/client.py", line 1252, in request File "http/client.py", line 1298, in _send_request File "http/client.py", line 1247, in endheaders File "http/client.py", line 1026, in _send_output File "http/client.py", line 966, in send File "docker/transport/unixconn.py", line 43, in connect FileNotFoundError: [Errno 2] No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "requests/adapters.py", line 449, in send File "urllib3/connectionpool.py", line 727, in urlopen File "urllib3/util/retry.py", ...

開機時確保 docker 網路建立 docker 網路不要冠上 service 的名稱

需求:  ubuntu 18 之後預設已經沒有 /etc/rc.local 這個檔案,所以,要自已加1個,然後就能做開機之後要做的事  docker 的網路已經事先建(create)好了,如果直接在 docker-compose.yml 的設定檔裏面直接引用的話,不但會和建好的網路相衝,必須移掉相衝的網路重新啟用容器,而啟用設定檔內的網路時, service 的名稱就會冠在 network NAME 前面,不是很直覺  如果 docker 網路沒有建好,想要開機時確保 網路建立 起來 工作環境:   ubuntu server 18 lts     docker     /etc/rc.local 動手: /etc/rc.local 這個檔預設是沒有的,開起來就行,記得加上執行的權限,等一下重開機才會執行 printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local sudo chmod +x /etc/rc.local   vim /etc/rc.local 在 exit 0 之前加上你要做的事,確保建立 docker 網路 docker network create your.network.name --driver=bridge --subnet=192.168.0.0/24 || true   編輯容器的設定檔 /somewhere/docker-compose.yml services :   app :     image : someone/app:latest     restart : always     volumes :       - /path/you/want:/data     ports :       - "1.2.3.4:1:1"       - "2:2/udp"     networks : # 把既有的網路指定給 service ...

用 docker 架名稱伺服器並且用 docker-compose 檔來啟用

 之前說了怎麼 用 docker 把名稱伺服器架起來 ,這次要用 docker-compose 來啟用這個伺服器。醬子,之後不管到哪裏要架,拿著這個檔案就行。沒想到從命令列到寫設定檔也是要折騰一下地~  工作環境:     Ubuntu Server 18 LTS         docker-compose         bind9 通常是存成 docker-compose.yml 這樣子直接在同一個資料夾下指令 docker-compose up 就行 version: '3' services:   bind:     image: sameersbn/bind:latest     # 重開機之後會自已啟動     restart: always     dns: 127.0.0.1     networks:       br.rickyworks.tk:         # 別用 192.168.0.1 以免相衝         # 不能只用 ip         ipv4_address: 192.168.0.2         #environment:         #ROOT_PASSWORD: ${ROOT_PASSWORD}         #ROOT_PASSWORD="ROOT_PASSWORD"   #用 env 檔就不用直接把密碼寫在這個設定檔裏     env_file:       - ./.env     ports:       - 10000:1000...

只不過是想用 docker 架個 dns 也要這麼虐嗎

 想著要把伺服器搬到 docker 上去架設,比起那個 apt install PACKAGEsssss 折騰了許多,先拿個 bind DNS server 來試一下,不試不知道,一試不得了,果真折騰!  工作環境:     Ubuntu Server 18 LTS         docker             bind9         docker-compose(另文好了)  一開始先把伺服器清乾淨,然後把 docker 裝起來,把防火牆上的小洞挖好,然後開始動手。  先把 docker 自已的網路設一下, docker network create br.name.u.like --driver=bridge --subnet=192.168.0.0/24  抓一下 docker 的 bind DNS server docker pull sameersbn/bind:latest  啟動 bind DNS server docker run -d --name=bind \   --ip=192.168.0.9 \   --network=br.name.u.like \   --publish=53:53/udp --publish=10000:10000/tcp \   --volume=/home/someone/.bind/primary:/data \   --env= 'ROOT_PASSWORD=WhateverPasswordUWant' \   sameersbn/bind:latest    醬子就行了,然後連到電腦的 ip:10000 把用剛才上面設的 root 密碼 WhateverPasswordUWant 進去 Webmin 設定你要的 DNS 。   =======================...

docker 初探

 做為容器管理,docker, k8s ....很多工具,已經不是新聞,把伺服器搬進容器已經無法再拖…  工作環境:     Ubuntu 18 LTS         docker  裝好了 docker 就來裝個 name server 吧, docker pull ******** 結果:permission denied *********   太急了,忘了用 sudo 或是把 user 加到 docker 群了  sudo docker pull ***********  或是   sudo usermod -aG docker USERNAME 收工!

一些常用的 vba

 如題,稍做整理   Sub resetSheetFormat () ' 重置/清除表單的「設定格式化條件」     Cells.FormatConditions.Delete End Sub Sub resetFilter () ' 重置/清除表單的篩選條件,以顯示所有的資料 ' 篩選功能還開著     ActiveSheet.ShowAllData End Sub Sub saveFile () ' 使用日期命名檔案 ' 另存新檔為 xlsx (沒有巨集的檔案)     ' 今天的日期     today = Format ( Now , "YYYYMMDD" )     ThisWorkbook.Sheets.Copy     ' 關閉詢問視窗     Application . DisplayAlerts = False     ActiveWorkbook.SaveAs Filename := "d:\somewhere\" & today & ".xlsx" , FileFormat := 51     ActiveWorkbook.Close End Sub Sub autoFitAll ()     ' 調整所有欄位 ' 自動符合內容寬度、高度     Cells. Select     Cells.EntireColumn.AutoFit     Cells.EntireRow.AutoFit End Sub Sub trunFilterOnActive () ' 確認是否有開篩選,沒開的話才打開   If Not ActiveSheet.AutoFilterMode Then     ActiveSheet. Range ( "3:3" ).AutoFilter   End If End Sub Sub turnFilterOffActive () ' 如果有開篩選的話就把它關掉 ...

在電腦上操作手機 手機鏡像

 手機用起來很方便,但是工作的時侯可能大多數的操作都在桌上電腦上,如果能在電腦上操作手機,看起來更方便,以往有個 A 牌手機曾經出過應用程式能連自家的手機,但是手機幾經更新後,那連線程式就不能用了,市面上還有很多其他的手機,既然都是 Android 平台,是不是有個程式可以一次滿足這樣的需求。  工作環境:     Windows 10         scrcpy     S牌手機 A20  主要是你得先下載 scrcpy 這個應用程式,然後解壓縮  再到手機裏把開發人員模式打開  然後用 usb 連線到你的手機再用 scrcpy 把你的手機畫面帶到電腦上來  如果你想要用無線網路連線,那得再另外設定一下 怎麼開啟開發人員模式?  設定 > 關於手機 > 軟體資訊 > 點「版本號碼」直到「開發者模式已經啟用 」> 返回設定首頁 > 開發人員選項 > USB 偵錯(啟用) > 如果你想用無線網路連到手機還要開 無線偵錯(啟用)  用 USB 線連到你剛才設好的手機上,到你解壓縮 scrcpy 的程式目錄下,輸入 scrcpy 就可以在電腦上連接到你的手機操作。  如果要用無線網路連到手機的話,先把你的電腦連到和手機同一個網路,並且保持 USB 線連接著你的手機,然後打開命令提示字元,依次輸入以下指令:     adb kill-server     adb usb     adb tcpip 5555 (發現預設跑在 5537 還是 5037 port)     adb connect 192.168.9.1:5555 (這裏的 ip 要換成你的手機上的實際 ip)     adb devices (要出現兩個連線裝置一個有手機的名字,另一個有手機的ip) 如果你順利完成以上的步驟,拔掉 usb 線,再次到你下載 scrcpy 程式目錄下輸入  ...

Excel 的資料貼到 gmail 的結果不太一樣 在 edge 會貼上圖檔寄出

 如果你把 Excel 做好的表格用 email 寄出,使用不同的瀏覽器,貼上的表格,得到的結果不太一樣。 工作環境:     Windows 10 Pro     Gmail 網頁     Edge 瀏覽器     Chrome 瀏覽器     Firefox 瀏覽器 如果你想把表格用圖的方式寄出,請用 Edge  如果你想把表格用 HTML 方式寄出(可以編輯文字),請用 Chrome 或是 Firefox 收工!

確認檔案是否被更動 md5 check sum

 對檔案做運算後的結果可以得到一個亂數值或者稱雜湊值,只要檔案內容更動過這個值就會變動,用這個特性來確保檔案的正確,如果檔案很大就會算很久,有時就被略過了,呵。  工作環境:     Windows         CertUtil     Linux         md5sum Linux 上操作感覺比較直覺: # 對一個檔案做運算 md5sum data1.txt # 對多個檔案做運算 md5sum data1.txt data2.php data3.py # 對多個檔案做運算,將運算結果存到指定的檔案中 md5sum data1.txt data2.php data3.py > sumV.txt # 確認檔案的運算結果 md5sum -c sumV.txt  Windows 上要用 CertUtil # 可能只能針對一個檔案做運算 certutil -hashfile c: \U sers \r icky \D ownloads \W inSCP-5.19.5-Setup.exe md5 運算這個亂數值的函式常用的方式除了 md5 還有其他像是 sha-1 sha256 原理是一樣的,照例略過。   收工!

clamav 一直出現 condition failed

 錯誤訊息:  Condition: start condition failed at Mon 2022-01-10 00:27:08 CST; 8s ago            └─ ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc} was not met 工作環境:     Ubuntu Server 18 TLS     clamav-daemon   你需要這個 https://database.clamav.net/main.cvd 先下載回來,放到 /var/lib/clamav 裏面,然後再重新 service clamav-daemon restart 再次 service clamav-daemon status 時就可以了。 如果設定怪怪的可以  dpkg-reconfigure clamav-daemon ,然後 sudo vim /etc/clamav/clamd.conf 確認裏面 LocalSocket /var/run/clamav/clamd.ctl 有打開,  如果沒有 /var/run/clamav/clamd.ctl 這個檔案也記得 sudo touch /var/run/clamav/clamd.ctl 和 sudo chown clamav:clamav /var/run/clamav/clamd.ctl  收工!

ispconfig 3 裝完後無法登入

 ispconfig 可以管理常用的網路服務像是網站、域名、ftp、ssh、…等常用服務,並且安裝常用的應用程式來增加安全性,這次裝完之後,居然進不去… 工作環境:     Ubuntu Server 18 LTS     ispconfig 3 問題出在預設管理者 admin 的密碼是有問題的,要手動更新,從 https://yoursite.com:8080/phpmyadmin 用你安裝時設定的 MySQL 管理者密碼進入,找到 dbispconfig > sys_user > admin > 編輯 > passwort > 函數:md5() > 你的新密碼  重新回到 https://yoursite.com:8080 用新的密碼進去就行 收工!

Ubuntu 設定時區

 Ubuntu 系統預設的時區是 UTC 和台灣的時區相差 8 小時,通常是程式跑出來之後才會發覺,當然可以透過程式中的內建函式來設定,這次在作業系統裏設定。參照 這裏 作業環境:     Ubuntu Server 18 LTS      先確認時間的訊息: $ timedatectl                         Local time: Sat 2022-01-08 14:34:52 UTC                   Universal time: Sat 2022-01-08 14:34:52 UTC                         RTC time: Sat 2022-01-08 14:34:52                        Time zone: Etc/UTC (UTC, +0000)        System clock synchronized: yes systemd-timesyncd.service active: yes                  RTC in local TZ: no 看一下設定檔內容 $ ls -l /etc/localtime lrwxrwxrwx 1 root root 27 Jan   8 14 : 18 /etc/localtime -> /usr/share/zoneinf/Etc/UTC $ cat /etc/timezone Etc/UTC 看看時區變數的選項有哪些? ...

Selenium 把瀏覽器帶到前景聚焦

 Selenium 基本上是做不到把瀏覽器帶到前景的,通常是要透過 pyWin32 之類的工具來操作,而透過 pyWin32 又要先找到當前在使用的瀏覽器是哪一個(坑),苦手,只能另闢蹊逕來填這個坑。 工作環境:     Windwos 會開很多視窗,疊來疊去,也會開很多網頁     python3         Selenium         pyautogui   driver . maximize_window () pyautogui .moveTo( 500 , 20 ) pyautogui .click() driver . set_window_size ( 960 , 1080 )  結果是讓 Selenium 用全螢幕把整個視窗佔住,這時侯趕快在瀏覽器上點一下,如果有需要再把瀏覽器調成合適的大小,這樣子就可以順利把想要的網頁帶到前景來處理後續的工作。   收工!   ===================== 坑 ======================= pyWin32 找到 firefox、focus,後來不知怎地,抓到的不是工作中的 firefox  固定作業用的網站在瀏覽器中的位置(頁籤),不然作業會變得複雜

selenium 網頁存檔

 selenium 常作為一個除錯工具,可以模擬瀏覽器,瀏覽網頁,儲存網頁內容是非常常見的操作,筆記一下。 工作環境:     windows 10     python 3          selenium          codecs   from selenium import webdriver import codecs import os def savePageSource ( fName ):     #用寫入模式開啟檔案並且指定檔案編碼     f = codecs . open ( fName , "w+" , "utf−8" )     #取得網頁內容     html = driver . page_source     #把網頁內容寫入檔案     f . write ( html ) f . close ()   pageSource = "https://somewhere.com" #設定 chromedriver.exe 所在的路徑,或是和這個 python 放在一起,就可以不用加 executable_path 的參數 driver = webdriver . Chrome ( executable_path = "C: \\ chromedriver.exe" ) driver . implicitly_wait ( 0.5 ) #把瀏覽器放到最大 driver . maximize_window () #瀏覽指定的網頁 driver . get ( pageSource ) #指定要存的檔案路徑和檔名 n = os . path . join ( "D: \\ somewhere" , "savePage.html" ) #網頁存檔 savePageSource ( n ) #關閉瀏覽器 driver .close () driver...