Python 網路爬蟲 Web Crawler 教學 - AJAX / XHR 網站技術分析實務 By 彭彭

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ก.พ. 2025
  • 喜歡彭彭的教學影片嗎?點擊「加入」按紐取得更多會員服務哦。
    加入會員: / @cwpeng-course
    建議先學習基本的網路爬蟲程式,請參考另外一份影片:
    • Python 網路爬蟲 Web Crawle...
    0. 最終目標:抓取 Medium.COM 網站的文章列表資料
    1. 什麼是 AJAX 技術
    1.1 網頁前端 JavaScript 的技術
    1.2 網頁載入後持續和伺服器互動的技術
    2. 分析網站運作模式
    2.1 仔細觀察網站資料的載入時間點
    2.2 檢查原始碼是否包含網站資料
    3. 找到正確的資料網址
    3.1 利用 Chrome 的開發人員工具
    3.2 利用 Network 工具觀察 AJAX / XHR 的運作
    3.3 找出資料來源網址,觀察資料格式
    4. 實務操作
    4.1 觀察 medium.com 的網站運作
    4.2 找到 medium.com 的首頁文章標題資料網址
    4.3 利用爬蟲程式,連線抓取
    -------------------
    更多學習資訊,請到彭彭的課程網站:
    training.pada-...

