<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>網頁 on IT 空間</title><link>https://blog.jiatool.com/tags/%E7%B6%B2%E9%A0%81/</link><description>Recent content in 網頁 on IT 空間</description><generator>Hugo -- gohugo.io</generator><language>zh</language><managingEditor>jia@jiatool.com (Jia)</managingEditor><webMaster>jia@jiatool.com (Jia)</webMaster><copyright>&amp;copy;{year}, Jia All Rights Reserved</copyright><lastBuildDate>Sat, 16 May 2026 13:30:00 +0800</lastBuildDate><atom:link href="https://blog.jiatool.com/tags/%E7%B6%B2%E9%A0%81/index.xml" rel="self" type="application/rss+xml"/><item><title>「Packer for GitHub」隨選打包下載瀏覽器擴充功能(Extension)</title><link>https://blog.jiatool.com/posts/packer-for-github/</link><pubDate>Sat, 16 May 2026 13:30:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sat, 16 May 2026 13:30:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/packer-for-github/</guid><description>前言 因為有時候從 GitHub 下載檔案或資料夾時，並不想整包專案 (Repo 儲存庫) 下載，可能是其他檔案太多、太大，只想下載其中幾項就好。所以之前有安裝 GitZip for github 瀏覽</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>因為有時候從 GitHub 下載檔案或資料夾時，並不想整包專案 (Repo 儲存庫) 下載，可能是其他檔案太多、太大，只想下載其中幾項就好。所以之前有安裝 GitZip for github 瀏覽器擴充功能來用。&lt;/p>
&lt;p>不過後來在公司，不知道是不是因為同個 IP 人數太多，會被限制，需要登入 GitHub 連結 token 才能使用。&lt;br />
最近一氣之下(是在氣什麼?) 乾脆自己來寫一個，上禮拜六日透過 Vibe Coding 方式完成了這款「Packer for GitHub」瀏覽器擴充功能，最主要的功能就是可直接 checkbox 勾選檔案和資料夾，一鍵打包成 ZIP 下載。&lt;/p>
&lt;p>順手花了一點時間，將其上架到 Chrome 應用程式商店，分享給大家~&lt;/p>
&lt;br/>
&lt;div class="notices info" data-title="連結">
Chrome 線上應用程式商店：&lt;br />
&lt;a href="https://chromewebstore.google.com/detail/nhlchekbehflbffdjgmgohifmdkcgonh">「Packer for GitHub」擴充功能&lt;/a>
&lt;/div>
&lt;br/>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/packer_for_github/marquee.jpg" alt="「Packer for GitHub - GitHub 隨選打包下載工具」" data-caption="「Packer for GitHub - GitHub 隨選打包下載工具」" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
「Packer for GitHub - GitHub 隨選打包下載工具」
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h2 id="介紹">介紹&lt;/h2>
&lt;p>前往 Chrome 線上應用程式商店 找到「&lt;a href="https://chromewebstore.google.com/detail/nhlchekbehflbffdjgmgohifmdkcgonh" target="_blank" rel="noopener">
Packer for GitHub - GitHub 隨選打包下載工具
&lt;/a>」擴充功能 (Edge 應該也可以安裝使用) 安裝。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/packer_for_github/chrome_webstore.jpg" alt="「Packer for GitHub」瀏覽器擴充功能" data-caption="「Packer for GitHub」瀏覽器擴充功能" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
「Packer for GitHub」瀏覽器擴充功能
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>前往 GitHub 內任一個公開或私有儲存庫頁面，滑鼠移到檔案清單 (側邊欄 file tree 也支援) 會出現 checkbox，就可以勾選需要的檔案和資料夾。&lt;/p>
&lt;p>右下角出現懸浮視窗，點擊「打包下載」即可。&lt;/p>
&lt;p>如此簡單。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/packer_for_github/screenshot1.jpg" alt="勾選檔案和資料夾 &amp;gt; 打包下載" data-caption="勾選檔案和資料夾 &amp;gt; 打包下載" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
勾選檔案和資料夾 &amp;gt; 打包下載
&lt;/figcaption>
&lt;/figure>
&lt;h3 id="-核心功能">🌟 核心功能&lt;/h3>
&lt;p>不想為了幾個檔案，而 Clone 下載整個 Repo (儲存庫)？&lt;/p>
&lt;p>在 GitHub 原生的介面上，為每個檔案與資料夾加上了直觀的勾選框。讓你直接在網頁上選擇需要的檔案和資料夾，一鍵打包成 ZIP 下載！&lt;/p>
&lt;ol>
&lt;li>精準挑選，一鍵打包：直接在 GitHub 檔案清單中勾選你需要的項目，包含檔案與資料夾。側邊欄 file tree 也支援選取。&lt;/li>
&lt;li>支援公開&amp;amp;私有儲存庫：公開儲存庫可直接使用。如果要下載私有儲存庫。只需要設定 GitHub Personal Access Token 即可。&lt;/li>
&lt;li>瀏覽器端壓縮：所有的打包壓縮作業（ZIP）都在你的瀏覽器本地完成。不需要伺服器中轉，速度快且保護隱私。&lt;/li>
&lt;li>簡單使用：勾選 &amp;gt; 下載，沒有複雜的步驟或設定。&lt;/li>
&lt;/ol>
&lt;br>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/packer_for_github/screenshot2.jpg" alt="支援「淺色」與「深色」GitHub 主題" data-caption="支援「淺色」與「深色」GitHub 主題" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
支援「淺色」與「深色」GitHub 主題
&lt;/figcaption>
&lt;/figure>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/packer_for_github/screenshot3.jpg" alt="如果要下載私有儲存庫，需要設定 GitHub 的 Personal Access Token" data-caption="如果要下載私有儲存庫，需要設定 GitHub 的 Personal Access Token" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
如果要下載私有儲存庫，需要設定 GitHub 的 Personal Access Token
&lt;/figcaption>
&lt;/figure>
&lt;br>
&lt;h3 id="-隱私與資安">🔒 隱私與資安&lt;/h3>
&lt;ul>
&lt;li>本地儲存：你的 GitHub Token 僅會儲存在瀏覽器受保護的 chrome.storage 中。甚至沒用到私有儲存庫的話，連 GitHub Token 也不需要。&lt;/li>
&lt;li>無伺服器：不會收集、儲存或傳送任何你的紀錄、程式碼。&lt;/li>
&lt;/ul>
&lt;br>
&lt;!--adsense-->
&lt;br/>
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>有需要的話就來安裝使用吧，歡迎給五星好評及留言支持。&lt;/p>
&lt;p>如果有任何問題或建議，都可以留言或發 Email 反饋給我~&lt;/p>
&lt;br/>
&lt;p>對生成式 AI 感興趣的讀者，記得追蹤 FB 粉專『&lt;a href="https://www.facebook.com/jiatool" target="_blank" rel="noopener">
IT空間
&lt;/a>』，以免錯過最新的發文通知呦~🔔&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;br/>
&lt;blockquote>
&lt;p>預測未來最好的方法，就是創造未來。&lt;br />
The best way to predict the future is to invent it.&lt;/p>
&lt;p align="right">—— Alan Kay 艾倫·凱 (電腦科學家)&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/packer_for_github.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/packer_for_github_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>網頁</category><category>GitHub</category><category>瀏覽器</category><category>自製小工具</category></item><item><title>「YouTube 播放清單篩選器」瀏覽器擴充功能(Extension)</title><link>https://blog.jiatool.com/posts/youtube-playlist-filter/</link><pubDate>Mon, 30 Mar 2026 21:15:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sat, 16 May 2026 13:30:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/youtube-playlist-filter/</guid><description>前言 不知道大家是不是都一樣，我 YouTube 的「稍後觀看」清單裡面影片數量高達 7、800 部 (我有努力在清了&amp;hellip;)，此時有時想過濾某頻道的影片</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>不知道大家是不是都一樣，我 YouTube 的「稍後觀看」清單裡面影片數量高達 7、800 部 (我有努力在清了&amp;hellip;)，此時有時想過濾某頻道的影片，或有個短時間的空檔，想找 10 分鐘以內的影片填充，原生網頁沒有任何篩選工具，就像大海撈針&amp;hellip;&lt;/p>
&lt;p>最近我就想到，現在 Vibe Coding 當道，自己做一款這種用途的瀏覽器擴充功能(Extension) 應該不難，因此就誕生出「YouTube 播放清單篩選器」~&lt;/p>
&lt;br/>
&lt;div class="notices info" data-title="連結">
Chrome 線上應用程式商店：&lt;br />
&lt;a href="https://chromewebstore.google.com/detail/hbffnboipbkgkphpnjddfaofiahmcolh">「YouTube 播放清單篩選器」擴充功能&lt;/a>
&lt;/div>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/youtube_playlist_filter/scrolling_image.jpg" alt="「YouTube 播放清單篩選器」瀏覽器擴充功能" data-caption="「YouTube 播放清單篩選器」瀏覽器擴充功能" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
「YouTube 播放清單篩選器」瀏覽器擴充功能
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h2 id="介紹">介紹&lt;/h2>
&lt;p>前往 Chrome 線上應用程式商店 找到「&lt;a href="https://chromewebstore.google.com/detail/hbffnboipbkgkphpnjddfaofiahmcolh" target="_blank" rel="noopener">
YouTube 播放清單篩選器
&lt;/a>」擴充功能 (Edge 應該也可以安裝使用)。&lt;/p>
&lt;br/>
&lt;p>安裝完成後前往 YouTube 的「稍後觀看」頁面 (或任何「播放清單」頁面)，上方就會出現此工具 UI。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/youtube_playlist_filter/screenshot0.jpg" alt="在「稍後觀看」頁面上方會顯示此工具 UI" data-caption="在「稍後觀看」頁面上方會顯示此工具 UI" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='900px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:900px;height:;"/>
&lt;figcaption style="text-align: center;">
在「稍後觀看」頁面上方會顯示此工具 UI
&lt;/figcaption>
&lt;/figure>
&lt;h3 id="-核心功能">🌟 核心功能&lt;/h3>
&lt;ol>
&lt;li>頻道篩選：自動抓取清單中的所有頻道，只想看哪個特定創作者的影片直接過濾。&lt;/li>
&lt;li>影片長度過濾：
&lt;ul>
&lt;li>滑桿控制：自由設定影片時間長度範圍。&lt;/li>
&lt;li>快捷按鈕：預設「5分鐘內」、「10-30分鐘」&amp;hellip;等常用區間，快速過濾。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>關鍵字搜尋：輸入關鍵字，搜尋影片標題和頻道名稱。&lt;/li>
&lt;li>多種排序：支援依影片時長、觀看次數、頻道名稱進行升序/降序排列。&lt;/li>
&lt;li>全自動加載：一鍵加載所有播放清單影片，無需手動慢慢向下滾動。&lt;/li>
&lt;li>色彩主題：支援「淺色」與「深色」主題，自動依照你 YouTube 的設定切換。&lt;/li>
&lt;li>佈局優化：提供「預設」與「緊湊」兩種顯示佈局，「緊湊」模式可以在相同畫面下呈現更多影片。&lt;/li>
&lt;/ol>
&lt;br>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/youtube_playlist_filter/screenshot2.jpg" alt="支援「淺色」與「深色」主題" data-caption="支援「淺色」與「深色」主題" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
支援「淺色」與「深色」主題
&lt;/figcaption>
&lt;/figure>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/youtube_playlist_filter/screenshot3.jpg" alt="「緊湊」佈局可以在相同畫面下呈現更多影片" data-caption="「緊湊」佈局可以在相同畫面下呈現更多影片" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
「緊湊」佈局可以在相同畫面下呈現更多影片
&lt;/figcaption>
&lt;/figure>
&lt;br>
&lt;h3 id="-隱私與資安">🔒 隱私與資安&lt;/h3>
&lt;p>並且為了確保隱私與資安，它是 100% 都在你的瀏覽器本地運行，我也完全不收集任何數據，大家可以放心使用。&lt;/p>
&lt;br>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/youtube_playlist_filter/approval_successful.jpg" alt="等了一個禮拜，通過審查並上架成功~" data-caption="等了一個禮拜，通過審查並上架成功~" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='450px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:450px;height:;"/>
&lt;figcaption style="text-align: center;">
等了一個禮拜，通過審查並上架成功~
&lt;/figcaption>
&lt;/figure>
&lt;br>
&lt;!--adsense-->
&lt;br/>
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>此擴充功能一開始是我自己想用，不過應該也有不少人有這個需求，所以我再花了一些時間 (還有花 150 元才能成為開發人員&amp;hellip;) 上架到官方，歡迎大家多多使用。&lt;/p>
&lt;p>如果有任何問題或建議，都可以留言或發 Email 反饋給我~&lt;/p>
&lt;br/>
&lt;p>對生成式 AI 感興趣的讀者，記得追蹤 FB 粉專『&lt;a href="https://www.facebook.com/jiatool" target="_blank" rel="noopener">
IT空間
&lt;/a>』，以免錯過最新的發文通知呦~🔔&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;br/>
&lt;blockquote>
&lt;p>「真正的死亡，是世界上再沒有一個人記得你。」&lt;br />
The real death is that no one in the world remembers you.&lt;/p>
&lt;p align="right">—— 《可可夜總會》&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/youtube_playlist_filter.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/youtube_playlist_filter_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>網頁</category><category>YouTube</category><category>瀏覽器</category><category>自製小工具</category></item><item><title>DevTools 純前端開發者工具箱</title><link>https://blog.jiatool.com/posts/devtools/</link><pubDate>Sat, 07 Mar 2026 20:15:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sat, 07 Mar 2026 20:15:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/devtools/</guid><description>前言 有時候在撰寫程式時，會需要一些小工具，例如 Base64 編碼&amp;amp;解碼、時間戳轉換、文字跳脫轉換&amp;hellip;。 雖然網路上有許多類似的網站，但</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>有時候在撰寫程式時，會需要一些小工具，例如 Base64 編碼&amp;amp;解碼、時間戳轉換、文字跳脫轉換&amp;hellip;。&lt;br />
雖然網路上有許多類似的網站，但公司內部有資安問題，不便使用。而且為了這些小需求，每次都要寫個小程式也麻煩。&lt;/p>
&lt;p>剛好最近我一直在使用 Google Antigravity 做一些小東西玩玩，想說這種簡單的需求，應該也可以透過 AI 完成。&lt;br />
於是就誕生出這個純前端小網站~ (有開源程式碼，需要的各位也可以 copy 回去)&lt;/p>
&lt;br/>
&lt;div class="alert alert-info" role="alert" data-dir="ltr">[小廣告] 我製作了一款可愛的「&lt;a href="https://blog.jiatool.com/posts/penguin_wizard_sticker">企鵝魔法師&lt;/a>」貼圖~&lt;br />
歡迎下載：&lt;a href="https://line.me/S/sticker/31703222">LINE 貼圖&lt;/a>、&lt;a href="https://t.me/addstickers/penguin_wizard">Telegram 貼圖 (免費)&lt;/a>&lt;/p>
&lt;img src="https://res.cloudinary.com/jiablog/penguin_wizard_sticker/show.png" caption="企鵝魔法師" width="600px" position="center">&lt;/div>
&lt;br/>
&lt;h2 id="網站介紹">網站介紹&lt;/h2>
&lt;p>馬上前往試玩~&lt;/p>
&lt;div class="notices info" data-title="網站連結">
DevTools — 開發者工具箱：&lt;a href="https://devtools.jiatool.com/">https://devtools.jiatool.com/&lt;/a>
&lt;/div>
&lt;h3 id="網站截圖">網站截圖&lt;/h3>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/devtools/website_screenshot_1.jpg" alt="網站截圖 1" data-caption="網站截圖 1" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='800px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:800px;height:;"/>
&lt;figcaption style="text-align: center;">
網站截圖 1
&lt;/figcaption>
&lt;/figure>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/devtools/website_screenshot_2.jpg" alt="網站截圖 2" data-caption="網站截圖 2" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
網站截圖 2
&lt;/figcaption>
&lt;/figure>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/devtools/website_screenshot_3.jpg" alt="網站截圖 3" data-caption="網站截圖 3" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
網站截圖 3
&lt;/figcaption>
&lt;/figure>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/devtools/website_screenshot_4.jpg" alt="網站截圖 4" data-caption="網站截圖 4" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
網站截圖 4
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h3 id="工具清單">工具清單&lt;/h3>
&lt;p>目前此網站有以下類別與工具，主要是加入我有機會用到的工具：&lt;/p>
&lt;p>🔄 轉換&lt;/p>
&lt;ul>
&lt;li>時間戳轉換 — Unix 時間戳與日期格式互轉&lt;/li>
&lt;li>顏色轉換 — HEX、RGB、HSL 顏色格式相互轉換&lt;/li>
&lt;li>大小寫轉換 — 變數命名風格轉換 (camelCase、snake_case 等)&lt;/li>
&lt;li>JSON ↔ YAML — JSON 與 YAML 格式互轉&lt;/li>
&lt;li>Cron 表達式 — Cron 排程表達式解析與下次執行時間計算&lt;/li>
&lt;li>轉 Docker Compose — 將 docker run 指令轉為 docker-compose.yml&lt;/li>
&lt;/ul>
&lt;p>🔐 編碼 / 解碼&lt;/p>
&lt;ul>
&lt;li>Base64 編碼/解碼 — Base64 編碼與解碼&lt;/li>
&lt;li>URL 編碼/解碼 — URL 編碼與解碼&lt;/li>
&lt;li>HTML 編碼/解碼 — HTML 特殊字元編碼與解碼&lt;/li>
&lt;li>JWT 解碼 — 解析 JWT Token 的 Header 與 Payload&lt;/li>
&lt;li>Unicode 編碼/解碼 — 文字與 Unicode (\uXXXX) 互轉&lt;/li>
&lt;li>GUID/UUID 生成 — 批次生成隨機 GUID/UUID&lt;/li>
&lt;li>密碼生成 — 產生高強度的隨機密碼&lt;/li>
&lt;li>Hash &amp;amp; Checksum — 計算 MD5、SHA-256 等雜湊值&lt;/li>
&lt;/ul>
&lt;p>📝 格式化&lt;/p>
&lt;ul>
&lt;li>JSON 格式化 — JSON 資料美化、驗證與壓縮&lt;/li>
&lt;li>SQL 格式化 — 美化與壓縮 SQL 查詢語句&lt;/li>
&lt;li>HTML 格式化 — HTML 程式碼美化與排版&lt;/li>
&lt;li>JavaScript 格式化 — JavaScript 程式碼美化&lt;/li>
&lt;li>CSS 格式化 — CSS 樣式表美化與壓縮&lt;/li>
&lt;li>YAML 格式化 — YAML 語法檢查與格式化&lt;/li>
&lt;/ul>
&lt;p>🌐 網路連線&lt;/p>
&lt;ul>
&lt;li>URL 解析 — 解析 URL 的各個組成部分 (Protocol、Host、Path、Params…)&lt;/li>
&lt;li>HTTP 狀態碼 — HTTP Status Codes 查詢與說明&lt;/li>
&lt;li>cURL 分析 — 解析 cURL 指令並顯示詳細資訊&lt;/li>
&lt;/ul>
&lt;p>✏️ 文字處理&lt;/p>
&lt;ul>
&lt;li>正規表示式 — Regex 語法測試與驗證&lt;/li>
&lt;li>文字跳脫 — 文字轉義 (Escape) 與還原 (Unescape)&lt;/li>
&lt;li>文字計數 — 統計字元、字數、行數、句子與段落數&lt;/li>
&lt;li>Markdown 預覽 — 即時 Markdown 語法預覽與渲染&lt;/li>
&lt;li>假文生成 — 產生 Lorem Ipsum 假文，用於 UI 排版測試&lt;/li>
&lt;/ul>
&lt;p>🖼️ 圖片處理&lt;/p>
&lt;ul>
&lt;li>圖片壓縮 — 圖片壓縮 (JPEG/PNG/WebP)&lt;/li>
&lt;li>色輪配色 — 提供補色、相似色等多種調色盤方案&lt;/li>
&lt;li>色票 — 常用色票 (Tailwind、Material、中國傳統色)&lt;/li>
&lt;li>圖片 ↔ Base64 — 圖片與 Base64 編碼互轉&lt;/li>
&lt;li>QR Code 生成 — 自訂顏色與容錯率的 QR Code 產生器&lt;/li>
&lt;/ul>
&lt;br/>
&lt;h2 id="網站原始碼">網站原始碼&lt;/h2>
&lt;p>如果想要自己布署，以下我也提供 GitHub 開源程式碼，想要自己修改、加新工具也可：&lt;br />
&lt;a href="https://github.com/Jia35/DevTools">https://github.com/Jia35/DevTools&lt;/a>&lt;/p>
&lt;p>* 別忘了順手給顆 Star 星星~😆&lt;/p>
&lt;br/>
&lt;!--adsense-->
&lt;br/>
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>現在有了生成式 AI，想要自己開發什麼小工具真的越來越方便了~&lt;br />
例如這陣子就做了 網站、Electron exe、瀏覽器擴充套件、手機 APP&amp;hellip;等等相關應用工具 👍&lt;/p>
&lt;br/>
&lt;p>對生成式 AI 感興趣的讀者，記得追蹤 FB 粉專『&lt;a href="https://www.facebook.com/jiatool" target="_blank" rel="noopener">
IT空間
&lt;/a>』，以免錯過最新的發文通知呦~🔔&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;p>參考：&lt;br />
&lt;a href="https://devtools.jiatool.com/" target="_blank" rel="noopener">
DevTools — 開發者工具箱
&lt;/a>&lt;/p>
&lt;br/>
&lt;blockquote>
&lt;p>有時候，我們真的只需要 20 秒的瘋狂勇氣，哪怕就算會出糗，事情的結果也一定會有所改變的。&lt;/p>
&lt;p align="right">—— 《我們買了動物園》&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/devtools.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/devtools_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>網頁</category><category>自製小工具</category></item><item><title>Chrome Snippets 執行 JavaScript 程式片段</title><link>https://blog.jiatool.com/posts/chrome_snippets/</link><pubDate>Sat, 03 Dec 2022 21:15:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sat, 03 Dec 2022 21:15:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/chrome_snippets/</guid><description>前言 如果我們在 Chrome 上想執行一段 JavaScript 程式碼時，會打開 開發人員工具 的 Console 頁面來執行。 開發人員工具 的 Console 頁面 如果我們有段 Code 有時會重複使用到，例如想破解網頁</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>如果我們在 Chrome 上想執行一段 JavaScript 程式碼時，會打開 開發人員工具 的 Console 頁面來執行。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_snippets/console_log.png" alt="開發人員工具 的 Console 頁面" data-caption="開發人員工具 的 Console 頁面" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
開發人員工具 的 Console 頁面
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>如果我們有段 Code 有時會重複使用到，例如想破解網頁不能按右鍵、加入快捷鍵、提取文字等等操作，難道每次都要再打一次？或者還要另外儲存再用複製貼上？那也太麻煩了吧😫&lt;br />
那你可以試試改用 Snippets (片段)功能，來運行 JavaScript。&lt;/p>
&lt;p>* 之前動畫瘋還沒有彈幕的快捷鍵時，我就是透過這種方法來幫它加上快捷鍵 XD&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_snippets/sources_snippets.png" alt="開發人員工具 的 Sources 頁面" data-caption="開發人員工具 的 Sources 頁面" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
開發人員工具 的 Sources 頁面
&lt;/figcaption>
&lt;/figure>
&lt;p>其實這概念類似&lt;a href="https://zh.wikipedia.org/wiki/%E5%B0%8F%E4%B9%A6%E7%AD%BE" target="_blank" rel="noopener">
小書籤
&lt;/a>(bookmarklet，又叫書籤小程式)。&lt;/p>
&lt;br/>
&lt;p>除了 Chrome 以外，只要是基於 Chromium 開發的瀏覽器也有此項功能，像是 Microsoft Edge 和 Opera。&lt;/p>
&lt;br/>
&lt;!--adsense-->
&lt;h2 id="前往-snippets-頁面">前往 Snippets 頁面&lt;/h2>
&lt;p>在瀏覽器中(以下以 Google 的 Chrome 來示範) 打開開發人員工具(F12)，並切換到 Sources &amp;gt; Snippets，這邊就是讓我們撰寫、儲存、執行 JS 片段的的地方。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_snippets/devtools_sources_snippets.jpg" alt="Snippets 頁面" data-caption="Snippets 頁面" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
Snippets 頁面
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>* 如果沒看到「Snippets」tag，可以點擊旁邊的 &amp;hellip;(More tabs) 符號。&lt;/p>
&lt;br/>
&lt;h2 id="加入-snippets-片段">加入 Snippets 片段&lt;/h2>
&lt;p>這邊為了示範，我隨便舉個例子。&lt;br />
例如我想要複製巴哈姆特 GNN 新聞的標題，但一個一個框選、複製、貼上太麻煩，因此我需要透過 JS 幫我整理出來我只需要複製一次就好。&lt;/p>
&lt;br/>
&lt;p>首先，透過 Elements 頁面找到標題文字的元素，得知其 CSS Selector 是 &lt;code>.BH-lbox &amp;gt; .GN-lbox2B &amp;gt; h1 &amp;gt; a&lt;/code>，取得其文字的 JS 寫法如下:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelector&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;.BH-lbox &amp;gt; .GN-lbox2B &amp;gt; h1 &amp;gt; a&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">textContent&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>* 對於 CSS Selector 規則有興趣的可以參考我之前整理的這篇：&lt;a href="https://blog.jiatool.com/posts/sorted-out-css-selector/" target="_blank" rel="noopener">
常用網頁 CSS Selector (選擇器)取得元素，搭配 Python BeautifulSoup 套件
&lt;/a>。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_snippets/gnn_title_element.jpg" alt="GNN 新聞標題的元素" data-caption="GNN 新聞標題的元素" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='900px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:900px;height:;"/>
&lt;figcaption style="text-align: center;">
GNN 新聞標題的元素
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>先透過 開發人員工具 的 Console 確認一下：&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_snippets/gnn_title_console.jpg" alt="擷取 GNN 新聞的標題" data-caption="擷取 GNN 新聞的標題" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='900px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:900px;height:;"/>
&lt;figcaption style="text-align: center;">
擷取 GNN 新聞的標題
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>完成我們的程式，將全部標題抓出來，並輸出在 Console 的程式碼如下：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JavaScript" data-lang="JavaScript">&lt;span class="kd">var&lt;/span> &lt;span class="nx">newsTitleEles&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelectorAll&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;.BH-lbox &amp;gt; .GN-lbox2B &amp;gt; h1 &amp;gt; a&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;span class="kd">var&lt;/span> &lt;span class="nx">newsTitles&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[];&lt;/span>
&lt;span class="nx">newsTitleEles&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">forEach&lt;/span>&lt;span class="p">(&lt;/span> &lt;span class="nx">ele&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nx">newsTitles&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">push&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">ele&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">textContent&lt;/span>&lt;span class="p">);&lt;/span>
&lt;span class="p">});&lt;/span>
&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">log&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">newsTitles&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;\n&amp;#39;&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>點擊 New snippet 來新增一個空白的片段，將程式碼貼進去，並按 Ctrl+S（Windows和Linux）或 Command+S（Mac）保存。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_snippets/snippets_code.png" alt="Snippets 新增片段" data-caption="Snippets 新增片段" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='800px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:800px;height:;"/>
&lt;figcaption style="text-align: center;">
Snippets 新增片段
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h2 id="執行">執行&lt;/h2>
&lt;p>寫好 JS 片段後該如何執行呢？&lt;/p>
&lt;p>你應該有發現下方的三角形圖示，點擊圖示後即可執行 (Ctrl+Enter 快捷鍵也可以)。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_snippets/run_snippet_in_sources.jpg" alt="執行 JS 片段" data-caption="執行 JS 片段" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
執行 JS 片段
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>除了可以在 Snippets 頁面中執行，還可以透過 Command Menu 執行。&lt;/p>
&lt;p>確認在瀏覽器的「開發人員工具(F12)」，按 Control+O（Windows和Linux）或 Command+O（Mac）開啟 Command Menu。&lt;br />
輸入 &lt;code>!&lt;/code> 後點選想要執行的 snippet 名稱。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_snippets/run_snippet_in_command.jpg" alt="透過 Command Menu 執行 JS 片段" data-caption="透過 Command Menu 執行 JS 片段" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='800px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:800px;height:;"/>
&lt;figcaption style="text-align: center;">
透過 Command Menu 執行 JS 片段
&lt;/figcaption>
&lt;/figure>
&lt;p>* 如果沒出現剛剛儲存的片段，可以把開發人員工具關掉再重整網頁重開後試試。&lt;/p>
&lt;br/>
&lt;!--adsense-->
&lt;br/>
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>透過開發人員工具的 Snippets 功能，可以保存並在需要時執行。但有個缺點是每次都要手動去點選執行，它沒辦法設定打開指定網址時自動執行。&lt;/p>
&lt;p>好在，有個很有名的擴充套件 Tampermonkey，它有這項功能，就像是 Snippets 的進階版一樣！👍&lt;br />
* 但聽說 Tampermonkey 這類自訂腳本擴充套件，會因為之後 Chromium 內建的 Manifest 更新版，而導致無法使用 QAQ，希望能有解決辦法或替代方案出來。&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;p>參考：&lt;br />
&lt;a href="https://developer.chrome.com/docs/devtools/javascript/snippets/" target="_blank" rel="noopener">
Run snippets of JavaScript | Google Developers 文件說明
&lt;/a>&lt;/p>
&lt;br/>
&lt;blockquote>
&lt;p>永遠不要讓別人的冷漠，影響了你對這世界的熱情&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/chrome_snippets.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/chrome_snippets_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>Chrome</category><category>網頁</category><category>分享</category></item><item><title>Chrome Remote Debug，在電腦上為手機網頁除錯 (以 Android 為例)</title><link>https://blog.jiatool.com/posts/chrome_remote_debug/</link><pubDate>Sat, 12 Mar 2022 20:40:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sat, 12 Mar 2022 20:40:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/chrome_remote_debug/</guid><description>前言 在電腦上我們想要除錯(Debug)網頁，可以使用 Chrome 的開發人員工具。 但在手機上呢？手機端無法開啟開發人員工具，不過不同的設備可能有不同的情</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>在電腦上我們想要除錯(Debug)網頁，可以使用 Chrome 的開發人員工具。&lt;br />
但在手機上呢？手機端無法開啟開發人員工具，不過不同的設備可能有不同的情況，在電腦上無法完全呈現出來，電腦測明明就好好的，可是用手機開就會出錯，又看不到 console 視窗。&lt;/p>
&lt;p>這時，你可以採用 Chrome 的遠程調試(Debug)裝置功能，只需要透過 USB 傳輸線，即可在電腦端 Debug 網頁、查看 Console 內容。&lt;/p>
&lt;br/>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_remote_debug/dog_computer.jpg" alt="圖片來源：Unsplash" data-caption="圖片來源：Unsplash" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='500px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:500px;height:;"/>
&lt;figcaption style="text-align: center;">
圖片來源：Unsplash
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;!--adsense-->
&lt;h2 id="步驟">步驟&lt;/h2>
&lt;p>首先要將手機連接到電腦，確保 Chrome 的 DevTools 可以偵測到手機裝置，再來才能在電腦上調試(Debug)手機上的網頁。&lt;/p>
&lt;br/>
&lt;h3 id="連接手機到電腦">連接手機到電腦&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>將 Android 手機透過 USB 傳輸線連接到電腦。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>開啟手機「USB 偵錯」功能。&lt;br />
進入手機的「設定」&amp;gt;「開發人員選項 (Developer Options)」&amp;gt;「啟動 USB 偵錯 (Enable USB Debugging)」。&lt;br />
* 不同品牌手機，開發人員選項位置會有差異，像是我的是在「設定」&amp;gt;「系統」底下。&lt;br />
* 如果你手機尚未開啟&amp;quot;開發人員選項&amp;quot;，可以上網尋找教學文章，不同品牌手機會有一些些差異，例如 設定 &amp;gt; 系統 &amp;gt; 關於手機 &amp;gt; 軟體資訊 &amp;gt; (多次點擊)版本號碼。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_remote_debug/enable_usb_debugging.jpg" alt="手機端啟動 USB 偵錯" data-caption="手機端啟動 USB 偵錯" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='350px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:350px;height:;"/>
&lt;figcaption style="text-align: center;">
手機端啟動 USB 偵錯
&lt;/figcaption>
&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>手機和電腦都打開 Chrome (必須登入 Google 帳戶、不能使用無痕模式)。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>電腦端在網址列輸入 &lt;code>chrome://inspect#devices&lt;/code>。&lt;br />
會進入 DevTools 的 Devices 列表，確保「Discover USB devices」有勾選，並稍等它抓取裝置，將會出現手機的型號名稱。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_remote_debug/chrome_devtools.jpg" alt="Chrome DevTools 的 Devices 列表" data-caption="Chrome DevTools 的 Devices 列表" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='550px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:550px;height:;"/>
&lt;figcaption style="text-align: center;">
Chrome DevTools 的 Devices 列表
&lt;/figcaption>
&lt;/figure>
&lt;p>* 如果它顯示 &lt;code>Pending authentication: please accept debugging session on the device.&lt;/code>，則需到手機點選允許 USB 偵錯 (Allow USB Debugging)。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_remote_debug/allow_usb_debugging.jpg" alt="手機端允許 USB 偵錯" data-caption="手機端允許 USB 偵錯" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='300px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:300px;height:;"/>
&lt;figcaption style="text-align: center;">
手機端允許 USB 偵錯
&lt;/figcaption>
&lt;/figure>
&lt;p>* 如果無法找到手機裝置，可以到手機內 「開發人員選項」&amp;gt; 「撤銷 USB 偵錯授權」(Revoke USB Debugging Authorizations)，然後再重試一遍。&lt;br />
* 在某些裝置或遇到其他情況無法連接，可到文章底下的官方參考資料尋找解答。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;br/>
&lt;h3 id="在電腦上調試debug手機上的網頁內容">在電腦上調試(Debug)手機上的網頁內容&lt;/h3>
&lt;ol start="5">
&lt;li>
&lt;p>確保手機是解鎖狀態(或螢幕維持常開)，不然電腦端不會讓你互動、Debug。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>電腦 Chrome 應該會出現手機內 Chrome 的分頁。&lt;br />
(確認手機上的 Chrome 是開啟的。)&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_remote_debug/show_device_tab.png" alt="顯示手機內 Chrome 的分頁" data-caption="顯示手機內 Chrome 的分頁" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
顯示手機內 Chrome 的分頁
&lt;/figcaption>
&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>選擇一個分頁，或輸入想 Debug 的網頁後按 Open，點擊「inspect」進入開發人員工具。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_remote_debug/open_tab.png" alt="開啟手機 Chrome 分頁" data-caption="開啟手機 Chrome 分頁" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
開啟手機 Chrome 分頁
&lt;/figcaption>
&lt;/figure>
&lt;/li>
&lt;li>
&lt;p>你可以在「手機」或「電腦」上操作，兩邊會互相同步哦~&lt;/p>
&lt;/li>
&lt;li>
&lt;p>接下來就可以像一般我們操作一樣，去 Debug 手機端的網頁囉。🎉🎉🎉&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/chrome_remote_debug/debug_device_page.jpg" alt="Debug 手機端的網頁" data-caption="Debug 手機端的網頁" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='800px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:800px;height:;"/>
&lt;figcaption style="text-align: center;">
Debug 手機端的網頁
&lt;/figcaption>
&lt;/figure>
&lt;/li>
&lt;/ol>
&lt;br/>
&lt;!--adsense-->
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>當遇到網頁在 PC 電腦端上開明明都是正常的，改在手機端開就出現莫名其妙的問題，就可以透過以上方式來方便我們除錯 Debug。&lt;/p>
&lt;br/>
&lt;p>歡迎追蹤『&lt;a href="https://www.facebook.com/jiatool" target="_blank" rel="noopener">
IT空間
&lt;/a>』FB 粉專，取得最新發文通知🔔&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;p>參考：&lt;br />
&lt;a href="https://developer.chrome.com/docs/devtools/remote-debugging/" target="_blank" rel="noopener">
Remote debug Android devices | Chrome Developers
&lt;/a>&lt;br />
&lt;a href="https://pjchender.dev/webdev/google-developer-chrome-remote-debug-mobile/" target="_blank" rel="noopener">
Chrome Remote Debug with Mobile | PJCHENder
&lt;/a>&lt;br />
&lt;a href="https://ithelp.ithome.com.tw/articles/10209412" target="_blank" rel="noopener">
手機遠程測試 | iT邦幫忙
&lt;/a>&lt;/p>
&lt;br/>
&lt;blockquote>
&lt;p>大部分的人都會懷念以前「單純」的生活，有「攻略」可以照著玩的日子。&lt;br />
但是在開放世界中，我們才有機會走出「自己的路」。&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/chrome_remote_debug.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/chrome_remote_debug_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>Chrome</category><category>Debug</category><category>網頁</category><category>網站</category></item><item><title>WORDLE 猜字謎 - 加入幾個不同的功能</title><link>https://blog.jiatool.com/posts/wordle_game/</link><pubDate>Thu, 24 Feb 2022 21:30:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Thu, 24 Feb 2022 21:30:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/wordle_game/</guid><description>前言 最近 WORDLE 小遊戲迅速爆紅，在歐美社群平台會看到許多人分享，後續還衍伸出不同種內容，甚至到《紐約時報》花費百萬美元收購這款拼字小遊戲。 單純的畫</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>最近 WORDLE 小遊戲迅速爆紅，在歐美社群平台會看到許多人分享，後續還衍伸出不同種內容，甚至到《紐約時報》花費百萬美元收購這款拼字小遊戲。&lt;br />
單純的畫面、遊戲機制簡潔，以及可以分享過程到社群平台，或許是它爆紅的原因。&lt;/p>
&lt;p>算是練習網頁前端，我也嘗試自己製作這款遊戲，並加入了像是&amp;quot;中文意思&amp;quot;、&amp;quot;繼續出題&amp;quot;、&amp;quot;選擇出題範圍&amp;quot;等等幾個功能，感興趣的快進來嘗試，看看你的功力如何~&lt;/p>
&lt;div class="alert alert-info" role="alert" data-dir="ltr">🎮 WORDLE 猜字謎：&lt;a href="https://wordle.jiatool.com/">https://wordle.jiatool.com/&lt;/a>&lt;/div>
&lt;br/>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/wordle_game/play.jpg" alt="WORDLE 猜字謎" data-caption="WORDLE 猜字謎" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='500px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:500px;height:;"/>
&lt;figcaption style="text-align: center;">
WORDLE 猜字謎
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;h2 id="規則說明">規則說明&lt;/h2>
&lt;p>嘗試在 6 次機會中猜出謎底，謎底為 5 個字母的單字，而且每次猜測必須是有效的單字。&lt;/p>
&lt;br/>
&lt;p>每次猜測後，圖塊的顏色會發生變化，顯示你猜測與答案的接近程度。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/wordle_game/color.jpg" alt="猜題過程，各顏色所代表的意思" data-caption="猜題過程，各顏色所代表的意思" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
猜題過程，各顏色所代表的意思
&lt;/figcaption>
&lt;/figure>
&lt;p>🟩 綠色：表示字母位置正確。&lt;br />
🟨 黃色：表示答案包含該字母但位置錯誤。&lt;br />
⬜ 灰色：表示答案不包含該字母。&lt;/p>
&lt;br/>
&lt;p>玩法有點類似猜數字 1A2B，只是 WORDLE 會明確指出哪些字母猜中了。&lt;/p>
&lt;br/>
&lt;p>點擊畫面上 &amp;quot;ENTER&amp;quot; 鍵送出、&amp;quot;←&amp;quot; 鍵刪除字母。&lt;/p>
&lt;br/>
&lt;h2 id="功能設定">功能設定&lt;/h2>
&lt;p>除了原版的基本功能外，我自己還加入幾個功能設定：&lt;/p>
&lt;ul>
&lt;li>答完後可點擊繼續出題，一直遊玩🤩。&lt;/li>
&lt;li>輸入單字送出後，右方會出現此單字的中文翻譯。&lt;/li>
&lt;li>可選擇出題範圍題庫，例如：國中 1200 單字、高中 7000 單字。 (變更後需重新出題)&lt;/li>
&lt;li>可變更顯示的英文字母大寫或小寫。&lt;/li>
&lt;li>可設定是否出題要包含重複字母的單字，例如：enter 有兩個 &amp;quot;e&amp;quot; 就算是包含重複字母的單字。 (變更後需重新出題)&lt;/li>
&lt;/ul>
&lt;p>其中 &amp;quot;出題範圍題庫&amp;quot; 和 &amp;quot;是否包含重複字母&amp;quot;，設定完後需要點選重新出題，謎底的單字才會重新選擇。&lt;/p>
&lt;br/>
&lt;p>* 目前對於行動裝置，支援度沒那麼完善，建議使用電腦或平板遊玩。&lt;br />
* 尚有許多單字的中文意思還未加入，之後會陸續補上。&lt;/p>
&lt;br/>
&lt;div class="alert alert-info" role="alert" data-dir="ltr">🎮 WORDLE 猜字謎：&lt;a href="https://wordle.jiatool.com/">https://wordle.jiatool.com/&lt;/a>&lt;/div>
&lt;br/>
&lt;!--adsense-->
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>雖然只是個我自己練習的專案，不過也分享給各位遊玩，看看有沒有人能想出更棒的點子、玩法😎。&lt;/p>
&lt;p>之前我也有做個「解謎闖關遊戲」靜態網頁，也可以過去看看：&lt;a href="https://blog.jiatool.com/posts/webgame/" target="_blank" rel="noopener">
Web Secret Game
&lt;/a>&lt;/p>
&lt;br/>
&lt;p>歡迎追蹤『&lt;a href="https://www.facebook.com/jiatool" target="_blank" rel="noopener">
IT空間
&lt;/a>』FB 粉專，取得最新發文通知🔔&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;p>參考：&lt;br />
&lt;a href="https://www.powerlanguage.co.uk/wordle/" target="_blank" rel="noopener">
WORDLE 遊戲原版
&lt;/a>&lt;/p>
&lt;br/>
&lt;blockquote>
&lt;p>Make your dreams come true.（讓美夢成真）&lt;/p>
&lt;p align="right">—— 迪士尼&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/wordle_game.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/wordle_game_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>遊戲</category><category>網頁</category><category>分享</category></item><item><title>[小工具] 自動計算定期票最佳購買日期</title><link>https://blog.jiatool.com/posts/find_workdays/</link><pubDate>Sun, 18 Oct 2020 21:00:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sun, 18 Oct 2020 21:00:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/find_workdays/</guid><description>前言 我 上班/上學 需要使用 火車/捷運/公車 定期票，應該要哪一天買能使用最多次？ 雖然網路上有計算幾個工作天的工具，但沒有包含補班日、去除放假日啊</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>我 上班/上學 需要使用 火車/捷運/公車 定期票，應該要哪一天買能使用最多次？&lt;br />
雖然網路上有計算幾個工作天的工具，但沒有包含補班日、去除放假日啊， (而且我還有特休想請呢)&lt;br />
不然還要一天一天計算，好麻煩&amp;hellip;&lt;/p>
&lt;h2 id="用途說明">用途說明&lt;/h2>
&lt;p>此程式可以幫你計算一段時間內，甚麼時候開始使用定期票最划算。&lt;br />
例如：2020/07/15 ~ 2020/10/02 高捷推出 90 天無限卡(定期票)方案，我想知道從哪一天開時買，可以乘坐最多次(以上班上學為例)。&lt;/p>
&lt;h2 id="網頁連結">網頁連結&lt;/h2>
&lt;div class="box">定期票最佳購買日期：&lt;a href="https://tool.jiatool.com/find_workdays">https://tool.jiatool.com/find_workdays&lt;/a>&lt;/div>
&lt;h2 id="操作說明">操作說明&lt;/h2>
&lt;p>主要介面分為三部分：&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/find_workdays/interface.jpg" alt="介面說明" data-caption="介面說明" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='900px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:900px;height:;"/>
&lt;figcaption style="text-align: center;">
介面說明
&lt;/figcaption>
&lt;/figure>&lt;/p>
&lt;p>我以以下情境範例說明操作，&lt;br />
高雄捷運推行 90 天定期票方案，我是上班族想在 12/1~12/31 之內購買，但是不知道哪一天買可以使用最多天。&lt;br />
對了，我 12/21、12/22 請特休(放假)😎。&lt;/p>
&lt;ol>
&lt;li>
&lt;p>開始結束日期 (橘框)&lt;br />
選定開始日期(2020/12/01)、結束日期(2020/12/31)、天數(90)。&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/find_workdays/description1.png" alt="輸入日期" data-caption="輸入日期" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='700px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:700px;height:;"/>
&lt;figcaption style="text-align: center;">
輸入日期
&lt;/figcaption>
&lt;/figure>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>加入 放假/補班 日期 (綠框)&lt;br />
點擊 &amp;quot;加入 放假/補班 日期&amp;quot; 展開來加入特休(放假)日期，分別選擇 2020/12/21、2020/12/22 加入。&lt;br />
(如果有想取消的日期，點擊後方 x 符號即可移除)&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/find_workdays/description2.png" alt="加入特休(放假)日期" data-caption="加入特休(放假)日期" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='800px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:800px;height:;"/>
&lt;figcaption style="text-align: center;">
加入特休(放假)日期
&lt;/figcaption>
&lt;/figure>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>計算結果 (藍框)&lt;br />
點擊 &amp;quot;計算&amp;quot; 按鈕後，在下方即算出我最多可使用的天數是 59 天(上班日)，分別是 2020/12/27 開始 2021/3/26 結束和 2020/12/28 開始 2021/3/27 結束，這兩天買是最划算的，趕快加入日曆提醒~&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/find_workdays/description3.png" alt="計算結果" data-caption="計算結果" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='900px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:900px;height:;"/>
&lt;figcaption style="text-align: center;">
計算結果
&lt;/figcaption>
&lt;/figure>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="廢話">廢話(?&lt;/h2>
&lt;p>起因是因為 2020 年高雄捷運推行 90 天無限卡(定期票)方案，也就是 90 天內無限制搭乘，那我就想啦，應該要哪一天開始買最划算呢？&lt;br />
我只有上班日會使用到(還包含補班日)，但要去掉請假的日期，真希望有個程式可以幫我計算出來~&lt;/p>
&lt;p>想了一下，嗯&amp;hellip;&amp;hellip;感覺起來應該不難，產生了這個想法，開始用 Python 寫個很簡易的程式，&lt;br />
後來又想應該也有不少人有這個煩惱，不如我就用 JavaScript 改寫(雖然我很不熟&amp;hellip;)、HTML 建個簡易介面，因此又開始查查資料、改改程式，咚~這個靜態網頁就跑出來了~😁&lt;/p>
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>如果剛好有這個需求，快進來解決你的煩惱；如果沒有需要，也歡迎進來玩玩看~&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;p>參考：&lt;br />
&lt;a href="https://tool.jiatool.com/find_workdays" target="_blank" rel="noopener">
定期票最佳購買日期
&lt;/a>&lt;/p>
&lt;br/>
&lt;blockquote>
&lt;p>人生就像騎腳踏車，想保持平衡就得往前走。&lt;br />
Life is like riding a bicycle. To keep your balance you must keep moving.&lt;/p>
&lt;p align="right">—— 愛因斯坦&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/find_workdays.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><category>JavaScript</category><category>網頁</category><category>自製小工具</category></item><item><title>自製網頁解謎闖關遊戲</title><link>https://blog.jiatool.com/posts/webgame/</link><pubDate>Sun, 09 Aug 2020 13:10:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sun, 09 Aug 2020 13:10:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/webgame/</guid><description>之前在巴哈小屋我有寫一篇「使用Python、Flask和Netlify創建簡單的靜態網站 」文章，介紹使用 Flask(Jinja2模板引擎) 來</description><content:encoded>&lt;p>之前在巴哈小屋我有寫一篇「&lt;a href="https://home.gamer.com.tw/creationDetail.php?sn=4663482" target="_blank" rel="noopener">
使用Python、Flask和Netlify創建簡單的靜態網站
&lt;/a>」文章，介紹使用 Flask(Jinja2模板引擎) 來在 Netlify 上創建簡單的靜態網站。&lt;/p>
&lt;p>因此我後來有做個好玩(燒腦?)的解謎小遊戲。&lt;/p>
&lt;div class="alert alert-info" role="alert" data-dir="ltr">🎮 遊戲網址：&lt;a href="https://webgame.jiatool.com">https://webgame.jiatool.com&lt;/a>&lt;/div>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/webgame/WebSecretGame.png" alt="Web Secret Game 首頁" data-caption="Web Secret Game 首頁" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='650px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:650px;height:;"/>
&lt;figcaption style="text-align: center;">
Web Secret Game 首頁
&lt;/figcaption>
&lt;/figure>
&lt;p>玩法大致是要從網頁中尋找線索，找出下一關的網址~&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/webgame/level5.png" alt="第五關" data-caption="第五關" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
第五關
&lt;/figcaption>
&lt;/figure>&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/webgame/level9.png" alt="第九關" data-caption="第九關" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='600px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:600px;height:;"/>
&lt;figcaption style="text-align: center;">
第九關
&lt;/figcaption>
&lt;/figure>&lt;/p>
&lt;p>趕快來挑戰看看，能不能全破(共18關)吧~&lt;/p>
&lt;br/>
&lt;br/>
&lt;br/>
&lt;p>如有遇到其他問題，或真的很想要提示XD，歡迎底下留言~😎&lt;br />
(也可到我巴哈小屋&lt;a href="https://home.gamer.com.tw/creationDetail.php?sn=4876814" target="_blank" rel="noopener">
此篇文章
&lt;/a>底下留言)&lt;/p>
&lt;hr />
&lt;blockquote>
&lt;p>第一步，便是要確信一切皆有可能，然後達成的機率便會發生。&lt;/p>
&lt;p align="right">—— Elon Musk 伊隆·馬斯克 (著名企業家)&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/webgame.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><category>遊戲</category><category>網頁</category><category>Netlify</category><category>分享</category></item><item><title>常用網頁 CSS Selector (選擇器)取得元素，搭配 Python BeautifulSoup 套件</title><link>https://blog.jiatool.com/posts/sorted-out-css-selector/</link><pubDate>Fri, 12 Jun 2020 22:29:06 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sun, 17 Mar 2024 08:25:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/sorted-out-css-selector/</guid><description>(2021/10/03 新增) 瀏覽器使用 CSS Selectors 搜尋教學。 最近開始接觸網路爬蟲，因此順便把一些常用網頁取得元素(element)的 CSS Selectors 方式整理一下，第一部分是純 CSS</description><content:encoded>&lt;p>(2021/10/03 新增) 瀏覽器使用 CSS Selectors 搜尋教學。&lt;/p>
&lt;p>最近開始接觸網路爬蟲，因此順便把一些常用網頁取得元素(element)的 CSS Selectors 方式整理一下，第一部分是純 CSS，第二部分則是 Python 搭配 BeautifulSoup 套件。&lt;/p>
&lt;p>喜歡網路爬蟲也歡迎觀看 &lt;a href="https://blog.jiatool.com/series/Python%e7%b6%b2%e8%b7%af%e7%88%ac%e8%9f%b2%e5%af%a6%e4%be%8b/" target="_blank" rel="noopener">
Python網路爬蟲實例
&lt;/a> 系列文章~&lt;/p>
&lt;br/>
&lt;!--adsense-->
&lt;h2 id="純css">純CSS&lt;/h2>
&lt;p>先上表格，後面還有範例。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>說明&lt;/th>
&lt;th>語法&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>tag 定位&lt;/td>
&lt;td>span font&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>id 定位&lt;/td>
&lt;td>#ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>class 定位&lt;/td>
&lt;td>.CLASS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>排除&lt;/td>
&lt;td>:not()&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>屬性值&lt;/td>
&lt;td>[name=&amp;quot;NAME&amp;quot;]&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>屬性值(不等於)&lt;/td>
&lt;td>[name!=&amp;quot;NAME&amp;quot;]&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>屬性值包含&lt;/td>
&lt;td>[title*=&amp;quot;TITLE&amp;quot;]&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>屬性值開頭&lt;/td>
&lt;td>[title^=&amp;quot;start&amp;quot;]&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>屬性值結尾&lt;/td>
&lt;td>[title$=&amp;quot;end&amp;quot;]&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 1 個子元素 (全部)&lt;/td>
&lt;td>ul li:first-child&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>最後 1 個子元素 (全部)&lt;/td>
&lt;td>ul li:last-child&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 2 個子元素 (全部)&lt;/td>
&lt;td>ul li:nth-child(2)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>倒數第 2 個子元素 (全部)&lt;/td>
&lt;td>ul li:nth-last-child(2)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 1 個子元素 (指定)&lt;/td>
&lt;td>ul li:first-of-type&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>最後 1 個子元素 (指定)&lt;/td>
&lt;td>ul li:last-of-type&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 2 個子元素 (指定)&lt;/td>
&lt;td>ul li:nth-of-type(2)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>倒數第 2 個子元素 (指定)&lt;/td>
&lt;td>ul li:nth-last-of-type(2)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第奇數個子元素 (指定)&lt;/td>
&lt;td>ul li:nth-of-type(odd)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第偶數個子元素 (指定)&lt;/td>
&lt;td>ul li:nth-of-type(even)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 3 的倍數個子元素 (指定)&lt;/td>
&lt;td>ul li:nth-of-type(3n)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>第 3 的倍數+1個子元素 (指定)&lt;/td>
&lt;td>ul li:nth-of-type(3n+1)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>同一層往後尋找元素&lt;/td>
&lt;td>#ID ~ i&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>同一層的&amp;quot;下一個&amp;quot;元素&lt;/td>
&lt;td>#ID + *&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>同時尋找多種選擇器&lt;/td>
&lt;td>#id1 , #id2&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="expand">
&lt;button type="button" class="expand__button" aria-label="Expand Button">
&lt;span class="expand-icon expand-icon__right">
&lt;svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">&lt;path fill="currentColor" d="M9.29 15.88L13.17 12 9.29 8.12c-.39-.39-.39-1.02 0-1.41.39-.39 1.02-.39 1.41 0l4.59 4.59c.39.39.39 1.02 0 1.41L10.7 17.3c-.39.39-1.02.39-1.41 0-.38-.39-.39-1.03 0-1.42z"/>&lt;/svg>
&lt;/span>
以下程式碼省略
&lt;/button>
&lt;div class="expand__content">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="kn">import&lt;/span> &lt;span class="nn">re&lt;/span>
&lt;span class="kn">from&lt;/span> &lt;span class="nn">bs4&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">BeautifulSoup&lt;/span>
&lt;span class="n">soup&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BeautifulSoup&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">html&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;html.parser&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;br/>
&lt;h3 id="標籤定位tagidclass">標籤定位(tag、id、class)&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-HTML" data-lang="HTML">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;&lt;/span>&lt;span class="nt">font&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>001&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">font&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">font&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>002&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">font&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ID&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>003&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;CLASS CLASS2&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>004&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">i&lt;/span> &lt;span class="na">name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;NAME&amp;#34;&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;STYLE&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>005&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">i&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">i&lt;/span> &lt;span class="na">name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;NAME2&amp;#34;&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;STYLE&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>006&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">i&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">title&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;TITLE&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>007&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">title&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;start-TITLE&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>008&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">title&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;TITLE-end&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>009&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># tag定位：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;span font&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;font&amp;gt;001&amp;lt;/font&amp;gt;&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;span &amp;gt; font&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;font&amp;gt;002&amp;lt;/font&amp;gt;&lt;/span>
&lt;span class="c1"># id定位：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#ID&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div#ID&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;div id=&amp;#34;ID&amp;#34;&amp;gt;003&amp;lt;/div&amp;gt;&lt;/span>
&lt;span class="c1"># class定位：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;.CLASS&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div.CLASS&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div.CLASS.CLASS2&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;div class=&amp;#34;CLASS CLASS2&amp;#34;&amp;gt;004&amp;lt;/div&amp;gt;&lt;/span>
&lt;span class="c1"># 同時尋找多種選擇器&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#ID , .CLASS&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;div id=&amp;#34;ID&amp;#34;&amp;gt;003&amp;lt;/div&amp;gt;, &amp;lt;div class=&amp;#34;CLASS CLASS2&amp;#34;&amp;gt;004&amp;lt;/div&amp;gt;]&lt;/span>
&lt;span class="c1"># 排除&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div:not(#ID):not(.CLASS)&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;div&amp;gt;&amp;lt;font&amp;gt;001&amp;lt;/font&amp;gt;&amp;lt;/div&amp;gt;, &amp;lt;div title=&amp;#34;TITLE&amp;#34;&amp;gt;007&amp;lt;/div&amp;gt;, &amp;lt;div title=&amp;#34;start-TITLE&amp;#34;&amp;gt;008&amp;lt;/div&amp;gt;, &amp;lt;div title=&amp;#34;TITLE-end&amp;#34;&amp;gt;009&amp;lt;/div&amp;gt;]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="元素屬性">元素屬性&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># 元素有某屬性：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;i[name]&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;i name=&amp;#34;NAME&amp;#34; style=&amp;#34;STYLE&amp;#34;&amp;gt;005&amp;lt;/i&amp;gt;&lt;/span>
&lt;span class="c1"># 屬性值：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;i[name=&amp;#34;NAME&amp;#34;]&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;i[name=&amp;#34;NAME&amp;#34;][style=&amp;#34;STYLE&amp;#34;]&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;i name=&amp;#34;NAME&amp;#34; style=&amp;#34;STYLE&amp;#34;&amp;gt;005&amp;lt;/i&amp;gt;&lt;/span>
&lt;span class="c1"># 屬性值不等於：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;i[name!=&amp;#34;NAME&amp;#34;]&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;i name=&amp;#34;NAME2&amp;#34; style=&amp;#34;STYLE&amp;#34;&amp;gt;006&amp;lt;/i&amp;gt;&lt;/span>
&lt;span class="c1"># 屬性值包含某字串：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div[title*=&amp;#34;TITLE&amp;#34;]&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;div title=&amp;#34;TITLE&amp;#34;&amp;gt;007&amp;lt;/div&amp;gt;&lt;/span>
&lt;span class="c1"># 屬性值以某字串開頭：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div[title^=&amp;#34;start&amp;#34;]&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;div title=&amp;#34;start-TITLE&amp;#34;&amp;gt;008&amp;lt;/div&amp;gt;&lt;/span>
&lt;span class="c1"># 屬性值以某字串結尾：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div[title$=&amp;#34;end&amp;#34;]&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;div title=&amp;#34;TITLE-end&amp;#34;&amp;gt;009&amp;lt;/div&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="子元素">子元素&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-HTML" data-lang="HTML">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;list&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>101&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>102&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>201&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>202&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>203&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>103&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>204&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>104&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># -child&lt;/span>
&lt;span class="c1"># 第1個、最後1個 子元素：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;ul#list li:first-child&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;ul#list li:last-child&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;li&amp;gt;1001&amp;lt;/li&amp;gt;&lt;/span>
&lt;span class="c1"># &amp;lt;li&amp;gt;1004&amp;lt;/li&amp;gt;&lt;/span>
&lt;span class="c1"># 第2個、倒數第2個 子元素：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;ul#list li:nth-child(2)&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;ul#list li:nth-last-child(2)&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;p&amp;gt;102&amp;lt;/p&amp;gt;&lt;/span>
&lt;span class="c1"># None&lt;/span>
&lt;span class="c1"># 注意：倒數第2個元素不是&amp;#34;p&amp;#34;，因此找不到&lt;/span>
&lt;span class="c1"># -of-type&lt;/span>
&lt;span class="c1"># 第1個、最後1個 子元素：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#list p:first-of-type&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#list p:last-of-type&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;p&amp;gt;101&amp;lt;/p&amp;gt;&lt;/span>
&lt;span class="c1"># &amp;lt;p&amp;gt;104&amp;lt;/p&amp;gt;&lt;/span>
&lt;span class="c1"># 第2個、倒數第2個 子元素：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#list p:nth-of-type(2)&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#list p:nth-last-of-type(2)&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;p&amp;gt;102&amp;lt;/p&amp;gt;&lt;/span>
&lt;span class="c1"># &amp;lt;p&amp;gt;103&amp;lt;/p&amp;gt;&lt;/span>
&lt;span class="c1"># 以上兩種很像，他們的差別是：&lt;/span>
&lt;span class="c1"># nth-child 會把全部的元素加進去算；nth-of-type 只會針對你指定的元素去算。&lt;/span>
&lt;span class="c1"># 偶數、奇數 位置元素&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#list p:nth-of-type(odd)&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#list p:nth-of-type(even)&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;p&amp;gt;101&amp;lt;/p&amp;gt;, &amp;lt;p&amp;gt;103&amp;lt;/p&amp;gt;]&lt;/span>
&lt;span class="c1"># [&amp;lt;p&amp;gt;102&amp;lt;/p&amp;gt;, &amp;lt;p&amp;gt;104&amp;lt;/p&amp;gt;]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="同一層元素">同一層元素&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-HTML" data-lang="HTML">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ID&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>301&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;CLASS CLASS2&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>302&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">i&lt;/span> &lt;span class="na">name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;NAME&amp;#34;&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;STYLE&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>303&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">i&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">i&lt;/span> &lt;span class="na">name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;NAME2&amp;#34;&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;STYLE&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>304&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">i&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">html&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># 在同一層往後尋找元素&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#ID ~ i&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;i name=&amp;#34;NAME&amp;#34; style=&amp;#34;STYLE&amp;#34;&amp;gt;303&amp;lt;/i&amp;gt;&lt;/span>
&lt;span class="c1"># 在同一層的&amp;#34;下一個&amp;#34;元素&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#ID + *&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;div class=&amp;#34;CLASS CLASS2&amp;#34;&amp;gt;302&amp;lt;/div&amp;gt;&lt;/span>
&lt;span class="c1"># 在同一層，往後尋找&amp;#34;下一個&amp;#34;元素&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#ID + div&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;div class=&amp;#34;CLASS CLASS2&amp;#34;&amp;gt;302&amp;lt;/div&amp;gt;&lt;/span>
&lt;span class="c1"># 在同一層，往後尋找中間跳過一個元素的&amp;#34;下一個&amp;#34;元素&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;#ID + * + i&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;i name=&amp;#34;NAME&amp;#34; style=&amp;#34;STYLE&amp;#34;&amp;gt;303&amp;lt;/i&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br/>
&lt;h2 id="搭配-beautifulsoup-套件">搭配 BeautifulSoup 套件&lt;/h2>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-HTML" data-lang="HTML">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>標題&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>副標題&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>第二副標題&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;a&amp;#34;&lt;/span> &lt;span class="na">title&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;first&amp;#34;&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;/link&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>這是一行句子&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">a&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;/link1&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>這是超連結1&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">a&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;/link2&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>這是超連結2&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">data-target&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>data屬性&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;CLASS CLASS2&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>多個class&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="尋找標籤">尋找標籤&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># 返回符合的單個元素(如有多個符合，則回傳第一個)，當找不到則回傳None：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;span&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;span&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;span&amp;gt;標題&amp;lt;/span&amp;gt;&lt;/span>
&lt;span class="c1"># 返回符合的全部元素(List)，當找不到則回傳空List：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;span&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;span&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;span&amp;gt;標題&amp;lt;/span&amp;gt;, &amp;lt;span&amp;gt;副標題&amp;lt;/span&amp;gt;, &amp;lt;span&amp;gt;第二副標題&amp;lt;/span&amp;gt;]&lt;/span>
&lt;span class="c1"># 限制尋找元素數量：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;span&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">limit&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;span&amp;gt;標題&amp;lt;/span&amp;gt;, &amp;lt;span&amp;gt;副標題&amp;lt;/span&amp;gt;]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="取得元素文字值">取得元素文字、值&lt;/h3>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># 取得元素的文字：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div.a&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">text&lt;/span>
&lt;span class="c1"># 這是一行句子&lt;/span>
&lt;span class="c1"># 如果需要更多擷取方式，可使用get_text()&lt;/span>
&lt;span class="c1"># 取得元素屬性的值：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div.a&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;title&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># first&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div.a&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;class&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;#39;a&amp;#39;]&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;div.a&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;href&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># /link&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="元素屬性文字">元素屬性、文字&lt;/h3>
&lt;p>有些較複雜的也可以改用 find 或 find_all 來尋找。&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># 基本的&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">title&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;first&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;div class=&amp;#34;a&amp;#34; href=&amp;#34;/link&amp;#34; title=&amp;#34;first&amp;#34;&amp;gt;這是一行句子&amp;lt;/div&amp;gt;]&lt;/span>
&lt;span class="c1"># 因為 class 在 Python 中是保留字，所以尋找class時改使用 class_：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">class_&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;CLASS&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;div class=&amp;#34;CLASS CLASS2&amp;#34;&amp;gt;多個class&amp;lt;/div&amp;gt;]&lt;/span>
&lt;span class="c1"># 當想比對全部class(注意順序)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">class_&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;CLASS CLASS2&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;div class=&amp;#34;CLASS CLASS2&amp;#34;&amp;gt;多個class&amp;lt;/div&amp;gt;]&lt;/span>
&lt;span class="c1"># 某些HTML的屬性直接寫的話，會發生錯誤(例如 data-* 這類的屬性)，&lt;/span>
&lt;span class="c1"># 改使用另一種方式即可：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">attrs&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;data-target&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">})&lt;/span>
&lt;span class="c1"># [&amp;lt;div data-target=&amp;#34;value&amp;#34;&amp;gt;data屬性&amp;lt;/div&amp;gt;]&lt;/span>
&lt;span class="c1"># 以正規表示式比對超連結網址：&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">re&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">compile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;^/link\d&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;span class="c1"># [&amp;lt;a href=&amp;#34;/link1&amp;#34;&amp;gt;這是超連結1&amp;lt;/a&amp;gt;, &amp;lt;a href=&amp;#34;/link2&amp;#34;&amp;gt;這是超連結2&amp;lt;/a&amp;gt;]&lt;/span>
&lt;span class="c1"># 以文字內容尋找(也可搭配正規表示式)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;div&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">string&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;這是一行句子&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;div&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">string&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">re&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">compile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;句子&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;span class="c1"># [&amp;lt;div class=&amp;#34;a&amp;#34; href=&amp;#34;/link&amp;#34; title=&amp;#34;first&amp;#34;&amp;gt;這是一行句子&amp;lt;/div&amp;gt;]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br/>
&lt;h3 id="父元素同一層元素">父元素、同一層元素&lt;/h3>
&lt;p>前面說的是以其元素往下尋找子元素，那如果要找父元素或同一層元素，使用以下方式：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-HTML" data-lang="HTML">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;div2&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;div1&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;a&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>第一點&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;b&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>第二點&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;my&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>第三點&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;c&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>第四點&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;d&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>第五點&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># 先以 &amp;lt;p id=&amp;#34;my&amp;#34;&amp;gt;第三點&amp;lt;/p&amp;gt; 元素為基準&lt;/span>
&lt;span class="n">my_tag&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;my&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># 函式名稱多加s，代表尋找多個&lt;/span>
&lt;span class="c1"># 向上尋找父元素&lt;/span>
&lt;span class="n">my_tag&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_parent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;div&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">my_tag&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_parents&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;div&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># 在同一層往前尋找元素&lt;/span>
&lt;span class="n">my_tag&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_previous_sibling&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;p id=&amp;#34;b&amp;#34;&amp;gt;第二點&amp;lt;/p&amp;gt;&lt;/span>
&lt;span class="n">my_tag&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_previous_siblings&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;p id=&amp;#34;b&amp;#34;&amp;gt;第二點&amp;lt;/p&amp;gt;, &amp;lt;p id=&amp;#34;a&amp;#34;&amp;gt;第一點&amp;lt;/p&amp;gt;]&lt;/span>
&lt;span class="c1"># 在同一層往後尋找元素&lt;/span>
&lt;span class="n">my_tag&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_next_sibling&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># &amp;lt;p id=&amp;#34;c&amp;#34;&amp;gt;第四點&amp;lt;/p&amp;gt;&lt;/span>
&lt;span class="n">my_tag&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">find_next_siblings&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># [&amp;lt;p id=&amp;#34;c&amp;#34;&amp;gt;第四點&amp;lt;/p&amp;gt;, &amp;lt;p id=&amp;#34;d&amp;#34;&amp;gt;第五點&amp;lt;/p&amp;gt;]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br/>
&lt;h3 id="其他">其他&lt;/h3>
&lt;p>其他在擷取網頁可能還需要的功能：&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="c1"># 去除某個元素&lt;/span>
&lt;span class="n">node&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select_one&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;#my&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">extract&lt;/span>&lt;span class="p">()&lt;/span>
&lt;span class="c1"># 去除多個元素&lt;/span>
&lt;span class="c1"># 注意：前面已經將 #my 移除了&lt;/span>
&lt;span class="n">node&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">t&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">extract&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">t&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">soup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;p&amp;#34;&lt;/span>&lt;span class="p">)]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br/>
&lt;br/>
&lt;h2 id="瀏覽器使用-css-selectors-搜尋">瀏覽器使用 CSS Selectors 搜尋&lt;/h2>
&lt;p>你知道在撰寫網路爬蟲程式時，可以有什麼方式快速找到元素的標籤嗎？&lt;br />
瀏覽器的 &lt;strong>開發人員工具&lt;/strong> 有許多方便的功能讓我們使用~&lt;/p>
&lt;br/>
&lt;p>Q. 如何開啟瀏覽器的 &lt;strong>開發人員工具&lt;/strong> 呢？&lt;/p>
&lt;p>A. 有以下三種方式：&lt;/p>
&lt;ol>
&lt;li>網頁空白處點擊滑鼠右鍵 &amp;gt; 檢查。&lt;/li>
&lt;li>瀏覽器(Chrome)右上選單 &amp;gt; 更多工具 &amp;gt; 開發人員工具。&lt;/li>
&lt;li>快捷鍵 F12。&lt;/li>
&lt;/ol>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/sorted-out-css-selector/open_developer_tools_01.png" alt="開發人員工具" data-caption="第一種開啟方式" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='300px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:300px;height:;"/>
&lt;figcaption style="text-align: center;">
第一種開啟方式
&lt;/figcaption>
&lt;/figure>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/sorted-out-css-selector/open_developer_tools_02.png" alt="開發人員工具" data-caption="第二種開啟方式" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='500px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:500px;height:;"/>
&lt;figcaption style="text-align: center;">
第二種開啟方式
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>Q. 那如何快速找到元素的標籤？&lt;/p>
&lt;p>A. 切換到 &lt;strong>Elements&lt;/strong> 分頁，點擊左上角箭頭，並滑鼠指到(或點選)網頁上的元素。&lt;br />
如此開發人員工具內會跳到此元素的位置，並標註出來。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/sorted-out-css-selector/developer_tools.png" alt="找到元素的標籤" data-caption="找到元素的標籤" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='650px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:650px;height:;"/>
&lt;figcaption style="text-align: center;">
找到元素的標籤
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>Q. 如何使用 CSS Selectors 或 XPath 搜尋元素？&lt;/p>
&lt;p>A. 在 &lt;strong>Elements&lt;/strong> 分頁，快捷鍵 Ctrl + F，會跳出下方搜尋欄，可以透過 &amp;quot;文字&amp;quot;、&amp;quot;CSS Selectors&amp;quot;、&amp;quot;XPath&amp;quot; 搜尋元素。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/sorted-out-css-selector/elements.png" alt="Elements 下方搜尋欄" data-caption="Elements 下方搜尋欄" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='450px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:450px;height:;"/>
&lt;figcaption style="text-align: center;">
Elements 下方搜尋欄
&lt;/figcaption>
&lt;/figure>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/sorted-out-css-selector/search_selector.png" alt="使用 CSS Selectors 或 XPath 搜尋元素" data-caption="使用 CSS Selectors 或 XPath 搜尋元素" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='450px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:450px;height:;"/>
&lt;figcaption style="text-align: center;">
使用 CSS Selectors 或 XPath 搜尋元素
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;p>Q. 有辦法自動產生元素的 &amp;quot;CSS Selectors&amp;quot;、&amp;quot;XPath&amp;quot; 嗎？&lt;/p>
&lt;p>A. 是可以，但不那麼建議，因為網頁有時會更新、變動，建議自己找出較好的 Selector 寫法。&lt;br />
對元素點擊滑鼠右鍵 &amp;gt; Copy &amp;gt; Copy selector。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/sorted-out-css-selector/copy_selector.png" alt="複製元素的 CSS Selector 或 XPath" data-caption="複製元素的 CSS Selector 或 XPath" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='450px' height='' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath fill='%23aaa' d='M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 16H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zm-4.44-6.19l-2.35 3.02-1.56-1.88c-.2-.25-.58-.24-.78.01l-1.74 2.23c-.26.33-.02.81.39.81h8.98c.41 0 .65-.47.4-.8l-2.55-3.39c-.19-.26-.59-.26-.79 0z'/%3E%3C/svg%3E" class="lazyload" style="width:450px;height:;"/>
&lt;figcaption style="text-align: center;">
複製元素的 CSS Selector 或 XPath
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;!--adsense-->
&lt;br/>
&lt;br/>
&lt;p>如有發現任何錯誤，歡迎底下留言告知~&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;p>參考：&lt;br />
&lt;a href="https://blog.csdn.net/huilan_same/article/details/52806985" target="_blank" rel="noopener">
Python selenium —— XPath and CSS cheat sheet
&lt;/a>&lt;br />
&lt;a href="https://blog.gtwang.org/programming/python-beautiful-soup-module-scrape-web-pages-tutorial/" target="_blank" rel="noopener">
Python 使用 Beautiful Soup 抓取與解析網頁資料，開發網路爬蟲教學
&lt;/a>&lt;/p>
&lt;br/>
&lt;blockquote>
&lt;p>不用很厲害才開始，要先開始才會很厲害。&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/sorted-out-css-selector.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/sorted-out-css-selector_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>BeautifulSoup</category><category>Python</category><category>CSS</category><category>HTML</category><category>網頁</category><category>網路爬蟲</category></item></channel></rss>