<?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>PChome on IT 空間</title><link>https://blog.jiatool.com/tags/PChome/</link><description>Recent content in PChome 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, 05 Nov 2022 21:10:00 +0800</lastBuildDate><atom:link href="https://blog.jiatool.com/tags/PChome/index.xml" rel="self" type="application/rss+xml"/><item><title>原來 PChome 也可以買貴退價差！！</title><link>https://blog.jiatool.com/posts/pchome_refund/</link><pubDate>Sat, 05 Nov 2022 21:10:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sat, 05 Nov 2022 21:10:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/pchome_refund/</guid><description>前言 之前幫朋友在 PChome 買一隻滑鼠 $990，結果竟然過三天就特價剩 $799，直接便宜 191 元，想說要不要為了 191 而把滑鼠退回去，但又覺得很麻煩。 突然想到</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>之前幫朋友在 PChome 買一隻滑鼠 $990，結果竟然過三天就特價剩 $799，直接便宜 191 元，想說要不要為了 191 而把滑鼠退回去，但又覺得很麻煩。&lt;/p>
&lt;p>突然想到，該不會 PChome 有什麼退價差的機制，一查還真的有！！整理出這篇文章給有需要的人參考。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_refund/pchome_bar.png" alt="PChome" data-caption="PChome" 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;">
PChome
&lt;/figcaption>
&lt;/figure>
&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>首先到 PChome 的訂單查詢頁面(&lt;a href="https://ecvip.pchome.com.tw/web/order/all">https://ecvip.pchome.com.tw/web/order/all&lt;/a>)，找到你要退差價的訂單，點擊後方聯絡客服的「問問題」按鈕。&lt;/p>
&lt;p>(一開始我以為是&amp;quot;我要退貨&amp;quot;，結果並不是。)&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_refund/order_list.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;br/>
&lt;p>依序選擇「退貨問題」的「保留商品退差價」分類，確認下方商品明細後，下一步。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_refund/ask_question.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;br/>
&lt;p>接下來正常來講，系統會自動抓到此商品的最新價格，如果沒有，可以點選下方按鈕聯絡客服人員。&lt;/p>
&lt;p>會顯示可以退多少錢(像我這邊就是可以退款 191 元)、什麼時候退款(七天猶豫期後)，跟退款方式(其實就是依你付款方式)。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_refund/question_reply.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;/p>
&lt;ol>
&lt;li>需為收到商品7日內所提出之退價差申請。&lt;/li>
&lt;li>訂單商品組合與可退價差之商品組合（主商品+贈品）須完全相符。&lt;/li>
&lt;li>訂單商品如有參與折扣活動或使用折價券折抵，價差以折扣後金額計算。&lt;/li>
&lt;li>訂單商品若有參加現金積點活動，則活動條件需一致，此筆訂單： 無參加現金積點活動&lt;/li>
&lt;/ol>
&lt;br/>
&lt;br/>
&lt;p>接下來，就等七天猶豫期之後，也就是收到商品後七天，他會再通知已經執行退款程序。&lt;/p>
&lt;p>我這邊是用 Line Pay 付款，所以他退款就是進到 Line Pay。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_refund/refund_notice.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>當天下午 Line Pay 就收到退款了。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_refund/linepay.jpg" alt="Line Pay 退款" data-caption="Line Pay 退款" 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;">
Line Pay 退款
&lt;/figcaption>
&lt;/figure>
&lt;br/>
&lt;!--adsense-->
&lt;br/>
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>下次在 PChome 買商品，如果發現商品又特價了，不要難過，在七天內還可以趕快按照上方文章流程申請退價差。👍&lt;/p>
&lt;br/>
&lt;p>題外話，然後這隻滑鼠過幾天又降到 599，眼神死&amp;hellip;&amp;hellip;&lt;/p>
&lt;br/>
&lt;br/>
&lt;blockquote>
&lt;p>「決不、決不、決不、決不放棄！」&lt;br />
Never, never, never, never give up.&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/pchome_refund.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/pchome_refund_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>PChome</category><category>分享</category></item><item><title>[Python爬蟲實例] PChome 線上購物 (下篇)</title><link>https://blog.jiatool.com/posts/pchome_spider02/</link><pubDate>Sun, 02 May 2021 20:50:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sun, 02 May 2021 20:50:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/pchome_spider02/</guid><description>前言 在之前的爬蟲實例講解過蝦皮購物 ，而今日要來講解同樣在台灣非常多人使用的「PChome 線上購物 」🛒。 因為 PChome 在一個頁面中針對不同部分的資料有</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>在之前的爬蟲實例講解過&lt;a href="https://blog.jiatool.com/posts/shopee_spider/" target="_blank" rel="noopener">
蝦皮購物
&lt;/a>，而今日要來講解同樣在台灣非常多人使用的「&lt;a href="https://shopping.pchome.com.tw/" target="_blank" rel="noopener">
PChome 線上購物
&lt;/a>」🛒。&lt;/p>
&lt;p>因為 PChome 在一個頁面中針對不同部分的資料有送出不同的請求，整理成一篇會太長，因此我將分為上下篇來介紹。&lt;br />
上一篇 PChome 線上購物介紹到 &lt;a href="https://ecshweb.pchome.com.tw/search/v3.3/?q=%E6%BB%91%E9%BC%A0" target="_blank" rel="noopener">
PChome 搜尋頁面
&lt;/a> 的相關資料，而本篇將講解如何取到 &lt;a href="https://24h.pchome.com.tw/prod/DCAN8J-A9008YONC" target="_blank" rel="noopener">
商品頁面
&lt;/a> 的資料。&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://blog.jiatool.com/posts/pchome_spider01" target="_blank" rel="noopener">
PChome 線上購物 網路爬蟲實例 (上篇)
&lt;/a>&lt;/li>
&lt;li>PChome 線上購物 網路爬蟲實例 (下篇) =&amp;gt; 本篇&lt;/li>
&lt;/ul>
&lt;br/>
&lt;p>* 「&lt;a href="https://shopping.pchome.com.tw/" target="_blank" rel="noopener">
PChome 線上購物
&lt;/a>」與「&lt;a href="https://24h.pchome.com.tw/" target="_blank" rel="noopener">
PChome 24h購物
&lt;/a>」兩者的商品搜尋都是導到同樣的頁面，因此實際上是一樣的。&lt;/p>
&lt;p>備註：此文僅教育學習，切勿用作商業用途，個人實作皆屬個人行為，本作者不負任何法律責任&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/online_shopping.jpg" alt="線上購物 (來源：Pixabay)" data-caption="線上購物 (來源：Pixabay)" 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;">
線上購物 (來源：Pixabay)
&lt;/figcaption>
&lt;/figure>
&lt;h2 id="套件">套件&lt;/h2>
&lt;p>此次 Python 爬蟲主要使用到的套件：&lt;/p>
&lt;ul>
&lt;li>Requests [&lt;a href="https://requests.readthedocs.io/en/master/" target="_blank" rel="noopener">
Doc
&lt;/a>] [&lt;a href="https://github.com/psf/requests" target="_blank" rel="noopener">
GitHub
&lt;/a>]&lt;/li>
&lt;/ul>
&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Shell" data-lang="Shell">pip install requests
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br/>
&lt;!--adsense-->
&lt;h2 id="商品基本資料">商品基本資料&lt;/h2>
&lt;p>這邊以&lt;a href="https://24h.pchome.com.tw/prod/DHAFI0-A900BAPXK" target="_blank" rel="noopener">
此商品
&lt;/a>為例，其網址為：&lt;a href="https://24h.pchome.com.tw/prod/DHAFI0-A900BAPXK">https://24h.pchome.com.tw/prod/DHAFI0-A900BAPXK&lt;/a>&lt;/p>
&lt;p>「商品基本資料」請求資料會有像是商品名稱、圖片、價格，與一些此商品的設定等等。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/product_info.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>* 商品名稱下方的資訊又是在其他請求XD，文章之後章節會提到。&lt;/p>
&lt;h3 id="請求路徑與參數">請求路徑與參數&lt;/h3>
&lt;div class="notices info" data-title="商品基本資料 請求">
請求網址：&lt;code>https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/DHAFI0-A900BAPXK&amp;amp;_callback=jsonp_prod&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;br/>
&lt;p>也可以透過 &lt;code>fields&lt;/code> 參數來指定你想要哪些欄位，例如我只要商品名稱、商品價格、是否有24小時到達：&lt;br />
&lt;code>https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/DHAFI0-A900BAPXK&amp;amp;fields=Name,Price,isArrival24h&amp;amp;_callback=jsonp_prod&lt;/code>&lt;/p>
&lt;p>原先網頁上抓到它有帶以下欄位：&lt;br />
&lt;code>fields=Seq,Id,Name,Nick,Store,PreOrdDate,SpeOrdDate,Price,Discount,Pic,Weight,ISBN,Qty,Bonus,isBig,isSpec,isCombine,isDiy,isRecyclable,isCarrier,isMedical,isBigCart,isSnapUp,isDescAndIntroSync,isFoodContents,isHuge,isEnergySubsidy,isPrimeOnly,isPreOrder24h,isWarranty,isLegalStore,isFresh,isBidding,isSet,Volume,isArrival24h,isETicket,ShipType,isO2O&lt;/code>&lt;/p>
&lt;p>我還有發現如果不加上&amp;quot;fields&amp;quot;參數，回傳的欄位反而會少其中幾個。&lt;/p>
&lt;h3 id="回傳資料">回傳資料&lt;/h3>
&lt;p>跟上篇的&amp;quot;商品規格種類&amp;quot;一樣，回傳資料前後會有一段 JS 語法，我們要先將其字串移除後，才是正確的 JSON 格式。&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;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;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;DHAFI0-A900BAPXK-000&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ASUS E410MA-0341PN4020 玫瑰金(Celeron N4020/4G/128G/Windows 10 Home S/HD/14)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Price&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;M&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;P&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">11900&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Prime&amp;#34;&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="nt">&amp;#34;isArrival24h&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Seq&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">26650490&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DHAFI0-A900BAPXK-000&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Nick&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;font color=#5c18d8&amp;gt;&amp;lt;b&amp;gt;小資輕薄機首選!★輕1.3kg★內附Microsoft365&amp;lt;/font&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;Br&amp;gt;ASUS E410MA-0341PN4020 玫瑰金&amp;lt;BR&amp;gt;14吋輕薄文書筆電&amp;lt;BR&amp;gt;&amp;lt;font size=3&amp;gt;&amp;lt;font color=#FF00CC&amp;gt;★內含S模式作業系統 &amp;lt;/font&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Store&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DHAFI0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;PreOrdDate&amp;#34;&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="nt">&amp;#34;SpeOrdDate&amp;#34;&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="nt">&amp;#34;Discount&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;B&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DHAFI0A900BAPXK/000001_1619679669.jpg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;S&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DHAFI0A900BAPXK/000002_1619679669.jpg&amp;#34;&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="nt">&amp;#34;Weight&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;ISBN&amp;#34;&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="nt">&amp;#34;Qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Bonus&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isBig&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isSpec&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isCombine&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isDiy&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isRecyclable&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isCarrier&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isMedical&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isBigCart&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isSnapUp&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isDescAndIntroSync&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isFoodContents&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isHuge&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isEnergySubsidy&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isPrimeOnly&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isPreOrder24h&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isWarranty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isLegalStore&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isFresh&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isBidding&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isSet&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Volume&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Length&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">43&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Width&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">27&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Height&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">7&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="nt">&amp;#34;isETicket&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;ShipType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Consign&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isO2O&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>其中 &lt;code>Name&lt;/code> 欄位和 &lt;code>Nick&lt;/code> 欄位可能資料會很像，&lt;code>Name&lt;/code> 欄位在搜尋頁面會出現，代表商品的真正名稱，而 &lt;code>Nick&lt;/code> 欄位是在商品頁面出現，會加上一些修飾標語跟文字樣式(HTML 格式)，如下兩張圖片所示：&lt;/p>
&lt;p>&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/product_name.jpg" alt="Name 欄位代表資料" data-caption="Name 欄位代表資料" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='850px' 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:850px;height:;"/>
&lt;figcaption style="text-align: center;">
Name 欄位代表資料
&lt;/figcaption>
&lt;/figure>&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/product_nick.jpg" alt="Nick 欄位代表資料" data-caption="Nick 欄位代表資料" 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;">
Nick 欄位代表資料
&lt;/figcaption>
&lt;/figure>&lt;/p>
&lt;p>上次有說到，商品圖片分為&amp;quot;picS&amp;quot;與&amp;quot;picB&amp;quot;，查看後我猜測&amp;quot;picS&amp;quot;是在搜尋頁面的圖片，而&amp;quot;picB&amp;quot;是位於商品本身頁面的。&lt;/p>
&lt;p>前方再加上 &lt;code>https://d.ecimg.tw&lt;/code> 即圖片完整網址。&lt;br />
如 &lt;code>https://d.ecimg.tw/items/DHAFI0A900BAPXK/000001_1619679669.jpg&lt;/code>。&lt;/p>
&lt;p>而其他 &lt;code>is&lt;/code> 開頭的欄位代表此商品的其他特性(?)，或者說是 PChome 給它加上的屬性，例如是否有24小時到達、長寬高是多少(這邊應該是指包裝的，而不是商品本身的規格)、是否醫療相關、是否有食材相關標示&amp;hellip;&amp;hellip;等等，可能會用在顯示圖示或是否有其他請求去抓更多資料。&lt;/p>
&lt;h3 id="範例程式">範例程式&lt;/h3>
&lt;p>&amp;quot;商品基本資料&amp;quot;部分範例程式如下，完整程式碼在文章最後會附上。&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_product_info&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">product_id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">fields&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;取得商品基本資訊
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param product_id: 商品 ID
&lt;/span>&lt;span class="s2"> :param fields: 指定欄位
&lt;/span>&lt;span class="s2"> :return data: 商品基本資訊
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="c1"># fields=Seq,Id,Name,Nick,Store,PreOrdDate,SpeOrdDate,Price,Discount,Pic,Weight,ISBN,Qty,Bonus,isBig,isSpec,isCombine,isDiy,isRecyclable,isCarrier,isMedical,isBigCart,isSnapUp,isDescAndIntroSync,isFoodContents,isHuge,isEnergySubsidy,isPrimeOnly,isPreOrder24h,isWarranty,isLegalStore,isFresh,isBidding,isSet,Volume,isArrival24h,isETicket,ShipType,isO2O&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/{product_id}&amp;#39;&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">fields&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="bp">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;&amp;amp;fields={fields}&amp;#39;&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s1">&amp;#39;&amp;amp;_callback=jsonp_prod&amp;#39;&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">to_json&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># 去除前後 JS 語法字串&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">json&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">loads&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">15&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">48&lt;/span>&lt;span class="p">])&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">data&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="商品描述標語規格備註">商品描述(標語、規格、備註)&lt;/h2>
&lt;p>此章節所說的商品描述，包括位於商品圖片右方、標題下方的&amp;quot;標語&amp;quot;，還有商品頁面最下面的&amp;quot;配備&amp;quot;、&amp;quot;規格&amp;quot;、&amp;quot;備註&amp;quot;，甚至更下方的&amp;quot;售後服務&amp;quot;等等。&lt;/p>
&lt;p>&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/product_slogan.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;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/product_stmt.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;h3 id="請求路徑與參數-1">請求路徑與參數&lt;/h3>
&lt;div class="notices info" data-title="商品描述 請求">
請求網址：&lt;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/DHAFI0-A900BAPXK/desc&amp;amp;_callback=jsonp_prod&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;br/>
&lt;p>一樣可以透過 &lt;code>fields&lt;/code> 參數來指定你想要哪些欄位。&lt;/p>
&lt;h3 id="回傳資料-1">回傳資料&lt;/h3>
&lt;p>拿到回傳資料後，一樣要先將前後的 JS 語法去除，才可以正確地解析 JSON 格式。&lt;br />
不過這部分並不是每樣商品都會有每個欄位，像是假如商品它沒有&amp;quot;備註&amp;quot;，那&amp;quot;Remark&amp;quot;那個欄位的值就是空字串。&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;DHAFI0-A900BAPXK&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DHAFI0-A900BAPXK&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Stmt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;a name=\&amp;#34;規格說明\&amp;#34;&amp;gt;ASUS E410MA-0341PN4020 玫瑰金 詳細規格表&amp;lt;/a&amp;gt;\r\nLCD尺寸 (解析度)：14.0&amp;#39;//200nits//HD 1366x768 16:9//Anti-Glare//NTSC: 45%\r\n&amp;lt;font color=\&amp;#34;RED\&amp;#34;&amp;gt;CPU：Intel® Celeron® N4020 Processor 1.1 GHz (4M Cache, up to 2.8 GHz)&amp;lt;/font&amp;gt;\r\n記憶體：4GB DDR4 on board\r\n容量：128G EMMC\r\nWLAN無線網路：Wi-Fi 5(802.11ac)+Bluetooth 4.1 (Dual band) 1*1\r\nODD光碟機：無\r\n\r\n&amp;lt;HR&amp;gt;\r\n輸入輸出介面(I/O)\r\n\&amp;#34;1x 3.5mm Combo Audio Jack\r\n1x HDMI 1.4//1x USB 2.0 Type-A\r\n1x USB 3.2 Gen 1 Type-A\r\n1x USB 3.2 Gen 1 Type-C//Micro SD card reader\&amp;#34;\r\n\r\n&amp;lt;HR&amp;gt;\r\n尺寸：32.50 x 21.70 x 1.80 ~ 1.84 cm\r\n重量：1.3KG\r\n保固：二年全球保固/首年完美保固\r\n&amp;lt;font color=\&amp;#34;RED\&amp;#34;&amp;gt;作業系統：Windows 10 Home S (S模式)&amp;lt;/font&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Equip&amp;#34;&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="nt">&amp;#34;Remark&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;font color=\&amp;#34;RED\&amp;#34;&amp;gt;此為通用文案 實際規格以賣場為主&amp;lt;/font&amp;gt;\r\nS模式作業系統,使用者需於Windows市集做標準版作業系統轉換&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Liability&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;B&amp;gt;華碩筆記型電腦兩年保固&amp;lt;/B&amp;gt;&amp;lt;BR&amp;gt;台灣區自2002年2月1日起凡購買華碩筆記型電腦即可享有兩年產品保固服務。&amp;lt;BR&amp;gt;◎關於電池保固問題 &amp;lt;BR&amp;gt;電池為消耗性之產品，其保固期為壹年&amp;lt;BR&amp;gt;電池使用時間與充放電之次數成反比，因此使用時間縮短為正常現象，不屬於一年保固範圍&amp;lt;BR&amp;gt;&amp;lt;B&amp;gt;華碩筆記型電腦免費送修&amp;lt;/B&amp;gt;&amp;lt;BR&amp;gt;為提供本公司產品用戶有更完善的售後服務，我們特別推出了筆記型電腦本島免費快遞送修的服務，讓客戶有維修需求時能有效快速的透過物流收送，回廠進行維修流程，及完修後安全迅速的將機台送回，達成客戶滿意之依據。&amp;lt;BR&amp;gt;適用本公司出售之華碩筆記型電腦產品於保固內有維修需求時，給予回廠免費收送服務。&amp;lt;BR&amp;gt;◎只限台灣本島︰不限地點可收件。&amp;lt;BR&amp;gt;◎請撥客服電話：0800-093-456， 客服人員將為與您聯絡相關事宜。&amp;lt;BR&amp;gt;為了保障您的權益， 請立即在線上註冊您的商品。若您是第一次註冊，請先加入華碩一般會員，謝謝您!&amp;lt;BR&amp;gt;◆線上註冊→ &amp;lt;A href=\&amp;#34; http://support.asus.com.tw/repair/repair.aspx?no=99&amp;amp;SLanguage=zh-tw TARGET=\&amp;#34; _NEW?&amp;gt;&amp;lt;U&amp;gt;請前往原廠網站&amp;lt;/U&amp;gt;&amp;lt;/A&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Kword&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;E410MA^ASUS^筆電^小筆電^14吋^玫瑰金^虛擬數字鍵盤&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Brand&amp;#34;&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="nt">&amp;#34;Slogan&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;font color=\&amp;#34;RED\&amp;#34;&amp;gt; ★虛擬數字鍵 /180度螢幕轉軸設計\r\n★可自行升級M.2 SSD \r\n★最高電池續航力12小時&amp;lt;/font&amp;gt;\r\n\r\n&amp;lt;font size=2&amp;gt;&amp;lt;LI&amp;gt;&amp;lt;font color=red&amp;gt;處理器：Intel® Celeron® N4020 Processor 1.1 GHz&amp;lt;/font&amp;gt;\r\n&amp;lt;LI&amp;gt;記憶體：4GB DDR4 on board\r\n&amp;lt;LI&amp;gt;容量：EMMC 128GB\r\n&amp;lt;LI&amp;gt;LCD尺寸：14\&amp;#34;HD 霧面寬螢幕(LED)\r\n&amp;lt;LI&amp;gt;無線網路：802.11ac+Bluetooth 4.1 (Dual band) 1*1\r\n&amp;lt;LI&amp;gt;光碟機：無\r\n&amp;lt;LI&amp;gt;其他：HDMI、USB 3.2\r\n&amp;lt;LI&amp;gt;重量：1.3KG\r\n&amp;lt;font color=red&amp;gt;&amp;lt;LI&amp;gt;其他：內含 Microsoft365 個人版一年(市價2190元)&amp;lt;/font&amp;gt;\r\n&amp;lt;font color=red&amp;gt;&amp;lt;LI&amp;gt;作業系統：Windows 10 Home S (S模式) &amp;lt;/font&amp;gt;\r\n&amp;lt;LI&amp;gt;保固：二年全球保固/首年完美保固\r\n\r\n&amp;lt;a href=\&amp;#34; //a.ecimg.tw/img/projects/personal/v0/upload_file/US00010362/Office-introduce.jpg \&amp;#34;target=”_blank”&amp;gt;&amp;lt;img src=\&amp;#34;https://a.ecimg.tw/img/projects/personal/v0/upload_file/US00010362/office/2019-1.jpg \&amp;#34;alt=\&amp;#34;↑買NB加購Office 詳細請點\&amp;#34;&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;lt;a href=\&amp;#34;#規格說明\&amp;#34;&amp;gt;&amp;lt;img src=\&amp;#34;https://a.ecimg.tw/img/projects/personal/v0/upload_file/US00000208/add/icon.jpg\&amp;#34;&amp;gt;本商品詳細規格&amp;lt;/a&amp;gt;&amp;lt;/a&amp;gt;\r\n&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Author&amp;#34;&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="nt">&amp;#34;Transman&amp;#34;&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="nt">&amp;#34;Pubunit&amp;#34;&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="nt">&amp;#34;Pubdate&amp;#34;&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="nt">&amp;#34;Meta&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Brand&amp;#34;&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="nt">&amp;#34;BrandEng&amp;#34;&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="nt">&amp;#34;MarcoMatchName&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;span class="s2">&amp;#34;ASUS&amp;#34;&lt;/span>
&lt;span class="p">]&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="食物類商品缺少規格">食物類商品缺少規格？&lt;/h4>
&lt;p>但在抓取某些商品時會發現，像是底下這個食物類的標示，怎麼規格缺少了上方內容物、保存期限、廠商資訊之類的？！&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/food_stmt.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;p>請求網址：&lt;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/DBAEF6-A900AK8ZY/foodcontents&amp;amp;_callback=jsonp_fooddesc&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>&lt;/p>
&lt;p>可是還有個問題，我要怎麼資料它是不是食物呢？&lt;br />
這就回到「&lt;a href="#%e5%95%86%e5%93%81%e5%9f%ba%e6%9c%ac%e8%b3%87%e6%96%99" target="_blank" rel="noopener">
商品規格
&lt;/a>」章節中的&amp;quot;回傳資料&amp;quot;，回傳資料內就有一個&amp;quot;isFoodContents&amp;quot;欄位，就會寫到是否有食物含量，就可以知道是否還要再送出這個請求，來取得完整的資料。&lt;/p>
&lt;p>當然，除了食物類的商品，我猜應該還有許多其他商品會又另外的請求。&lt;/p>
&lt;h3 id="範例程式-1">範例程式&lt;/h3>
&lt;p>&amp;quot;商品描述(標語、規格、備註)&amp;quot;部分範例程式如下，完整程式碼在文章最後會附上。&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_product_description&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">product_id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">fields&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;取得商品描述(標語、規格、備註)
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param product_id: 商品 ID
&lt;/span>&lt;span class="s2"> :param fields: 指定欄位
&lt;/span>&lt;span class="s2"> :return data: 商品描述資料
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="c1"># &amp;amp;fields=Id,Stmt,Equip,Remark,Liability,Kword,Slogan,Author,Brand,Meta,Transman,Pubunit,Pubdate,Approve&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/{product_id}/desc&amp;#39;&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">fields&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="bp">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;&amp;amp;fields={fields}&amp;#39;&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s1">&amp;#39;&amp;amp;_callback=jsonp_prod&amp;#39;&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">to_json&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># 去除前後 JS 語法字串&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">json&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">loads&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">15&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">48&lt;/span>&lt;span class="p">])&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">data&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="商品詳細介紹">商品詳細介紹&lt;/h2>
&lt;p>這邊所說的商品詳細介紹，是指商品頁面中間的&amp;quot;本商品詳細介紹&amp;quot;，內容可能有文字、圖片或影片。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/product_intro.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;h3 id="請求路徑與參數-2">請求路徑與參數&lt;/h3>
&lt;div class="notices info" data-title="商品詳細介紹 請求">
請求網址：&lt;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/DHAFI0-A900BAPXK/intro&amp;amp;_callback=jsonp_intro&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;br/>
&lt;p>同樣也有 &lt;code>fields&lt;/code> 參數來指定你想要哪些欄位。&lt;/p>
&lt;h3 id="回傳資料-2">回傳資料&lt;/h3>
&lt;p>這邊範例我使用&lt;a href="https://24h.pchome.com.tw/prod/DEBB55-A900AUAHM" target="_blank" rel="noopener">
另個商品
&lt;/a>示範，因為它有包含文字、圖片跟影片。&lt;/p>
&lt;p>將回傳資料去除前後 JS 語法後，可以看出裡頭是以陣列(列表)的形式，每部分裡有 &lt;code>Sort&lt;/code> 標示著順序，資料有文字 &lt;code>Intro&lt;/code> 與圖片 &lt;code>Pic&lt;/code> 兩種，圖片路徑需加上 &lt;code>https://e.ecimg.tw&lt;/code> 才是完整的網址。&lt;br />
文字又是以 HTML 的格式紀錄，因此也可以崁入 YouTube 影片，像是底下範例中的第三部分。&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;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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;DEBB55-A900AUAHM&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DEBB55-A900AUAHM&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pstn&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;M&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Intro&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;p align=\&amp;#34;center\&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;span style=\&amp;#34;font-family: 標楷體; font-size: xx-large; color: #ff0000;\&amp;#34;&amp;gt;【PX 大通】 C52G 夜視高畫質GPS行車記錄器&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Sort&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;1&amp;#34;&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DEBB55-A900AUAHM&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DEBB55A900AUAHM/i010002_1600054259.jpg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pstn&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;M&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Intro&amp;#34;&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="nt">&amp;#34;Sort&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;2&amp;#34;&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DEBB55-A900AUAHM&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pstn&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;M&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Intro&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;center&amp;gt;&amp;lt;iframe src=\&amp;#34;https://www.youtube.com/embed/S28ZIbO9QJw\&amp;#34; frameborder=\&amp;#34;0\&amp;#34; width=\&amp;#34;1040\&amp;#34; height=\&amp;#34;765\&amp;#34;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;center&amp;gt;&amp;lt;iframe src=\&amp;#34;https://www.youtube.com/embed/BEw8bT3uPpw\&amp;#34; frameborder=\&amp;#34;0\&amp;#34; width=\&amp;#34;1040\&amp;#34; height=\&amp;#34;765\&amp;#34;&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/center&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Sort&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;3&amp;#34;&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DEBB55-A900AUAHM&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DEBB55A900AUAHM/i010015_1598511521.jpg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pstn&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;M&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Intro&amp;#34;&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="nt">&amp;#34;Sort&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;4&amp;#34;&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">]&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="範例程式-2">範例程式&lt;/h3>
&lt;p>&amp;quot;商品詳細介紹&amp;quot;部分範例程式如下，完整程式碼在文章最後會附上。&lt;br />
這邊我是讓它依照 &lt;code>Sort&lt;/code> 數字由小到大排順序，再用字串拼接起來。&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="k">def&lt;/span> &lt;span class="nf">get_product_introduction&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">product_id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">fields&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;取得商品詳細介紹(包含圖片、影片)
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param product_id: 商品 ID
&lt;/span>&lt;span class="s2"> :param fields: 指定欄位
&lt;/span>&lt;span class="s2"> :return introduction: 商品詳細介紹字串
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="c1"># &amp;amp;fields=Id,Pic,Pstn,Intro,Sort&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/{product_id}/intro&amp;#39;&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">fields&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="bp">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;&amp;amp;fields={fields}&amp;#39;&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s1">&amp;#39;&amp;amp;_callback=jsonp_intro&amp;#39;&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">to_json&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># 去除前後 JS 語法字串&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">json&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">loads&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">16&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">48&lt;/span>&lt;span class="p">])&lt;/span>
&lt;span class="n">introduction&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>
&lt;span class="c1"># 依照 Sort 欄位數字由小到大排順序&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">sorted&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">product_id&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">lambda&lt;/span> &lt;span class="n">k&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">k&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;Sort&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;span class="k">for&lt;/span> &lt;span class="n">intro&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">intro&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;Pic&amp;#39;&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;span class="n">introduction&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">introduction&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s1">&amp;#39;https://e.ecimg.tw&amp;#39;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">intro&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;Pic&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">introduction&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">introduction&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="s1">&amp;#39;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s1">&amp;#39;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">intro&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;Intro&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">introduction&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="加購商品">加購商品&lt;/h2>
&lt;p>在商品的頁面，有時會出現&amp;quot;加購商品&amp;quot;這個區塊，但不是每個商品都有。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/add_buy.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;h3 id="請求路徑與參數-3">請求路徑與參數&lt;/h3>
&lt;div class="notices info" data-title="加購商品 請求">
請求網址：&lt;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/DHAFI0-A900BAPXK/add&amp;amp;_callback=jsonp_add&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;br/>
&lt;p>這邊我發現如果不加 &lt;code>fields&lt;/code> 參數，預設回傳資料內會缺少 &lt;code>Price&lt;/code>、&lt;code>isWarranty&lt;/code> 欄位。&lt;/p>
&lt;p>原先網站給的 &lt;code>fields=Seq,Id,Name,Spec,Group,Price,Pic,Qty,isWarranty&lt;/code>。&lt;/p>
&lt;h3 id="回傳資料-3">回傳資料&lt;/h3>
&lt;p>一樣先要將回傳資料去除前後的 JS 語法，如果多項贈品，那這邊也會顯示多個，字典的 key(鍵) 代表此商品的 ID。&lt;br />
(此範例商品應該會有三個贈品，但為了讓文章版面不要太長，我有將其刪減)&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;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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;DHAA2D-A900AQGVA&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Seq&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">24988216&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DHAA2D-A900AQGVA-000&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;【加購現省】中文 Microsoft 365 家用版一年盒裝&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Spec&amp;#34;&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="nt">&amp;#34;Group&amp;#34;&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="nt">&amp;#34;Price&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;M&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">4190&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;P&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2790&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;B&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DHAA2DA900AQGVA/000001_1593137612.jpg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;S&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DHAA2DA900AQGVA/000002_1593137612.jpg&amp;#34;&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="nt">&amp;#34;Qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">20&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isWarranty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">],&lt;/span>
&lt;span class="nt">&amp;#34;DSAEAW-A900B8SRF&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Seq&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">26572469&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DSAEAW-A900B8SRF-000&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Microsoft 365 個人版 15個月訂閱-ESD金鑰卡(不能退貨)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Spec&amp;#34;&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="nt">&amp;#34;Group&amp;#34;&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="nt">&amp;#34;Price&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;M&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;P&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">2190&lt;/span>&lt;span class="p">},&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;B&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DSAEAWA900B8SRF/000001_1618314609.jpg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;S&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DSAEAWA900B8SRF/000002_1618314609.jpg&amp;#34;&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="nt">&amp;#34;Qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">20&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isWarranty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">]&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="加購商品介紹">加購商品介紹&lt;/h4>
&lt;p>順帶一提，如果你想取得加購商品的簡介(下圖綠色方框)的話，需要透過另外一個請求。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider02/add_buy_slogan.jpg" 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;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/desc&amp;amp;id=DHAA2D-A900AQGVA,DSAEAW-A900B8SRF&amp;amp;_callback=jsonp_adddesc&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>&lt;/p>
&lt;p>&lt;code>id&lt;/code> 請改成贈品的 ID，一次帶入多個商品一樣將商品 ID 以 &lt;code>,&lt;/code> 連接即可。&lt;/p>
&lt;br/>
&lt;p>而且我發現他請求網址跟「&lt;a href="#%e5%95%86%e5%93%81%e6%8f%8f%e8%bf%b0%28%e6%a8%99%e8%aa%9e%e3%80%81%e8%a6%8f%e6%a0%bc%e3%80%81%e5%82%99%e8%a8%bb%29" target="_blank" rel="noopener">
商品描述(標語、規格、備註)
&lt;/a>」的非常像，取得的回傳資料也是一模一樣，所以我猜兩這是通用的。&lt;br />
&amp;quot;商品描述&amp;quot;請求網址：&lt;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/DHAFI0-A900BAPXK/desc&lt;/code>&lt;/p>
&lt;h3 id="範例程式-3">範例程式&lt;/h3>
&lt;p>&amp;quot;加購商品&amp;quot;部分範例程式如下，完整程式碼在文章最後會附上。&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_add_buy_product&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">product_id&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">fields&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">None&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;取得加購商品
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param product_id: 商品 ID
&lt;/span>&lt;span class="s2"> :param fields: 指定欄位
&lt;/span>&lt;span class="s2"> :return data: 加購商品
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="c1"># &amp;amp;fields=Seq,Id,Name,Spec,Group,Price,Pic,Qty,isWarranty&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/prodapi/v2/prod/{product_id}/add&amp;#39;&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">fields&lt;/span> &lt;span class="ow">is&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="bp">None&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;&amp;amp;fields={fields}&amp;#39;&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s1">&amp;#39;&amp;amp;_callback=jsonp_add&amp;#39;&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">to_json&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># 去除前後 JS 語法字串&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">json&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">loads&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">14&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">48&lt;/span>&lt;span class="p">])&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">data&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br/>
&lt;!--adsense-->
&lt;h2 id="完整程式碼">完整程式碼&lt;/h2>
&lt;p>附上完整程式碼：&lt;a href="https://blog.jiatool.com/code/pchome_spider02.py" target="_blank" rel="noopener">
pchome_spider02.py
&lt;/a>&lt;br />
(對超連結右鍵 &amp;gt; 另存連結為)&lt;/p>
&lt;h2 id="延伸練習">延伸練習&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>有些商品的頁面會有「贈品」可以選取，試試看，你有辦法抓取贈品的資訊嗎？&lt;br />
範例商品：&lt;a href="https://24h.pchome.com.tw/prod/DCAN8J-A900AW0AQ">https://24h.pchome.com.tw/prod/DCAN8J-A900AW0AQ&lt;/a>&lt;br />
(小提示：可以使用贈品的名稱或 ID 在 開發人員工具 &amp;gt; Network 中搜尋 Ctrl + f)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>在某些商品頁面會發現有「買此商品的人也買了&amp;hellip;」區塊，這部分的資訊我們也可以取得嗎？&lt;br />
範例商品：&lt;a href="https://24h.pchome.com.tw/prod/DCAN8J-A9009OS4V">https://24h.pchome.com.tw/prod/DCAN8J-A9009OS4V&lt;/a>&lt;br />
(小提示：這部分會先取得推薦的名單，再透過「取得商品資訊」章節的請求來取得詳細資訊)&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>在尋找 PChome 的請求網址、邏輯時，我還發現一個&amp;quot;prodjsv3-&amp;quot;開頭的 JavaScript 檔案，裡面可以找出許多不同請求的端倪，你們可以從中尋找還有哪些請求。&lt;br />
(迷之音：請求有夠多，全部要找要寫出來太花時間，叫網友自己去找好了，嗯~還可以順便說是給他們練習，不錯XD)&lt;/p>
&lt;p>之後還會陸續寫一些網站的&amp;quot;網路爬蟲實例&amp;quot;，如果此篇文章有幫助到你，歡迎在底下留言、留言，還有追蹤 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;blockquote>
&lt;p>在這個世界上，沒有人能使你倒下。如果你自己的信念還站立的話。&lt;br />
In this world, no one can make you fall. If your faith is still standing.&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/pchome_spider02.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/pchome_spider02_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>Python</category><category>PChome</category><category>網路爬蟲</category><category>Python網路爬蟲實例</category></item><item><title>[Python爬蟲實例] PChome 線上購物 (上篇)</title><link>https://blog.jiatool.com/posts/pchome_spider01/</link><pubDate>Sun, 25 Apr 2021 20:45:00 +0800</pubDate><author>jia@jiatool.com (Jia)</author><atom:modified>Sun, 25 Apr 2021 20:45:00 +0800</atom:modified><guid>https://blog.jiatool.com/posts/pchome_spider01/</guid><description>前言 在之前的 Python 網路爬蟲實例講解過蝦皮購物 ，而今日要來講解同樣在台灣非常多人使用的「PChome 線上購物 」。 實際操作後發現，PChome 在一個</description><content:encoded>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>在之前的 Python 網路爬蟲實例講解過&lt;a href="https://blog.jiatool.com/posts/shopee_spider/" target="_blank" rel="noopener">
蝦皮購物
&lt;/a>，而今日要來講解同樣在台灣非常多人使用的「&lt;a href="https://shopping.pchome.com.tw/" target="_blank" rel="noopener">
PChome 線上購物
&lt;/a>」。&lt;/p>
&lt;p>實際操作後發現，PChome 在一個頁面中針對不同部分的資料有送出不同的請求，整理成一篇會太長，因此我將分為上下篇來介紹。&lt;br />
上篇也就是你正在看的本篇，主要講解在 &lt;a href="https://ecshweb.pchome.com.tw/search/v3.3/?q=%E6%BB%91%E9%BC%A0" target="_blank" rel="noopener">
PChome 搜尋頁面
&lt;/a>的請求，而下篇是說明&lt;a href="https://24h.pchome.com.tw/prod/DCAN8J-A9008YONC" target="_blank" rel="noopener">
商品頁面
&lt;/a>的請求。&lt;/p>
&lt;ul>
&lt;li>PChome 線上購物 網路爬蟲實例 (上篇) =&amp;gt; 本篇&lt;/li>
&lt;li>&lt;a href="https://blog.jiatool.com/posts/pchome_spider02" target="_blank" rel="noopener">
PChome 線上購物 網路爬蟲實例 (下篇)
&lt;/a>&lt;/li>
&lt;/ul>
&lt;br/>
&lt;p>* 「&lt;a href="https://shopping.pchome.com.tw/" target="_blank" rel="noopener">
PChome 線上購物
&lt;/a>」與「&lt;a href="https://24h.pchome.com.tw/" target="_blank" rel="noopener">
PChome 24h購物
&lt;/a>」兩者的商品搜尋都是導到同樣的頁面，因此實際上是一樣的。&lt;/p>
&lt;p>備註：此文僅教育學習，切勿用作商業用途，個人實作皆屬個人行為，本作者不負任何法律責任&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/online_shopping.jpg" alt="線上購物 (來源：Pexels)" data-caption="線上購物 (來源：Pexels)" 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;">
線上購物 (來源：Pexels)
&lt;/figcaption>
&lt;/figure>
&lt;h2 id="套件">套件&lt;/h2>
&lt;p>此次 Python 爬蟲主要使用到的套件：&lt;/p>
&lt;ul>
&lt;li>Requests [&lt;a href="https://requests.readthedocs.io/en/master/" target="_blank" rel="noopener">
Doc
&lt;/a>] [&lt;a href="https://github.com/psf/requests" target="_blank" rel="noopener">
GitHub
&lt;/a>]&lt;/li>
&lt;/ul>
&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Shell" data-lang="Shell">pip install requests
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br/>
&lt;!--adsense-->
&lt;h2 id="搜尋商品">搜尋商品&lt;/h2>
&lt;p>進入 &lt;a href="https://shopping.pchome.com.tw/" target="_blank" rel="noopener">
PChome 線上購物
&lt;/a> 網頁，先開啟瀏覽器的 &lt;strong>開發人員工具&lt;/strong> (F12 或 Ctrl + Shift + i)，回到網頁左上角輸入想要搜尋的關鍵字，點擊&amp;quot;找商品&amp;quot;。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/search_block.jpg" 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;p>畫面跳轉到搜尋結果頁面後，開發人員工具切換到&amp;quot;Network&amp;quot; &amp;gt; &amp;quot;XHR&amp;quot;，會發現其中一個請求包含著搜尋結果，而 &lt;code>prods&lt;/code> 欄位內分別列出了每一項商品。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/xhr_results.png" alt="&amp;#34;Network&amp;#34; &amp;gt; &amp;#34;XHR&amp;#34; 頁面" data-caption="&amp;#34;Network&amp;#34; &amp;gt; &amp;#34;XHR&amp;#34; 頁面" 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;">
&amp;#34;Network&amp;#34; &amp;gt; &amp;#34;XHR&amp;#34; 頁面
&lt;/figcaption>
&lt;/figure>
&lt;p>切換到&amp;quot;Headers&amp;quot;頁面可以查看請求的網址與方法。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/headers.png" alt="&amp;#34;Headers&amp;#34; 頁面" data-caption="&amp;#34;Headers&amp;#34; 頁面" 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;">
&amp;#34;Headers&amp;#34; 頁面
&lt;/figcaption>
&lt;/figure>
&lt;p>我們可以開一個新分頁，將此請求網址貼上前往，查看回傳的資料是否正確、長什麼樣子。&lt;/p>
&lt;h3 id="請求路徑與參數">請求路徑與參數&lt;/h3>
&lt;div class="notices info" data-title="搜尋商品 請求">
請求網址：&lt;code>https://ecshweb.pchome.com.tw/search/v3.3/all/results?q=%E9%8D%B5%E7%9B%A4&amp;amp;page=1&amp;amp;sort=sale/dc&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;br/>
&lt;p>商品搜尋頁面有多項篩選條件，從下圖可以看到有關鍵字、商店類別、排序、取貨方式、價格範圍、依館別顯示等等。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/filter.jpg" 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;/p>
&lt;p>&lt;strong>關鍵字&lt;/strong>&lt;br />
放在 &lt;code>q&lt;/code> 參數內。&lt;/p>
&lt;p>&lt;strong>商店類別&lt;/strong>&lt;br />
放在網址路徑內，可參考下方程式。&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>&lt;code>all&lt;/code>&lt;/td>
&lt;td>全部&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>24h&lt;/code>&lt;/td>
&lt;td>24h購物&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>24b&lt;/code>&lt;/td>
&lt;td>24h書店&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>vdr&lt;/code>&lt;/td>
&lt;td>廠商出貨&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>tour&lt;/code>&lt;/td>
&lt;td>PChome旅遊&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>排序&lt;/strong>&lt;br />
&lt;code>sort&lt;/code> 參數。&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>&lt;code>sale/dc&lt;/code>&lt;/td>
&lt;td>有貨優先&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>rnk/dc&lt;/code>&lt;/td>
&lt;td>精準度&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>prc/dc&lt;/code>&lt;/td>
&lt;td>價錢由高至低&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>prc/ac&lt;/code>&lt;/td>
&lt;td>價錢由低至高&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>new/dc&lt;/code>&lt;/td>
&lt;td>新上市&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>取貨方式&lt;/strong>&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>&lt;code>cvs=all&lt;/code>&lt;/td>
&lt;td>超商取貨&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>ipost=Y&lt;/code>&lt;/td>
&lt;td>i 郵箱取貨&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>價格範圍&lt;/strong>&lt;br />
&lt;code>price&lt;/code> 參數。&lt;br />
我測試的結果是兩者都要，也就是要包含最大金額與最小金額的限制。&lt;br />
&lt;code>{price_max}-{price_min}&lt;/code>&lt;/p>
&lt;p>&lt;strong>頁數&lt;/strong>&lt;br />
&lt;code>page&lt;/code> 參數。&lt;br />
回傳資料預設是 20 筆商品，如果要繼續往後抓取，需要帶入頁數參數。&lt;/p>
&lt;h3 id="回傳資料">回傳資料&lt;/h3>
&lt;p>它以 JSON 格式回傳，商品會在 prods 欄位內，每一個商品資料如下：&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DGCD1E-A900AIK2Q&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;cateId&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DGCA3Q&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;picS&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DGCD1EA900AIK2Q/000002_1582170821.jpg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;picB&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;/items/DGCD1EA900AIK2Q/000001_1617156434.jpg&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;SanDisk USB Type-C™ 雙用隨身碟128GB (公司貨)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;describe&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;具備usb type-c與type-a旋轉式2合1金屬隨身碟。...&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;price&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">629&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;originPrice&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">629&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;author&amp;#34;&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="nt">&amp;#34;brand&amp;#34;&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="nt">&amp;#34;publishDate&amp;#34;&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="nt">&amp;#34;sellerId&amp;#34;&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="nt">&amp;#34;isPChome&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isNC17&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;couponActid&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[],&lt;/span>
&lt;span class="nt">&amp;#34;BU&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ec&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;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>Id&lt;/td>
&lt;td>商品ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>cateId&lt;/td>
&lt;td>分類ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>picS&lt;/td>
&lt;td>商品圖片(縮圖)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>picB&lt;/td>
&lt;td>商品圖片(主圖)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>name&lt;/td>
&lt;td>商品名稱&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>describe&lt;/td>
&lt;td>商品描述&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>price&lt;/td>
&lt;td>商品價格&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>originPrice&lt;/td>
&lt;td>商品原始價格&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>author&lt;/td>
&lt;td>(書籍)作者&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>brand&lt;/td>
&lt;td>(書籍)出版社&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>publishDate&lt;/td>
&lt;td>(書籍)出版日期&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>isNC17&lt;/td>
&lt;td>是否限制級&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>商品圖片分為&amp;quot;picS&amp;quot;與&amp;quot;picB&amp;quot;，查看後我猜測&amp;quot;picS&amp;quot;是在搜尋頁面的圖片，而&amp;quot;picB&amp;quot;是位於商品本身頁面的。&lt;/p>
&lt;p>前方再加上 &lt;code>https://d.ecimg.tw&lt;/code> 即圖片完整網址。&lt;br />
如 &lt;code>https://d.ecimg.tw/items/DGCD1EA900AIK2Q/000002_1582170821.jpg&lt;/code>。&lt;/p>
&lt;p>&amp;quot;商品網址&amp;quot;是商品ID前方加上 &lt;code>https://24h.pchome.com.tw/prod/&lt;/code>，以上方為例就是：&lt;br />
&lt;code>https://24h.pchome.com.tw/prod/DGCD1E-A900AIK2Q&lt;/code>&lt;/p>
&lt;h3 id="範例程式">範例程式&lt;/h3>
&lt;p>&amp;quot;搜尋商品&amp;quot;部分範例程式如下，完整程式碼在文章最後會附上。&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;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;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&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="k">def&lt;/span> &lt;span class="nf">search_products&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">keyword&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">max_page&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shop&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;全部&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sort&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;有貨優先&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">price_min&lt;/span>&lt;span class="o">=-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">price_max&lt;/span>&lt;span class="o">=-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">is_store_pickup&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">is_ipost_pickup&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">False&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;搜尋商品
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param keyword: 搜尋關鍵字
&lt;/span>&lt;span class="s2"> :param max_page: 抓取最大頁數
&lt;/span>&lt;span class="s2"> :param shop: 賣場類別 (全部、24h購物、24h書店、廠商出貨、PChome旅遊)
&lt;/span>&lt;span class="s2"> :param sort: 商品排序 (有貨優先、精準度、價錢由高至低、價錢由低至高、新上市)
&lt;/span>&lt;span class="s2"> :param price_min: 篩選&amp;#34;最低價&amp;#34; (需與 price_max 同時用)
&lt;/span>&lt;span class="s2"> :param price_max: 篩選&amp;#34;最高價&amp;#34; (需與 price_min 同時用)
&lt;/span>&lt;span class="s2"> :param is_store_pickup: 篩選&amp;#34;超商取貨&amp;#34;
&lt;/span>&lt;span class="s2"> :param is_ipost_pickup: 篩選&amp;#34;i 郵箱取貨&amp;#34;
&lt;/span>&lt;span class="s2"> :return products: 搜尋結果商品
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="n">products&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;span class="n">all_shop&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="s1">&amp;#39;全部&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;all&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;24h購物&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;24h&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;24h書店&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;24b&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;廠商出貨&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;vdr&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;PChome旅遊&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;tour&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="n">all_sort&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="s1">&amp;#39;有貨優先&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;sale/dc&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;精準度&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;rnk/dc&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;價錢由高至低&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;prc/dc&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;價錢由低至高&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;prc/ac&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;新上市&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;new/dc&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecshweb.pchome.com.tw/search/v3.3/{all_shop[shop]}/results&amp;#39;&lt;/span>
&lt;span class="n">params&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="s1">&amp;#39;q&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">keyword&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="s1">&amp;#39;sort&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">all_sort&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">sort&lt;/span>&lt;span class="p">],&lt;/span>
&lt;span class="s1">&amp;#39;page&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">price_min&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">price_max&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">params&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;price&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;{price_min}-{price_max}&amp;#39;&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">is_store_pickup&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">params&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;cvs&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;all&amp;#39;&lt;/span> &lt;span class="c1"># 超商取貨&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">is_ipost_pickup&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">params&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;ipost&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;Y&amp;#39;&lt;/span> &lt;span class="c1"># i 郵箱取貨&lt;/span>
&lt;span class="k">while&lt;/span> &lt;span class="n">params&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;page&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">max_page&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">params&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;page&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">params&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="k">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;請求發生錯誤：{url}{params}&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">break&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;totalRows&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="k">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;找不到有關的產品&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">break&lt;/span>
&lt;span class="n">products&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">extend&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;prods&amp;#39;&lt;/span>&lt;span class="p">])&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;totalPage&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">params&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;page&amp;#39;&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;span class="k">break&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">products&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="商品販售狀態">商品販售狀態&lt;/h2>
&lt;p>如果你還想要&amp;quot;商品販售狀態&amp;rdquo;，會發現此欄位不包含在上方&amp;quot;搜尋商品&amp;quot;請求的回傳資料中，我們要再從其他的地方找找。&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/sale_status.jpg" alt="商品狀態按鈕" data-caption="商品狀態按鈕" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='200px' 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:200px;height:;"/>
&lt;figcaption style="text-align: center;">
商品狀態按鈕
&lt;/figcaption>
&lt;/figure>&lt;/p>
&lt;p>試試用&amp;quot;立即訂購&amp;quot;之類的關鍵字在開發人員工具中搜尋，在某個搜尋到的 JavaScript 檔案發現到&amp;quot;orderNow&amp;quot;、&amp;quot;soldOut&amp;quot;等字眼。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/searchplus_js.jpg" alt="searchplus JS" data-caption="searchplus JS" 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;">
searchplus JS
&lt;/figcaption>
&lt;/figure>
&lt;p>再進一步以&amp;quot;soldOut&amp;quot;搜尋，在另外一個 JavaScript 檔案發現到此資訊。&lt;br />
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/button_js.png" alt="button JS" data-caption="button 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;">
button JS
&lt;/figcaption>
&lt;/figure>&lt;/p>
&lt;p>雖然它是 JS 檔，但你只要把網址後方的 &lt;code>&amp;amp;_callback=jsonpcb_button&lt;/code> 刪掉，它就會以 JSON 格式回傳了。&lt;/p>
&lt;h3 id="請求路徑與參數-1">請求路徑與參數&lt;/h3>
&lt;p>請求網址路徑很大一串，經過我刪減、測試，其實最少只需要如下：&lt;/p>
&lt;div class="notices info" data-title="商品販售狀態 請求">
請求網址：&lt;code>https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/button&amp;amp;id=DRAD1K-A900AWN96&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;p>如果需要，可以一次帶入多個商品一次請求，只需將商品 ID 以 &lt;code>,&lt;/code> 連接，例如：&lt;br />
&lt;code>https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/button&amp;amp;id=DRAD1K-A900AWN96,DSAA6I-A900B3488&lt;/code>&lt;br />
就不需要分多次請求了。&lt;/p>
&lt;p>也可以透過 &lt;code>fields&lt;/code> 參數來指定你想要那些欄位，例如我只要商品ID、商品數量、商品狀態：&lt;br />
&lt;code>https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/button&amp;amp;id=DRAD1K-A900AWN96&amp;amp;fields=Id,Qty,ButtonType&lt;/code>&lt;/p>
&lt;h3 id="回傳資料-1">回傳資料&lt;/h3>
&lt;p>它一樣以 JSON 格式回傳：&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">[{&lt;/span>
&lt;span class="nt">&amp;#34;Seq&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">25977002&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DCAD6E-A900B1YM4-000&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Store&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DCAD6E&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Price&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;M&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;P&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">550&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nt">&amp;#34;Prime&amp;#34;&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="nt">&amp;#34;Qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;ButtonType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ForSale&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;SaleStatus&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Group&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DCAD6E-A900B1YM4&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isPrimeOnly&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;SpecialQty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;span class="p">}]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>從 &lt;code>ButtonType&lt;/code> 的值可以看出此商品是否還有貨，像是 ForSale 代表此商品有出售、可以購買；SoldOut 代表此商品已售完等等。&lt;/p>
&lt;h3 id="範例程式-1">範例程式&lt;/h3>
&lt;p>&amp;quot;商品販售狀態&amp;quot;部分範例程式如下，完整程式碼在文章最後會附上。&lt;/p>
&lt;p>這邊我設計成傳入單個商品的字串(String)，或多個商品的字串陣列(List)都可以，比較彈性。&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_products_sale_status&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">products_id&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;取得商品販售狀態
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param products_id: 商品 ID
&lt;/span>&lt;span class="s2"> :return data: 商品販售狀態資料
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">products_id&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="nb">list&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">products_id&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;,&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">products_id&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/button&amp;amp;id={products_id}&amp;#39;&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">data&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="k">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;請求發生錯誤：{url}&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">data&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="商品規格種類">商品規格種類&lt;/h2>
&lt;p>除了&amp;quot;商品狀態&amp;quot;不在原本的回傳資料中，還有某些商品有不同的規格，這部分也是要另外抓。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/product_specification.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;p>一樣透過搜尋，找到了一個請求的路徑。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/spec_url.png" alt="查找&amp;#34;商品規格種類&amp;#34;路徑" data-caption="查找&amp;#34;商品規格種類&amp;#34;路徑" 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;#34;商品規格種類&amp;#34;路徑
&lt;/figcaption>
&lt;/figure>
&lt;h3 id="請求路徑與參數-2">請求路徑與參數&lt;/h3>
&lt;div class="notices info" data-title="商品規格種類 請求">
請求網址：&lt;code>https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/spec&amp;amp;id=DYARL9-A900AZTJT&amp;amp;_callback=jsonpcb_spec&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;p>&lt;code>id&lt;/code> 就是給你要找的商品 ID。&lt;br />
跟上一節&amp;quot;商品販售狀態&amp;quot;一樣，如需一次請求多個商品，只需將商品 ID 以 &lt;code>,&lt;/code> 連接，例如：&lt;br />
&lt;code>https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/spec&amp;amp;id=DYARL9-A900AZTJT,DYARLA-A900AZTJJ&amp;amp;_callback=jsonpcb_spec&lt;/code>&lt;/p>
&lt;h3 id="回傳資料-2">回傳資料&lt;/h3>
&lt;p>這邊有個小小麻煩的點，如果像&amp;quot;商品販售狀態&amp;quot;一樣把後方 &lt;code>_callback=json...&lt;/code> 去除，反而它就不回傳資料了，但加了這樣會使得回傳資料前後會有一段 JS 語法，所以我們要先將其字串移除後，才是正確的 JSON 格式。&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JavaScript" data-lang="JavaScript">&lt;span class="k">try&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nx">jsonpcb_spec&lt;/span>&lt;span class="p">({&lt;/span>
&lt;span class="s2">&amp;#34;DYARIO-A900B0P77&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">[{&lt;/span>
&lt;span class="s2">&amp;#34;Seq&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="mi">25866719&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="p">...(&lt;/span>&lt;span class="nx">省略&lt;/span>&lt;span class="p">)...&lt;/span>
&lt;span class="s2">&amp;#34;PreOrdDate&amp;#34;&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="p">});&lt;/span>
&lt;span class="p">}&lt;/span> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">e&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">console&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">e&lt;/span>&lt;span class="p">);&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>* 題外話：我原本是想用 &lt;code>str.lstrip()&lt;/code>、&lt;code>str.rstrip()&lt;/code> 去移除，但遇到了點問題，所以後來改用字串切割的方式。&lt;/p>
&lt;br/>
&lt;p>去除前後 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;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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;DYARL9-A900AZTJT&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Seq&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">25787942&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DYARL9-A900AZTJT-001&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;防摔！四角加厚空壓殼 iPhone 12 / i12 手機殼 保護殼 手機套 軟殼 保護套 防撞&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Spec&amp;#34;&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="nt">&amp;#34;Group&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DYARL9-A900AZTJT&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;B&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;S&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">null&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="nt">&amp;#34;Qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isPreOrder24h&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;PreOrdDate&amp;#34;&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="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Seq&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">25787944&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DYARL9-A900AZTJT-003&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;防摔！四角加厚空壓殼 iPhone 12 / i12 手機殼 保護殼 手機套 軟殼 保護套 防撞&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Spec&amp;#34;&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="nt">&amp;#34;Group&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DYARL9-A900AZTJT&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Pic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;B&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;S&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">null&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="nt">&amp;#34;Qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isPreOrder24h&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;PreOrdDate&amp;#34;&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="p">]&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="範例程式-2">範例程式&lt;/h3>
&lt;p>&amp;quot;商品規格種類&amp;quot;部分範例程式如下，完整程式碼同樣在文章最後會附上。&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_products_specification&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">products_id&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;取得商品規格種類
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param products_id: 商品 ID
&lt;/span>&lt;span class="s2"> :return data: 商品規格種類
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">products_id&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="nb">list&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">products_id&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;,&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">products_id&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/spec&amp;amp;id={products_id}&amp;amp;_callback=jsonpcb_spec&amp;#39;&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">to_json&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="bp">False&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="c1"># 去除前後 JS 語法字串&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">json&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">loads&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">17&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">48&lt;/span>&lt;span class="p">])&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">data&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="搜尋商品分類">搜尋商品分類&lt;/h2>
&lt;p>至於位於搜尋頁面的左側，這一大串的&amp;quot;分類&amp;quot;該從何而來？&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/search_category.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;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/categories_url.png" alt="&amp;#34;搜尋商品分類&amp;#34;路徑" data-caption="&amp;#34;搜尋商品分類&amp;#34;路徑" 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;">
&amp;#34;搜尋商品分類&amp;#34;路徑
&lt;/figcaption>
&lt;/figure>
&lt;h3 id="請求路徑與參數-3">請求路徑與參數&lt;/h3>
&lt;div class="notices info" data-title="搜尋商品分類 請求">
請求網址：&lt;code>https://ecshweb.pchome.com.tw/search/v3.3/all/categories?q=鍵盤&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;p>&lt;code>q&lt;/code> 後方就是接你是用什麼關鍵字搜尋商品的。&lt;/p>
&lt;h3 id="回傳資料-3">回傳資料&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;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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">[&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;D&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;24h購物&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">12552&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;nodes&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DSAU&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DIY電腦&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1418&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;nodes&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DSAUF4&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">189&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DSAUF5&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">176&lt;/span>
&lt;span class="p">},&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DSAUFA&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;qty&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">154&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">]&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">]&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>它是這樣由最大項分類一層一層下來，每一層會有 &lt;code>Id&lt;/code>、&lt;code>name&lt;/code>、&lt;code>qty&lt;/code> 等參數，代表此分類的&amp;quot;ID&amp;quot;、&amp;quot;名稱&amp;quot;、&amp;quot;商品數量&amp;quot;。&lt;/p>
&lt;p>但你可能會發現，怎麼到了最下面一層(第三層)卻沒了&amp;quot;名稱(&lt;code>name&lt;/code>)&amp;quot;？！&lt;br />
該不會&amp;hellip;對😅沒錯，它還要再透過另一個請求去取得，這部分會在下一章節介紹。&lt;/p>
&lt;h3 id="範例程式-3">範例程式&lt;/h3>
&lt;p>&amp;quot;搜尋商品分類&amp;quot;部分範例程式如下，很簡單，也沒什麼參數，完整程式碼同樣在文章最後會附上。&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-Python" data-lang="Python">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_search_category&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">keyword&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;取得搜尋商品分類(網頁左側)
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param keyword: 搜尋關鍵字
&lt;/span>&lt;span class="s2"> :return data: 分類資料
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecshweb.pchome.com.tw/search/v3.3/all/categories?q={keyword}&amp;#39;&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">data&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>至於此分類該如何用來當搜尋商品的篩選條件，這部分就留給你們親自嘗試了，不會很複雜 (真的！)。&lt;/p>
&lt;h2 id="搜尋商品子分類名稱">搜尋商品子分類名稱&lt;/h2>
&lt;p>從上一章節，我們發現到商品分類的請求資料中，沒有包含最下面一層(第三層)的&amp;quot;name(名稱)&amp;quot;欄位。&lt;/p>
&lt;figure >
&lt;img data-src="https://res.cloudinary.com/jiablog/pchome_spider01/categories_name.jpg" alt="搜尋商品子分類名稱" data-caption="搜尋商品子分類名稱" src="data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='200px' 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:200px;height:;"/>
&lt;figcaption style="text-align: center;">
搜尋商品子分類名稱
&lt;/figcaption>
&lt;/figure>
&lt;h3 id="請求路徑與參數-4">請求路徑與參數&lt;/h3>
&lt;div class="notices info" data-title="搜尋商品子分類名稱 請求">
請求網址：&lt;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/cateapi/v1.5/store&amp;amp;id=DSAUF4&lt;/code>&lt;br />
請求方法：&lt;code>GET&lt;/code>
&lt;/div>
&lt;p>&lt;code>id&lt;/code> 後方接在上一章節&amp;quot;搜尋商品分類&amp;quot;中回傳的子分類。&lt;br />
一樣，如需一次請求多個商品，只需將子分類 ID 以 &lt;code>,&lt;/code> 連接，例如：&lt;br />
&lt;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/cateapi/v1.5/store&amp;amp;id=DSAUF4,DSAUF5,DSAUFA&amp;amp;fields=Id,Name&lt;/code>&lt;/p>
&lt;p>此請求路徑還有個 &lt;code>fields&lt;/code> 參數，可指定回傳欄位，例如我只要&amp;quot;ID&amp;quot;跟&amp;quot;名稱&amp;quot;：&lt;br />
&lt;code>https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/cateapi/v1.5/store&amp;amp;id=DSAU&amp;amp;fields=Id,Name&lt;/code>&lt;/p>
&lt;h3 id="回傳資料-4">回傳資料&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-JSON" data-lang="JSON">&lt;span class="p">[&lt;/span>
&lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;DSAUF4&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;→10代Core i7八核&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;OriginId&amp;#34;&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="nt">&amp;#34;Sort&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;is24h&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isVip&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isPick&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;isNC17&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>
&lt;span class="nt">&amp;#34;Extra&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;span class="nt">&amp;#34;Amount&amp;#34;&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="nt">&amp;#34;Fee&amp;#34;&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="nt">&amp;#34;Intro&amp;#34;&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="nt">&amp;#34;isNFC&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>
&lt;span class="p">}&lt;/span>
&lt;span class="p">]&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="範例程式-4">範例程式&lt;/h3>
&lt;p>&amp;quot;搜尋商品子分類名稱&amp;quot;部分範例程式如下，完整程式碼同樣在文章最後會附上。&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre class="chroma">&lt;code class="language-Python" data-lang="Python">&lt;span class="k">def&lt;/span> &lt;span class="nf">get_search_categories_name&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="bp">self&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">categories_id&lt;/span>&lt;span class="p">):&lt;/span>
&lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;取得商品子分類的名稱(網頁左側)
&lt;/span>&lt;span class="s2">
&lt;/span>&lt;span class="s2"> :param categories_id: 分類 ID
&lt;/span>&lt;span class="s2"> :return data: 子分類名稱資料
&lt;/span>&lt;span class="s2"> &amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;span class="k">if&lt;/span> &lt;span class="nb">type&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">categories_id&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="nb">list&lt;/span>&lt;span class="p">:&lt;/span>
&lt;span class="n">categories_id&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;,&amp;#39;&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">join&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">categories_id&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="s1">&amp;#39;https://ecapi-pchome.cdn.hinet.net/cdn/ecshop/cateapi/v1.5/store&amp;amp;id={categories_id}&amp;amp;fields=Id,Name&amp;#39;&lt;/span>
&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request_get&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">)&lt;/span>
&lt;span class="k">return&lt;/span> &lt;span class="n">data&lt;/span>
&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;br/>
&lt;!--adsense-->
&lt;h2 id="完整程式碼">完整程式碼&lt;/h2>
&lt;p>附上完整程式碼：&lt;a href="https://blog.jiatool.com/code/pchome_spider01.py" target="_blank" rel="noopener">
pchome_spider01.py
&lt;/a>&lt;br />
(對超連結右鍵 &amp;gt; 另存連結為)&lt;/p>
&lt;h2 id="延伸練習">延伸練習&lt;/h2>
&lt;ol>
&lt;li>在「&lt;a href="#%e6%90%9c%e5%b0%8b%e5%95%86%e5%93%81%e5%88%86%e9%a1%9e" target="_blank" rel="noopener">
搜尋頁面的商品分類
&lt;/a>」章節有介紹到商品所屬的分類，一般操作可以點擊分類來篩選商品，那在程式裡我們該如何送出指定分類的請求呢？&lt;br />
(小提示：注意觀察送出請求的路徑)&lt;/li>
&lt;/ol>
&lt;h2 id="結語">結語&lt;/h2>
&lt;p>這篇文章主要是說明在&lt;a href="https://ecshweb.pchome.com.tw/search/v3.3/?q=%E6%BB%91%E9%BC%A0" target="_blank" rel="noopener">
搜尋頁面
&lt;/a>的請求，而之後會再寫一篇文章講解&lt;a href="https://24h.pchome.com.tw/prod/DCAN8J-A9008YONC" target="_blank" rel="noopener">
商品頁面
&lt;/a>，敬請其待。&lt;/p>
&lt;p>如果對文章有任何疑問或心得，歡迎在底下按讚、留言喔~😎&lt;/p>
&lt;br/>
&lt;br/>
&lt;hr />
&lt;blockquote>
&lt;p>比別人多一點執著，你就會創造奇蹟。&lt;/p>
&lt;/blockquote></content:encoded><dc:creator>Jia</dc:creator><media:content url="https://blog.jiatool.comimages/cover/pchome_spider01.jpg" medium="image"><media:title type="html">featured image</media:title></media:content><media:content url="https://blog.jiatool.comimages/posts/pchome_spider01_meta.jpg" medium="image"><media:title type="html">meta image</media:title></media:content><category>Python</category><category>PChome</category><category>網路爬蟲</category><category>Python網路爬蟲實例</category></item></channel></rss>