ความคิดเห็น • 389

  • @RogerAndy-z1e
    @RogerAndy-z1e ปีที่แล้ว +5

    感謝 老師認真教導,希望最後轉職成功!
    還有謝謝老師分享那麼多細節及技巧!
    未來轉職成功在回饋彭彭老師
    最後祝大家都轉職成功😇😇😇

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว +2

      祝福你順利轉職成功哦,期待你的回報和後續消息 :)

  • @江昱嶔
    @江昱嶔 4 ปีที่แล้ว +8

    淺顯易懂,原來ajax這樣抓(network/xhr),神教學👍👍

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +2

      謝謝哪 :) 很高興對你有幫助哦 👍👍

  • @張小照
    @張小照 4 หลายเดือนก่อน +1

    看完第21集啦,感謝老師教學,能學到新知識感覺很快樂

    • @cwpeng-course
      @cwpeng-course  3 หลายเดือนก่อน

      快樂很重要!

  • @jerryyliu
    @jerryyliu ปีที่แล้ว +1

    謝謝彭彭老師,真的很佛心的教學系列。

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      謝謝你的回饋和支持,繼續努力 :)

  • @zhw1447
    @zhw1447 4 ปีที่แล้ว +14

    老師加油 !!! 看你的影片真的受益良多
    幫助到很多剛學習的人
    老師的影片真的很棒

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +3

      謝謝你特地來和我說加油 :) 覺得開心 ~~~~

  • @tg6640
    @tg6640 4 ปีที่แล้ว +17

    彭彭跟你說件事, 今天打算爬學校的英語學習網站的題目, 本以為題目的答案都放在數據庫, 誰知一看HTML, 全部答案都放在一個Javascript的列表, 之後簡單看了下細節就找到管理員入口了😂

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +3

      哈哈哈哈,很棒耶,感覺有駭客的 Fu 😂😂

  • @陳冠廷-n6z
    @陳冠廷-n6z 4 ปีที่แล้ว +8

    上次只有看到前一片基礎入門,結果爬不了含js的網站,我要爬的網站我找了很久找不到規律,後來用Selenium的webdriver, 還滿好用的。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      感謝你的分享,Selenium 是模擬完整瀏覽器運作的工具,確實是挺方便的沒錯 :)

  • @janethuang8838
    @janethuang8838 2 ปีที่แล้ว +6

    使用kkdays的購票網頁練習的同學,因為資料是list,可以改成
    import json
    data=json.loads(data)
    posts=data["data"]
    for key in posts:
    print(key["name"])
    其實老師在16課抓台北市政府資料的單元有教,謝謝老師的指導~

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      感謝你的分享,相信對其他人會很有幫助 :)

    • @stevenlai4772
      @stevenlai4772 2 ปีที่แล้ว

      顯示錯誤欸
      TypeError: string indices must be integers

    • @zozo4215
      @zozo4215 2 ปีที่แล้ว +1

      @@stevenlai4772 posts = data["data"]["top_products"]["prod_list"] posts那邊要這樣打,單打["data"]的話會出現你那個錯誤

  • @蘇暐傑-c5v
    @蘇暐傑-c5v 4 ปีที่แล้ว +7

    期待這邊有後續新的影片QQ,剛好在做爬網站資料的專案...再麻煩老師了

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      一直都會有新的影片哦 :)

  • @mjc8426
    @mjc8426 ปีที่แล้ว +1

    今天使用老師的教學,仍然可以抓到資料,謝謝彭彭老師!

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      感謝你的回饋 :)

    • @劉哲嘉-m6q
      @劉哲嘉-m6q ปีที่แล้ว +1

      可以借參考嗎!謝謝你!

  • @tsai94520
    @tsai94520 4 ปีที่แล้ว +14

    謝謝老師!!燃起我寫爬漫畫的衝動!

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +3

      哈哈哈!!希望你爬漫畫順利 XDDDD

  • @AK-di6xs
    @AK-di6xs 3 ปีที่แล้ว +7

    網站改版了XD 感謝彭彭老師! 繼續學下去就對了!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +4

      對哦,網站改版了 XDDD 不過還是可以學習一些觀念哦 :)

    • @AK-di6xs
      @AK-di6xs 3 ปีที่แล้ว +1

      @@cwpeng-course 真的,超級感謝澎澎老師!

  • @GGininder5566
    @GGininder5566 3 ปีที่แล้ว +15

    我用KKDAY練習
    後面如果跟著打post=posts[KEY]
    結果會出現list indices must be integers or slices, not dict
    後來直接拿掉此行
    改為print(key["name"])結果標題就跑出來了
    但是我還是不懂為什麼...

    • @shiuan423
      @shiuan423 3 ปีที่แล้ว

      我也遇到聽樣的狀況QQ

    • @kaid9396228
      @kaid9396228 3 ปีที่แล้ว

      卡 遇到相同問題

    • @twterry10
      @twterry10 3 ปีที่แล้ว +2

      跟你分享我的程式和觀察,程式跑得出來但不確定是不是正確的觀念,也想再麻煩老師有空可以幫忙解惑!
      ------------(程式內容)-------------------
      # 1*抓取 kkday.com 某主題頁的文章資料 (AJAX / XHR)
      import urllib.request as req
      url="www.kkday.com/zh-tw/product/ajax_productlist/?country=&city=&keyword=&availstartdate=&availenddate=&cat=TAG_3_7&time=&glang=&sort=omdesc&page=1&row=10&fprice=*&eprice=*&precurrency=TWD&csrf_token_name=e655f49b36fe7a1f84bc98f37cfd2ad4"
      # 建立一個 Request 物件,附加 Request Headers 的資訊
      request=req.Request(url,headers={
      "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
      })
      with req.urlopen(request) as response:
      data=response.read().decode("utf-8") # 根據觀察,取得的資料是 JSON 格式
      # 2*解析 JSON 格式的資料,取得每篇文章標題
      import json
      data=json.loads(data) # 把原始的 JSON 資料解析成字典/列表的表示形式
      # 取得 JSON 資料中的文章標題
      posts=data["data"]
      for key in posts:
      print(key["name"])
      # 老師的講解中: 在 Post 中的資料要再往裡一層才有 title
      # kkday 的 data 資料則直接為 9 比內涵 name 的資料,其實沒有"0"-"9"的字典的鍵(這邊我也不知道為什麼分成0-9)
      # 老師的爬蟲內容:
      # Post
      # 5a9b57
      # acceptedAt:0
      # allowresponses:true
      # ...
      # title: "23 insanely useful NodeJs Libraries you should know in 2020" 這邊
      # ...
      # 6c7469
      # 6f6bdb
      # ...
      # kkday的爬蟲內容:
      # data
      # id:119566
      # prod_oid:119566
      # name:宜蘭星寶蔥體驗農場 | 三星蔥派 & 蔥油餅 & 手工饅頭 | 全台配送 這邊
      # ...
      ------------(程式內容)-------------------

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +5

      能夠執行的程式就沒問題。
      主要是要分析取得的結果,每個網站都不一樣。如果是字典,就用字典的方式取得,類似 dic["name"]。如果是列表就要用迴圈來逐一取得。

    • @湯晴羽
      @湯晴羽 2 ปีที่แล้ว

      請問你用的也是ajax_get_homepage_setting的連線網址嗎?我用它但會出現http_error

  • @charliechen8562
    @charliechen8562 ปีที่แล้ว +3

    老師您好,時至今日medium網站以更新了不少,我在開發人員工具中找到的是Fetch/XHR,裡面並沒有home-feed,更沒有post之類的東西可以找到標題,但是照著老師的程式碼,還是能爬到舊資料,想問一下網站以更新了,為什麼還能爬到資料呢?

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว +2

      可能是對方網站雖然用了新的後端,但還留著原來的後端接口,沒有實際移除也不一定。

    • @amelie1403
      @amelie1403 ปีที่แล้ว

      感謝發問,也想問這題

    • @劉哲嘉-m6q
      @劉哲嘉-m6q ปีที่แล้ว +1

      可以借參考嗎!謝謝你!

  • @fishmacau6059
    @fishmacau6059 3 ปีที่แล้ว +18

    現在不給抓取了:(

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +2

      可以參考下一部最新的爬蟲教學哦 ~

  • @Claire-meimei7
    @Claire-meimei7 4 ปีที่แล้ว +8

    老師您好,想請問如果沒有看到home feed的部分,還有可能出現在哪裡?我每項都點了但沒有看到類似的。

    • @ching-fongfang9235
      @ching-fongfang9235 4 ปีที่แล้ว +1

      在graphql的下面找到了~

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +19

      看起來是改了設計,真是太不巧惹 QQ
      我簡單講一下,第一要使用 Post Method,第二要附上連線資訊最後面的 Payload 資料,第三至少要附上 Request Header 中的 Content-Type 設定。
      不會很簡單,哀哀哀哀,可能要另外錄一份影片來介紹 ~

    • @Chrischen1011
      @Chrischen1011 4 ปีที่แล้ว

      @@cwpeng-course 老師有預計甚麼時候上影片嗎XD (敲碗等待中

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      @@Chrischen1011 如果是說這部影片的更新的話,可能要再等等哦,因為很多已經排定的事項要處理,過一個月之後吧 XDDD

    • @赵乐际-v4g
      @赵乐际-v4g 4 ปีที่แล้ว

      @@cwpeng-course 谢谢老师!非常感谢你的讲解

  • @qwe850324
    @qwe850324 3 ปีที่แล้ว +2

    ​ @彭彭的課程
    請問老師,如果是那種會員制論壇,甚至是FB、IG(等需要登入才能夠檢視內容的網站)
    應該朝怎麼樣的方向思考去撰寫code呢?
    或是有什麼關鍵字可以搜尋,供後續繼續研究?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +6

      你得學習完整的網站後端開發和資料庫領域 ~

  • @王偉-c3p
    @王偉-c3p หลายเดือนก่อน +1

    Medium改版後無法使用,我改用kkdays抓title
    結果我要設定cookie的拼圖驗證碼在重新登入後被封鎖😂

  • @birdie1020
    @birdie1020 2 ปีที่แล้ว

    感謝
    這篇解說很詳細
    可以了解很多解析的細節

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      謝謝你的回饋,很高興對你有幫助 :)

  • @mikahsieh1293
    @mikahsieh1293 2 ปีที่แล้ว +1

    程式新手發問:
    請問在json格式讀取資料的時候
    為什麼在檔案的那篇youtube語法是:json.load()
    在這篇爬蟲的語法是:json.loads()
    兩個在使用上有什麼差異嗎?

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      json.load(檔案物件或是回應物件)
      json.loads(字串)
      他們接收的參數型態不同。

    • @mikahsieh1293
      @mikahsieh1293 2 ปีที่แล้ว +1

      @@cwpeng-course 謝謝說明😃

  • @choorpie
    @choorpie 4 ปีที่แล้ว +2

    感謝彭彭老師!講解得很清楚

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      不會,也謝謝你的回饋 :)

  • @zhijwu4624
    @zhijwu4624 2 ปีที่แล้ว +3

    想請問我在抓kkday首頁標題的時候,出現"HTTP Error 403: HTTP Forbidden" 怎麼辦,我有加headers,是伪裝得還不夠像嗎?

    • @chengwei_0804
      @chengwei_0804 2 ปีที่แล้ว +1

      我也有遇到同樣的問題

    • @ss-vn4yc
      @ss-vn4yc 2 ปีที่แล้ว +1

      我也是QQ

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      我沒有真的抓過,估計是偽裝的不夠像,可以把開發人員工具中觀察到的所有 headers 都加進去看看。

    • @kai_b2w
      @kai_b2w ปีที่แล้ว

      @@cwpeng-course
      老師請問在添加完全部的headers後return以下error是代表什麼意思以及有什麼解決辦法呢:
      http.client.RemoteDisconnected: Remote end closed connection without response

    • @蝸蝸-q3y
      @蝸蝸-q3y ปีที่แล้ว

      請問有解決了嗎

  • @robertchen2136
    @robertchen2136 ปีที่แล้ว +1

    請問老師: Python 網路爬蟲, 什麼情況下: 用 SELENIUM ? 什麼情況下: 用 BS4 ? 優點各如何?

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว +1

      bs4 比較底層,會比較有效率。不過 selenium 會更容易理解和操作,也比較容易突破一些比較難爬取的網頁。

    • @robertchen2136
      @robertchen2136 ปีที่แล้ว +1

      @@cwpeng-course 謝謝🙏

  • @1126duncan
    @1126duncan 3 ปีที่แล้ว +17

    Medium
    雖然開發人員工具內看不到home-feed
    但是request url 還是可以寫進程式抓資料
    給各位參考

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      感謝你的分享,看來他還沒把舊的 API 拿掉 XDDD

    • @yinchen7380
      @yinchen7380 3 ปีที่แล้ว

      想請教您程式碼是如何寫的!,還有想詢問您 API是如何找到的?

    • @1126duncan
      @1126duncan 3 ปีที่แล้ว +5

      @@yinchen7380 HI 我只是參照老師的教學,把舊的API網址貼上(現在網站找不到home-feed, 拿到的也是舊的資料)
      把爬出來的data放入pandas再存成csv檔 , 可以方便觀察Json data,資後就照老師的教學分析data
      參考如下
      data=data.replace("])}while(1);","")
      data=json.loads(data) # 把原始的JSON 資料解析成字典/列表的表示形式
      print(data)
      df=pd.DataFrame(data)
      df.to_csv("test_data.csv")

    • @1126duncan
      @1126duncan 3 ปีที่แล้ว +2

      觀察csv檔的內容就跟老師在Chrome觀察的是一樣的

    • @yinchen7380
      @yinchen7380 3 ปีที่แล้ว

      首先非常感謝 林Sir 的回覆!!! 我自己有兩個疑惑:
      1. 你在輸入 api 還是用老師的這段 "medium.com/_/api/home-feed" 嗎?
      2. 找到資料後,不是還是無法看到標題~等等嗎? 還是你只是想表達可以抓資料而已😅
      不好意思,我有點亂亂的

  • @user-sm3qn1rg2x
    @user-sm3qn1rg2x 2 ปีที่แล้ว +1

    請問老師 kkday 裡面 preview 呈現 name: "桃園青埔|Xpark 都會型水生公園門票" 跟影片裡面Medium的 title 呈現形式一樣 為什麼 kkday 就是列表 而 Medium 是字典

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      看他外面一層的符號是 [] 還是 {}

    • @user-sm3qn1rg2x
      @user-sm3qn1rg2x 2 ปีที่แล้ว +2

      @@cwpeng-course 我有觀察到 kkday 的形式是這樣
      prod_list: [{id: 101517, prod_oid: 101517, name: "桃園青埔|Xpark 都會型水生公園門票",…},…]
      所以是因為他最外面那層是 [ ] 列表的關係 如果是 { } 就是字典了
      應當是這樣理解, 感謝老師

  • @irisiris1935
    @irisiris1935 ปีที่แล้ว +1

    老師,為什麼這裡用的是json.loads(data)而不是json.load(data)呢?
    前面的影片教json的時候用的是後者

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว +1

      json.loads() 要給的是字串型態的資料,json.load() 要給的是一種特殊可以被讀取的物件,例如 response。這樣的差別,稍有不同但概念上是一樣的。

  • @sula31610
    @sula31610 2 ปีที่แล้ว +1

    老師您好
    想請問一下,BeautifulSoup是不是只能解析.html 結尾的網站?
    我看到有些網址的結尾是.aspx
    這個和 html 有什麼不同呢?

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      BeautifulSoup 可以解析 HTML 文件,就算網址結尾是 .aspx 抓取之後的文件格式通常依然還是 HTML,這個牽扯到一些網站後端開發的知識,如果你有興趣深入可以往那個領域去找找答案。

    • @sula31610
      @sula31610 2 ปีที่แล้ว +1

      @@cwpeng-course 好的了解

  • @薇季芬
    @薇季芬 ปีที่แล้ว +1

    26:04
    老師加的 那串用來replace 的 字串
    data = data.replace("])}while(1);","")

  • @buzzlighter_tom3265
    @buzzlighter_tom3265 10 หลายเดือนก่อน

    請問除了kkday之外,還有什麽比較適合練習d額XHR網站?
    第一次開kkday的後台,結果沒注意到驗證的拼拼圖而被封鎖了😫

  • @HungWang121
    @HungWang121 3 ปีที่แล้ว +1

    彭彭老師您好:
    剛剛看完這部影片真的獲益良多!
    看完後我想要利用蝦皮的網站進行練習,想要抓取首頁上的"每日新發現",在抓出JSON格式後,往字典內的商品名稱尋找,卻發現在最後抓取出來的字典被list給包住,因此無法用key的方式抓取,請問遇到這樣的情況是要尋找將list轉換為dict的函式嗎?
    謝謝老師!

    • @曾子凡-g2g
      @曾子凡-g2g 3 ปีที่แล้ว

      卡個 我也遇到這個問題

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +4

      List 就要先用迴圈取出 List 內部的資料,或者按照基礎 List 的語法直接用中括號加編號取得列表中的資料。

    • @HungWang121
      @HungWang121 3 ปีที่แล้ว

      @@cwpeng-course 謝謝彭彭老師!

  • @ffleot1234
    @ffleot1234 4 ปีที่แล้ว +1

    講解的很詳細,感謝老師

  • @albertlu8407
    @albertlu8407 4 ปีที่แล้ว

    老濕感謝您,
    大軍準備進入 Medium :D

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      哈哈哈哈,沒這麼誇張哪,我相信 Medium 肯定沒問題的 XDDDD

  • @yrad25
    @yrad25 3 ปีที่แล้ว +1

    謝謝老師的教學, 想請教老師影片裡迴圈中的key是自訂變數嗎?還是是根據網站的內容寫出來的 這裡觀念一直卡住!

  • @hsing8090
    @hsing8090 3 ปีที่แล้ว +6

    老師您好,
    有可以練習這個方法的網站嗎? 好像 medium 已經不適合練習了 XD 謝謝

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      可以考慮看看蝦皮的網站,我一開始是想用蝦皮當例子的 XDDDD

    • @ok8426888
      @ok8426888 3 ปีที่แล้ว +1

      @@cwpeng-course 蝦皮好像也找不到...(是我眼矬嗎QQ)但是kkday可以,感謝網友分享~

    • @qwe850324
      @qwe850324 3 ปีที่แล้ว +1

      @@ok8426888 可以請教您kkday的解法嗎>

    • @ok8426888
      @ok8426888 3 ปีที่แล้ว +14

      ​@@qwe850324
      建議先找到主程式的XHR(有時候找的頭痛)
      我的寫法是這樣(基本上是跟著彭彭老師說的做):
      #甚麼是AJAX? 一種JavaScript技術 (在chrome裡面的開發人員中叫XHR)
      import urllib.request as req
      url="www.kkday.com/zh-tw/home/ajax_get_homepage_setting?csrf_token_name=6cd82dbc2a4c18355b683320d4c9012f"
      request=req.Request(url,headers={
      "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
      })
      with req.urlopen(request) as response:
      Data=response.read().decode("utf-8") #根據觀察,取得的資料是json模式
      #解析JSON格式資料,取得每篇文章標題
      import json
      Data=json.loads(Data) #把原始資料解析成字典/列表的表示形式
      #取得JSON資料中的文章標題列表
      posts=Data["data"]["homepage_product_group"]
      for key in posts:
      print(key['title'])
      其中最後的這段:
      posts=Data["data"]["homepage_product_group"]
      for key in posts:
      print(key['title'])
      我也嘗試過用老師影片裏面的打法
      for key in posts:
      post=posts[key]
      print(post["title"])
      但是會出現錯誤
      TypeError: list indices must be integers or slices, not dict
      後來我才發現因為medium.com網站裡面的title有多一層包著所以才需要像老師一樣做(即意:程式隨機碼不是在最後而是倒數第二個)不過這也是我的想法、自己解釋的方式,希望有幫到你。
      剛剛突然發現如果改成這樣可以抓到top10的活動標題:
      posts=Data["data"]["top_products"]["prod_list"]
      for key in posts:
      print(key["name"])
      你可以隨便玩玩看XD
      更加詳細的內容或你有遇到甚麼問題可能還是要問專業的人。畢竟我也還學不到一個月,一起加油吧(欸嘿>_O!)

    • @alicehuang9647
      @alicehuang9647 3 ปีที่แล้ว +2

      @@ok8426888 感謝你的分享,參考你的內文資訊我也成功了!

  • @littygm33597
    @littygm33597 2 ปีที่แล้ว

    請問一下彭彭老師,我今天看這個學習視頻,去medium網站(現在好像頁面有點不一樣了),我按照視頻裡的操作,但沒有找到home-feed,不知道是不是網站有改,還是我哪裡弄錯了??

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      網站確實有可能有變動,爬蟲程式必須隨著網站的變動而變動,所以建議要抓住網站分析的方式,然後隨機應變。

  • @yangwang9688
    @yangwang9688 3 ปีที่แล้ว +1

    講解非常的詳細!很喜歡你的影片!之前試著爬Bloomberg,但是發現問題很多還是爬取不了,可以請教嗎?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      每個網站的爬取方式都會不太一樣,我們學習爬蟲必須學習他的核心分析和運作方式,才有機會去推到不同網站。有些很難有些比較簡單,我可能無法幫你針對特定網站做協助哦 ~

  • @steven04090
    @steven04090 4 ปีที่แล้ว

    看完老師的教學發現medium更改了規則?所以自己寫了一個,我個人沒接觸過python也不是本科,大概花了5hr研究,
    repl.it/@Steven04090/BonyBulkyPipelining
    建議真的想不出來,再點進來互相研究,我寫得非常陽春。
    老師的教學邏輯很清楚,重點就是模仿人、模仿瀏覽器的行為,相信大家花點時間也可以完成。
    下面提供一些關鍵字:
    Request Method:POST
    Request Payload
    python for迴圈的寫法(dict,int 之類的差別)
    2020/10/14寫的,也許之後規則又修改,此篇就沒用啦

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      讚讚,謝謝你的分享,看起來好像是改了,真是太不巧惹 QQ

    • @steven04090
      @steven04090 4 ปีที่แล้ว

      早上趁著工作空檔,看了一下瀑布區的規則,就把它更新。
      為避免有人點進來直接run太多筆,只寫到前30筆,也沒給user input,
      瀑布區也有給limit限制,最高到每次25筆,過多會顯示400 error。
      可能沒給cookie的關係,瀑布區滿容易重複主題的

  • @emilylu7901
    @emilylu7901 3 ปีที่แล้ว +2

    真的要感謝老師~
    最詳細最適合新手理解的課程!
    但老師我想問
    pip install bs4是成功的,但是要使用時卻跑出找不到這個模組bs4
    請問是什麼原因呢?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      不會呦,謝謝 :)
      安裝的指令是:pip install beautifulsoup4

    • @kayanli91
      @kayanli91 3 ปีที่แล้ว

      pip3 install beautifulsoup4

  • @劉蓮希
    @劉蓮希 4 ปีที่แล้ว +1

    想問一下彭彭老師 visual stuido可以顯示變數視窗嗎?可以像r studio右側那樣嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      我自己沒有在使用,所以不確定,不好意思 @@ 不過網路上有人在分享如何在 Visual Studio Code 中安裝變數視窗的擴充套件和使用方式,可以分享給你看看:
      www.learncodewithmike.com/2019/11/python2-visual-studio-code-python.html

  • @khan_chang
    @khan_chang 3 ปีที่แล้ว

    老師我想請問一下我輸入
    for key in posts:
    homepage_product_group=posts[key]
    print(homepage_product_group["title"])
    結果卻顯示
    File "/Users/khan/Google 雲端硬碟/自學/Python Practice/python_practice/21_crawler_ajax.py", line 17, in
    homepage_product_group=posts[key]
    TypeError: list indices must be integers or slices, not dict
    是哪邊有問題?謝謝老師!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      posts 是一個列表,要使用迴圈來一一取得列表中的每一個項目

  • @YaCheng
    @YaCheng 2 ปีที่แล้ว

    老師請教, 我完成後發生這個問題 {'Message': 'Authentication ticket was not provided.'} 這要怎麼處裡呢?

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      注意一下細節是否都有處理好嘍,不然要看看程式碼才有辦法進一步判斷 ~

  • @sigamaliiin
    @sigamaliiin 4 ปีที่แล้ว +1

    請問老師傳統/AJAX兩者差別在哪
    是需求不同,所以設計網頁要用不同方式嗎

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      會對使用者的體驗造成一些差異,實際上每個網站會根據自己的需求去選擇。
      使用 AJAX 製作的網頁,使用者比較不會有明顯的跳頁感,會比較連貫 ~

  • @LOVE861324
    @LOVE861324 11 หลายเดือนก่อน +1

    老師您好,剛剛在邊看邊做的過程中發現XHR已經 更改成fetch/XHR 以及進入後他的下層name的位置也有複數個一模一樣的名字,這樣是否會造成資料沒辦法順序讀取以,謝謝老師

    • @cwpeng-course
      @cwpeng-course  11 หลายเดือนก่อน +1

      XHR 或是 fecth/XHR 在技術上是指同一件事情,所以沒有差別,Name 看起來有複數個,其實每個都不會完全一樣。概念上依然是要找到我們真正想要的資料在哪一個 Request 中,然後直接連過去抓取。

    • @LOVE861324
      @LOVE861324 11 หลายเดือนก่อน +2

      @@cwpeng-course 謝謝老師的回覆 但我還是有一部分的問題,因為現在的網頁已經沒有所謂的老師講的客製化的寫法,所以我直接省略掉了replace 概念上應該是沒問題的,取而代之的是她在某一個中間某一層(items)就開始有迴圈(0~9)因此我寫了下面的方式 卻沒辦法登入
      #解析JSON格式的資料, 取得每篇文章的標題
      import json
      data=json.loads(data) #把原始的JSON資料解析成字典/列表的表現形式
      #取得JSON資料中的標題
      posts=data["[{,…}]"]["0"]["data"]["staffPicksFeed"]["items"]
      for key in posts:
      post=posts[key]
      print(post["key"]["post"]["title"])
      我最後一樣式想取得title但是抵達title前還有post層,但資料卻跑出錯誤代碼
      HTTP 403 Forbidden
      顯示我並沒有權限訪問該網頁,請問我該如何解決呢
      再次感謝老師花費時間回答我 謝謝您

    • @LOVE861324
      @LOVE861324 11 หลายเดือนก่อน +1

      老師謝謝您 我已經看完下一篇了 我理解了 感謝老師

    • @r124io2
      @r124io2 10 หลายเดือนก่อน

      方便告訴我你怎麼寫的嗎 medium網頁現在裡面的東西跟影片裡的不一樣了

  • @logan.zw45
    @logan.zw45 2 ปีที่แล้ว

    請問為什麼可以用data=(data["Installs"]).str.replace("[,+]","")同時替換 , 和+
    但為什麼不能用data=(data["Installs"]).str.replace("[,+Free]",""),同時替換掉 , + 和Free呢?
    最終寫法是data["Installs"]=pd.to_numeric(data["Installs"].str.replace(",+","").replace("Free",""))
    str.replace和replace用法上有什麼差異呢?
    懇請老師指教QQ
    爬文還是不太懂

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      [,+] 這個語法其實叫做正規表達式,他有一定的規則,其實挺複雜的,所以簡單講就是 [,+Free] 按照正規表達式的規則來看,不會是你期待的那個效果。原因不是在程式的部份,你的解法其實也很好,有解決問題就很棒 :)

  • @蔡永杰-f2f
    @蔡永杰-f2f 3 ปีที่แล้ว

    老师你的教学很好 对我有很大的帮助 谢谢你
    祝老师 新年快乐!万事如意!心想事成!年年有余!大吉大利!
    虎年行大运 hua 啊!heng 啊!ong啊!hua啊!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      哈哈哈,好可爱的表情符号,新年快乐哪 :)))))

  • @02王冠文andy
    @02王冠文andy ปีที่แล้ว +1

    請問為什麼我network裡的XHR的連線只有三個,在preview裡也找不到跟影片中類似的資料

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว +1

      線上的網站經常都會持續的更新,所以有變化是正常的。爬蟲學到核心概念之後,就必須按照每個網站當時的狀況去觀察和找出關鍵點來操作。

  • @Elpsycongroooooooo
    @Elpsycongroooooooo 3 ปีที่แล้ว +1

    老師請問出現 list indices must be integers or slices, not dict的結果要怎麼解決呢?卡關了>

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      可能要看看你的程式碼才有辦法進一步判斷哦 ~

    • @Elpsycongroooooooo
      @Elpsycongroooooooo 3 ปีที่แล้ว

      import urllib.request as req
      url="www.kkday.com/zh-tw/home/ajax_get_homepage_setting?csrf_token_name=fc5478e2309b0c53f7da0b9d4198596b"
      a12=req.Request(url,headers={"User-Agent":
      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
      })
      with req.urlopen(a12)as d1:
      data=d1.read().decode("utf-8")
      import json
      data=json.loads(data)
      titles=data["data"]["homepage_product_group"]
      for key in titles:
      post=titles[key]
      print(post["title"])
      找不到問題出在哪?

  • @ed_cby
    @ed_cby 4 ปีที่แล้ว +2

    等我買新筆電開始學程式語言 就加入會員!

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      謝謝呦,希望能對你有幫助 :)

  • @darkbreker2271
    @darkbreker2271 4 ปีที่แล้ว

    想請問一下老師,因為檔案是json格式的,那如果我要爬多一點頁數,還要載入bs4嗎? 因為頁數是html格式

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      不用哦。你需要仔細觀察當他載入新的文章時,背後呼叫的網址是什麼,然後用同樣的手法去取得資訊。

    • @darkbreker2271
      @darkbreker2271 4 ปีที่แล้ว +1

      @@cwpeng-course 好的,謝謝老師

  • @raru9240
    @raru9240 3 ปีที่แล้ว

    老師不好意思我用的網站是kkday,但是出現錯誤,
    post=posts[key]
    TypeError: list indices must be integers or slices, not dict
    這是為甚麼呢??

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      不同的網站抓到的資料是不同的,所以你得根據抓到的資料去判斷程式該怎麼寫,沒有一定的作法。錯誤訊息指的是你的 posts 是一個列表,要用處理列表的方式,例如迴圈來取得資料。

  • @callumsch6765
    @callumsch6765 3 ปีที่แล้ว

    謝謝老師的教學!我最近在嘗試寫爬蟲,有遇到個問題想請教您~我在selenium控制的網頁中點chrome devtool後回傳一大串跑不完的data出來。然而我前一天執行同樣的程式碼卻沒這個問題,請問這可能是什麼原因呢?會是devtool本身的錯誤嗎?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      光是這些資訊我完全幫不上忙哦,很難判斷發生了什麼事情,不好意思 ~

    • @callumsch6765
      @callumsch6765 3 ปีที่แล้ว

      好的 我再想想如何解決>< 謝謝老師!

  • @張德民-v9t
    @張德民-v9t 4 ปีที่แล้ว

    網路爬蟲 Web Crawler 教學 - 這個章節很精彩

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      謝謝你,希望對大家都有幫助 :)

  • @wt3626
    @wt3626 4 ปีที่แล้ว +1

    太棒了,最近卡關,感謝你

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      加油,希望對你有幫助 :)

  • @布萊恩特-n7e
    @布萊恩特-n7e 3 ปีที่แล้ว +1

    彭彭老師您好,我是以蘋果日報的網站練習爬蟲,我能從XHR 中找到URL,但URL每隔一段時間會改變,有沒有方法能不手動複製網址?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      你必須去分析網站中的 JavaScript 程式,找到他改變的規則,通常可以找到但不一定很好找,會是個困難的任務。

  • @8686-n9f
    @8686-n9f 4 ปีที่แล้ว +3

    老師 可以多講些 爬蟲與其它的網頁結構 像第二集 第三集這些 ,又有些不一樣的網頁如何爬 如spa 也很類似xhr, 還有其他的網頁結構...... ,還有一些比較少見的框架 製作的網頁結構 老師也可以分析一下 如typescript ...... 等
    謝謝

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      感謝你的建議哦,有時間我會安排的 :)

  • @馬普魯
    @馬普魯 3 ปีที่แล้ว

    老師請問
    我要爬的網站
    在data=response.read().decode('utf-8')這行時
    出現utf-8' codec can't decode byte 0xd0 in position 219: invalid continuation byte這個問題
    網路上查發現是解碼格式的問題
    請問有其他解碼格式或解決方法嗎?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      你要確認你爬的網站使用的編碼是什麼,把 utf-8 替換成網站的編碼,例如 big5 這樣 ~

    • @lungyucang
      @lungyucang ปีที่แล้ว

      ​@@cwpeng-course 網路上有人說可以用gzip.decompress寫
      import gzip
      with req.urlopen(request) as response:
      data= gzip.decompress(response.read())
      這樣寫好像就沒問題了,請問這是什麼原因?

  • @amin7052
    @amin7052 4 ปีที่แล้ว

    老師您好,我想問一下,像youtube這種是屬於哪種格式?因為我用傳統的方式爬youtube某一個人的訂閱數出來都是none

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      TH-cam 的訂閱數資料直接寫在程式碼中,不太好處理,建議直接使用 Google 官方的 TH-cam Data API 串接會更好 ~

  • @曾柏瑜-h9k
    @曾柏瑜-h9k 4 ปีที่แล้ว

    請問一下我為什麼已經打的跟老師一樣了(6:50那樣)
    但是還是出現urllib.error.HTTPError: HTTP Error 403: Forbidden,前兩集我也是如此。
    (我以為是現在不行以前可以這樣,但是看了這集才發現應該是我自己的問題。)

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      要確認一下你的程式碼才比較能判斷哦 ~~~~

    • @marcuschan535
      @marcuschan535 4 ปีที่แล้ว

      我也是顯示Forbidden誒

  • @華陀-e6n
    @華陀-e6n 4 ปีที่แล้ว +1

    感謝彭彭大神

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      不會,希望對你有幫助 :)

  • @tttNioh2
    @tttNioh2 3 ปีที่แล้ว

    請問一下VS CODE右邊的圖示 是甚麼軟體? 我看在右下角的工具列中也有出現. 3Q

  • @shing-b9o
    @shing-b9o 2 ปีที่แล้ว

    for key in posts:
    post=posts[key]
    print(post["title"]) 和
    for post in posts:
    print(post["title"])
    有什麼不同?

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      我們的 posts 若是字典的形式,for 後面的變數會取得字典的 key,無論是否取名為 key 都是,所以後面的寫法是無法運作的。

  • @chante593
    @chante593 ปีที่แล้ว

    老師你好,我在網頁中開F12找network,按下XHR,只顯示圖表,沒有老師講課的內容,請問我是關掉什麼或是開啟了什麼嗎?

    • @cwpeng-course
      @cwpeng-course  7 หลายเดือนก่อน

      建議再仔細找找看,沒有畫面我也很難知道狀況 ~

  • @赵乐际-v4g
    @赵乐际-v4g 4 ปีที่แล้ว +1

    感谢彭彭老师~

  • @醬賴
    @醬賴 8 หลายเดือนก่อน

    請問老師,如果被網頁封鎖是否有對應方法可以解鎖教學呢?

  • @90weker29
    @90weker29 3 ปีที่แล้ว

    for key in posts:
    post=posts[key]
    print(post["name"])
    請問為何結果如下???
    File "d:\python train\網路爬蟲AJAX&XHR 網站.py", line 24, in
    post=posts[key]
    TypeError: list indices must be integers or slices, not dict

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +2

      posts 是一個列表,要使用迴圈去取得列表中的每個項目。

  • @leamon9024
    @leamon9024 4 ปีที่แล้ว +1

    謝謝教學!
    請問老師有打算教GraphQL嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +3

      不客氣呦 :) 目前沒有,或許過陣子他又更紅了我就會教了 XDDDDD

  • @user-EricLin0619
    @user-EricLin0619 4 ปีที่แล้ว

    老師加油!!! 希望您能多發一點影片

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      好哦,我會繼續加油的 :)

  • @asdfsadffasfasdf6081
    @asdfsadffasfasdf6081 4 ปีที่แล้ว

    老師,我想問一下,我主要想學習數據分析和網絡爬蟲,有什麼書推薦嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      我自己大概有十年不看書學習了,主要都從網路上的資源,所以可能沒辦法推薦書籍哦 @@a

  • @梁啟瑞-v3f
    @梁啟瑞-v3f ปีที่แล้ว +1

    老師 我的network的XHR好像找不到跟您一樣的東西噎 是不是過了那麼久已經跟以前不一樣了

    • @cwpeng-course
      @cwpeng-course  7 หลายเดือนก่อน

      網站和瀏覽器都會持續更新,抓到核心概念可能最重要 ~

  • @amandawong8277
    @amandawong8277 3 ปีที่แล้ว

    老師求教! 同樣爬kkday都遇上卡關:TypeError: list indices must be integers or slices, not str
    下面老師有留言因為kkday是用list來回傳信息, 但是我不太懂怎樣分別列表和字典, 也不懂對應list來修改我的程式, 下面是我本身寫的:
    import json
    datas=json.loads(datas)
    posts=datas["data"]["top_products"]["prod_list"]
    for keys in posts:
    post=posts(keys)
    print(post["introduction"])

    • @amandawong8277
      @amandawong8277 3 ปีที่แล้ว

      而且後來我改成:
      for keys in posts:
      post=posts(keys)
      print(post)
      便出了: TypeError: 'list' object is not callable

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      你可以試試看 posts[keys]

  • @chacha-ph2rp
    @chacha-ph2rp 3 ปีที่แล้ว +1

    太强了👍

  • @collyyang9664
    @collyyang9664 2 ปีที่แล้ว

    老師教得很好 good

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      謝謝回饋,希望對你有幫助 :)

  • @城武竹中
    @城武竹中 3 ปีที่แล้ว

    老師您好,用了您的方法嘗試爬了dcard,明明程式能跑也有抓到資料,但是抓到的資料不完整,只有文章ID,跟reaponse的內容不一樣,好奇為甚麼會這樣呢?我對response內的文字按右鍵選open in new tab 就是我程式抓到的東西了。

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      原因很多,無法一概而論,只能仔細的去確認 Dcard 的網站結構該如何處理才能抓到想要的東西 ~

  • @迷你胖達
    @迷你胖達 2 ปีที่แล้ว

    想請問老師,要如何把json印出變成csv或excel,因為目前就只是在cmd上顯示爬的資料而已~
    謝謝

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      可能不是三言兩語能講完的,但你可以找找 Python 關於 csv 和 excel 輸出的套件嘍 ~

  • @吳文-l5f
    @吳文-l5f 3 ปีที่แล้ว

    謝謝老師的教學,由於medium網站不能使用這個方法了,於是照著留言的方法,我用了kkday當作自己練習的對象,寫到後面發現kkday的標題不是post,而是在data下面的一串數列,例如:data[1]是第一個文章標題, data[2]是第二個文章標題....依此類推,總共有9個,於是我將語法改寫如下:
    posts=data["data"]
    for n in range(10):
    post=posts[n]
    print(post["name"])
    並沒有問題,成功顯示出了文章標題!
    但我有個疑問想請教一下老師,假設今天我想抓取的頁面不只一個,且每個頁面的文章數量都不相等,可能第一頁有9個,第二頁有15個.....,如果遇到這種情況該怎麼修改語法會比較合適呢?
    很想知道答案 感激不盡!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      通常類似這樣處理:
      for post in posts:
      print(post)
      就能簡單的把列表中的資料一一取出來了。

    • @吳文-l5f
      @吳文-l5f 3 ปีที่แล้ว

      @@cwpeng-course 謝謝老師!

    • @湯晴羽
      @湯晴羽 2 ปีที่แล้ว +1

      請問你用的也是ajax_get_homepage_setting的連線網址嗎?我用它但會出現http for bidden

    • @lungyucang
      @lungyucang ปีที่แล้ว +3

      @@湯晴羽 我也出現相同的問題,網路上有人說多用幾個header就可以了
      我用了以下這幾個就沒有出錯了"User-Agent", "Accept", "Accept-Encoding" ,"Accept-Language" ,"Sec-Ch-Ua-Platform" , "Sec-Fetch-Dest"

  • @GinaBomb
    @GinaBomb 3 ปีที่แล้ว +1

    我有找到現在在其中一個graphql裡,有post可以看到標題,但是用課程教的去爬會出現HTTP Error 403: Forbidden

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      要確認每個細節 ~ 可以多試試看嘍 ~

  • @YouZhe0305
    @YouZhe0305 3 ปีที่แล้ว

    請問一下老師,AJAX的網站要怎麼做到換頁的功能,我自己是手動換頁,觀察他的數字變化才做到換頁,但我想知道有沒有其他辦法

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      找到網站背後資料換頁的機制,用程式去把你手動的部份自動化,概念上是這樣,實務上很看情況。

  • @lyy4518
    @lyy4518 3 ปีที่แล้ว

    請問最後一段不能用
    for key in posts:
    print(key[title])
    表示嗎

  • @Rosaline-Chen
    @Rosaline-Chen 3 ปีที่แล้ว

    我跟著老師用到最後步驟時,跑出這個: list indices must be integers or slices, not dict;請問我要怎麼處理?

    • @Elpsycongroooooooo
      @Elpsycongroooooooo 3 ปีที่แล้ว

      +1

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      得確認是否真的有抓到資料,如果有的話,要進一步看看你的程式碼和詳細的錯誤訊息才有辦法判斷 ~

  • @jerrychang2944
    @jerrychang2944 2 ปีที่แล้ว

    請問老師,medium的網站技術是否有修改,我在F12內找不到HOME-FEED....

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      可以再仔細找找看,不一定叫做 HOME-FEED,可能已經是別的名字,但總之找到包含真實資料的連線。

  • @jiaruey
    @jiaruey 2 ปีที่แล้ว

    可否請彭彭老師教學一下股市分析軟體?

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      欸,我自己本身不太玩股票,可能有點難 XDDDD

  • @bbaa8288
    @bbaa8288 ปีที่แล้ว +4

    我現在的medium網頁是長這樣[{..............
    }]看起來也不是json,用replace沒用,不知道要怎麼抓,懇請老師賜教

    • @chihjungcheng4834
      @chihjungcheng4834 11 หลายเดือนก่อน +1

      確實已經把大量的JS改掉了

    • @cwpeng-course
      @cwpeng-course  9 หลายเดือนก่อน

      網頁總是在更新的,學習的時候學關鍵的概念,實際上爬蟲程式都是要一直配合網頁調整更新 ~

  • @josephwu1221
    @josephwu1221 2 ปีที่แล้ว +1

    練習一下kkday,發現列表裡面還有大括弧,大括弧裡還有中括弧,頂多只能抓到大標題,文章的小標題沒辦法抓。

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      看起來是很多層的字典和列表組成,應該還是有機會可以繼續往下抓的。

    • @josephwu1221
      @josephwu1221 2 ปีที่แล้ว +1

      @@cwpeng-course 謝謝彭彭老師~但因為初學我還是先放棄了XD" 本來以為{}要用json去解,但看到之後pandas的影片才認出那是字典...

  • @玉米筍
    @玉米筍 4 ปีที่แล้ว +1

    彭彭出新片囉~~~

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      嘿壓,繼續努力中 ~~~~~

  • @snowman6246
    @snowman6246 ปีที่แล้ว +3

    我有用kkday實作出來 有需要code練習的可以跟我說 貼了兩次都不見了不知道為甚麼= =

    • @nicolelee5392
      @nicolelee5392 ปีที่แล้ว

      可以借參考嗎!謝謝你!

    • @whoami-c2y
      @whoami-c2y ปีที่แล้ว

      我也需要,麻煩你了!

    • @劉哲嘉-m6q
      @劉哲嘉-m6q ปีที่แล้ว

      可以借參考嗎!謝謝你!

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      感謝分享 :)

    • @bjrw0120
      @bjrw0120 ปีที่แล้ว +1

      可以也借參考嗎!謝謝你!

  • @jingsuantan2304
    @jingsuantan2304 4 ปีที่แล้ว +1

    来学习咯

  • @Torpedo1215
    @Torpedo1215 3 ปีที่แล้ว

    彭彭老師好, 進入Chrome裡的開發者工具->點Fetch/XHR->Refresh後, Name欄位下 找不到Home-Feed

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      Medium 的網站已經改版過了,你可以參考下一部教學 ~

    • @Torpedo1215
      @Torpedo1215 3 ปีที่แล้ว

      @@cwpeng-course 謝謝

  • @kaokevin1775
    @kaokevin1775 4 ปีที่แล้ว +2

    又有個網站的流量要被彭彭老師帶起來了😏

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      啊 @@ 應該沒有這麼誇張哪 XDDDD

  • @kanu410
    @kanu410 4 ปีที่แล้ว

    老師您好,請問會上載網路爬蟲後的資料到 DATA FRAME 嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      有可能,如果你需要這麼做的話。但必須先想清楚你要的資料格式,整理成符合 DataFrame 的規矩。

  • @sunnyshang4350
    @sunnyshang4350 4 ปีที่แล้ว

    这个讲得很好呀. 宝藏

  • @hin4241
    @hin4241 4 ปีที่แล้ว +1

    老師可以分享一下python的託管網站嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      Heroku 或者是更加專業的雲端服務例如 AWS 上的相關服務都可以託管 Python 的程式 ~

  • @吳宜昀-p4r
    @吳宜昀-p4r 4 ปีที่แล้ว

    老師您好,
    請問如果我找到的資料網址有好幾個怎麼辦?
    因為是動態網站
    一直往下拉就一直出現文章

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      就必須一個一個去做連線,並取得對應的資料哦 ~ 或你仔細觀察資料網址,通常是有規律的 ~

    • @吳宜昀-p4r
      @吳宜昀-p4r 4 ปีที่แล้ว +1

      彭彭的課程 好的 謝謝老師

  • @Victor2016100
    @Victor2016100 3 ปีที่แล้ว

    我在我需要的網頁上面爬不到資料,
    我直接進入網頁發現和我在開發人員工具中看到不同
    拿到一句信息寫「An access token is required」, 我是需要如何得到?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      每個網頁都不同,要各別分析的 ~

  • @chilin2314
    @chilin2314 4 ปีที่แล้ว

    非常感謝老師QQ

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      不會呦,有幫助就好 :)))

  • @daniel870217
    @daniel870217 2 ปีที่แล้ว

    請問彭彭老師 MEDIUM網站是不是變回傳統網站了? 我在原始碼都能找到他的標籤

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      我剛剛看了一下,確實可以直接從原始碼取得沒錯,應該是有改版了。

    • @daniel870217
      @daniel870217 2 ปีที่แล้ว

      @@cwpeng-course 想請問彭彭老師我在爬蟲的時候遇到一個一直沒辦法解決的問題 在medium的網站 我在XHR沒辦法找到頁面標題存放的地方 我之前有找到一次是graphql 的文件 但是他只出現那一次 之後怎麼重新整理都找不到… 希望彭彭老師可以回答我的問題 非常感謝🙏

    • @justinwu483
      @justinwu483 2 ปีที่แล้ว

      @@cwpeng-course 那請問這個影片還適用嗎

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +1

      @@justinwu483 觀念都是適用的,但實際的網站若有變化,那就不能照抄,要按照基本觀念去做出相對的改變 ~

    • @justinwu483
      @justinwu483 2 ปีที่แล้ว +1

      @@cwpeng-course 謝謝老師

  • @sssssss8138
    @sssssss8138 4 ปีที่แล้ว

    谢谢老师。

  • @Xiang00409
    @Xiang00409 3 ปีที่แล้ว

    json.load 和json.loads有分別嗎?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      有哦,前面是 load 輸入串流,後面是 load 字串

  • @hin4241
    @hin4241 4 ปีที่แล้ว

    老師會教unity嗎?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      估計一兩年內都不會呦 ~

  • @ahhhhhhhhhhhhhhhhhhhhhhhhh9963
    @ahhhhhhhhhhhhhhhhhhhhhhhhh9963 4 ปีที่แล้ว

    可以請問一下老師程式最後幾行的key是指什麼呢?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +2

      使用 for 迴圈去逐一取得字典結構中的 key 值,再去對應每個 value 這樣的概念哦 ~

    • @ahhhhhhhhhhhhhhhhhhhhhhhhh9963
      @ahhhhhhhhhhhhhhhhhhhhhhhhh9963 4 ปีที่แล้ว +1

      @@cwpeng-course 了解,謝謝老師。

  • @曾冠瑋-w4v
    @曾冠瑋-w4v 2 ปีที่แล้ว

    老師好
    請問要如何排除列表裡的資料格式問題?
    我使用KKday的網站做這次的ajax練習,爬的是首頁不同活動的標題,程式碼如下:
    import json
    data= json.loads(data) # 把原始的 JSON 格式的資料解析成字典/列表的表示形式
    # 取得 JSON 資料中的標題
    posts=data["data"]["homepage_product_group"]
    for key in posts:
    post=posts[key]
    print(post["title"])
    語法看起來是沒有問題的,但結果顯示
    TypeError: list indices must be integers or slices, not str
    我猜是因為它的標題,有一些除了文字以外特別的符號
    懇請老師幫忙解惑,感謝~🙏

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +3

      迴圈中直接寫 print(key["title"]) 即可