Python 網路連線程式、公開資料串接 By 彭彭

Поделиться
HTML-код
  • Опубликовано: 1 окт 2024
  • 喜歡彭彭的教學影片嗎?點擊「加入」按紐取得更多會員服務哦。
    加入會員: / @cwpeng-course
    1. 網路連線程式,以 HTTP 通訊協定為例
    1.1 使用 urllib.request 模組
    1.2 使用 urlopen(網址) 連線網址
    1.3 使用 read() 讀取資料
    1.4 使用 decode("utf-8") 處理中文資料
    1.5 使用 json 模組,解讀 json 資料格式
    2. 公開資料串接
    2.1 使用台北市政府公開資料 (data.taipei/)
    2.2 搜尋並取得資料的串接網址 (API)
    2.3 測試串接網址,觀察資料格式
    2.4 撰寫程式,自動連線並且擷取想要的資料
    3. 儲存資料到檔案中
    3.1 使用寫入模式開啟檔案
    3.2 使用 utf-8 編碼處理中文資料
    更多學習資訊,
    請到彭彭的課程網站:training.pada-...

Комментарии • 778

  • @Linearsteps
    @Linearsteps 6 лет назад +43

    新北市政府覺得困惑,為何廠商名錄點閱爆表XD

  • @shishanliu5851
    @shishanliu5851 3 года назад +6

    嗨! 彭彭你好,有照老師的程式跑過一遍,但發現公司數量最多只能取到1000家,有看到台北市資料大平台的設定是單次最多1000筆。想請問老師是不是因為這樣的原因才讓資料只能被拿到1000筆,還是在取得公開資料時要另外做設定?

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      這是資料提供方的限制,你可以試著去查看 API 有沒有辦法放寬數量,如果沒辦法,那麼我們也就只能這樣。

    • @shishanliu5851
      @shishanliu5851 3 года назад +1

      @@cwpeng-course 了解!謝謝老師的回覆 👍👍

  • @yoyo_thecats
    @yoyo_thecats 6 лет назад +13

    今天終於跟著影片練習完了,覺得教得非常好
    請問老師後續還會有相關課程嗎?
    或是是否有專注於爬蟲相關應用的付費課程
    謝謝彭彭老師

    • @cwpeng-course
      @cwpeng-course  6 лет назад +9

      會哦,這個確實在規劃中,進階的爬蟲實例和範例我都打算在未來放在 Udemy 的付費課程中 ~ 應該會是近幾個月的事情 :)

    • @qq8745qq
      @qq8745qq 5 лет назад

      @@cwpeng-course 為什麼不放在台灣的平台...例如Tibame或是Hahow??我目前只知道這兩個...

    • @qq8745qq
      @qq8745qq 5 лет назад +5

      @@cwpeng-course 您之後會不會教AI呀??我覺得您上python上的好清楚喔...

  • @朱囹圄
    @朱囹圄 Год назад +2

    老師您的
    with open("data.txt","w",encoding="utf-8") as flie:
    為什麼不用加 mode="w" 就可以執行呢?

    • @cwpeng-course
      @cwpeng-course  Год назад

      第二個參數預設就是 mode 的設定,要明確的寫出來也可以 ~

  • @ronhsienchang
    @ronhsienchang 5 лет назад +3

    社區發展服務-社區發展協會(內湖)
    2019-01-22
    487次
    臺北市內湖科技園區廠商資料。
    2019-01-16
    6574次
    臺北市內湖垃圾焚化廠營運管理及環境品質監測報告
    2018-12-24
    851次
    提供臺北市各區里疏散避難圖資訊
    2018-10-23
    219次
    提供臺北市「中山、內湖區已登記公私有土地筆數面積」統計資料。
    2018-01-22
    144次
    蠻多人關心誰進駐內湖 XD

    • @cwpeng-course
      @cwpeng-course  5 лет назад +2

      哈哈哈,這件事情我有發現 XDDDDD

  • @胡孝嫻-r5x
    @胡孝嫻-r5x 6 лет назад +8

    請問老師後面還會有新的影片是關於python的嘛
    因為老師講解得很清楚 想請問老師
    謝謝彭彭老師

    • @cwpeng-course
      @cwpeng-course  6 лет назад +2

      不客氣 :)
      會哦,還會持續有 Python 相關的教學 ~

  • @niceguy6516
    @niceguy6516 5 лет назад +11

    很實用也講得很清楚,已訂閱期待更豐富的內容 謝謝

  • @weichenchang-rx6rx
    @weichenchang-rx6rx Год назад +2

    想請問老師怎麼解決下面的error,我讀取美國fda的公開api。
    在讀取的時候沒有問題,但在仿造clist=data["result"]["results"] 出現error,error 為:
    Traceback (most recent call last):
    File "/Users/wei/Documents/python_test/package.py", line 59, in
    drugs = data["results"]["reportduplicate"]
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
    TypeError: list indices must be integers or slices, not str
    讀取網址為:
    api.fda.gov/drug/event.json?search=patient.drug.openfda.pharm_class_epc:%22nonsteroidal+anti-inflammatory+drug%22&limit=1
    再麻煩老師解惑了,謝謝您!

    • @cwpeng-course
      @cwpeng-course  Год назад

      我們得實際觀察讀取到的資料結構,去決定後續的程式怎麼寫,不同的資料來源,結構肯定不會一樣 ~

  • @emiliausada4014
    @emiliausada4014 5 лет назад +2

    請問老師,我跟著做下面這段後,
    clist=data["result"]["results"]
    with open("data2.txt","w") as file:
    for company in clist:
    file.write(company["公司名稱"]+"
    ")
    為什麼最後會出現這個error,能怎麼解決?
    Traceback (most recent call last):
    File "14.py", line 45, in
    clist=data["result"]
    " TypeError: string indices must be integers "
    # 我用mac , python 3.7.4

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      目前沒辦法完整判斷,我猜測可能是忘了將從網路上抓到的文字串,透過 json 模組轉換成字典和列表了?

  • @DDSS506
    @DDSS506 Год назад +2

    import ssl
    ssl._create_default_https_context=ssl._create_unverified_context

  • @kwangyuanhii1535
    @kwangyuanhii1535 3 года назад +3

    臺北市內湖科技園區廠商名錄被使用了33740次,裡面都是老師的學生吧

    • @cwpeng-course
      @cwpeng-course  3 года назад +2

      這件事情我有注意到,挺有趣的 XDDD

  • @楊雯涵-j5q
    @楊雯涵-j5q Месяц назад

    老師您好,目前如果直接複製api連結並在瀏覽器另開分頁,似乎就只有前20筆資料(按照影片步驟做也確實只有20筆資料;然而若直接下載csv檔案則會有非常多筆,想問是目前網站給的api本身就有誤嗎?或是我可能遺漏了哪些東西?謝謝老師!

  • @harudog228
    @harudog228 2 месяца назад

    老師請問:
    如果是想印出 "_importdate" 裡面的"date" 是這樣寫嗎?
    for company in clist:
    print(company["_importdate"]["date"])

  • @milkboy164
    @milkboy164 2 года назад +1

    目前照老師的爬取無法爬取資料請問老師還會重新拍一部影片更改過的版本嗎?因為會出現
    urllib.error.URLError:
    錯誤的訊息

    • @cwpeng-course
      @cwpeng-course  2 года назад +3

      Mac 電腦可以在程式最上方加上:
      import ssl
      ssl._create_default_https_context = ssl._create_unverified_context

  • @hjack1ty
    @hjack1ty Год назад +1

    現在好像無法抓出資料
    我發生這個錯誤:
    非常長我只先貼最下方這段,全部貼不上去
    有人知道原因嗎?
    urllib.error.URLError:

    • @cwpeng-course
      @cwpeng-course  10 месяцев назад +1

      如果是 Mac 電腦的話,可以在程式前面加上:
      import ssl
      ssl._create_default_https_context = ssl._create_unverified_context

  • @veronica_chung
    @veronica_chung 10 месяцев назад +1

    老師您好:
    想請問為什麼網路連線在vs code處理會跳出urllib.error.URLError:
    但如果複製到google colab 卻可以正常顯示呢

    • @cwpeng-course
      @cwpeng-course  10 месяцев назад

      如果你使用 Mac,可以在程式碼最上方加上:
      import ssl
      ssl._create_default_https_context = ssl._create_unverified_context

  • @racoon168
    @racoon168 6 лет назад +12

    加油!彭彭老師教得比看書教得好!

    • @cwpeng-course
      @cwpeng-course  6 лет назад +2

      謝謝你這麼說 :) 給我很多動力 ~~~

  • @王子豪-o2n
    @王子豪-o2n 4 года назад +1

    彭彭老師您好
    我在編譯方面有錯誤,實在解決不了,可以幫我看一下嗎 (我用的是mac電腦)謝謝
    終端機顯示:
    wangzihaode-MacBook-Air:python tranning hao0804$ python open-data.py
    Traceback (most recent call last):
    File "open-data.py", line 1, in
    import urllib.request as request
    ImportError: No module named request

    • @cwpeng-course
      @cwpeng-course  4 года назад

      很可能你使用的是 Python 2 的版本問題,如果是 Mac 電腦,確認有安裝新版的 Python 之後,執行時使用:python3 檔案名稱

  • @jp956956
    @jp956956 6 лет назад +3

    感謝彭彭老師
    做完這個課程之後 我有自己再去抓取公車的資訊
    不過鎖定路線名稱之後 抓下來的是整個公車的value
    有辦法鎖定我要的數值就好嗎?
    他路線是按照藍紅綠黃等等 而我只想要抓取紅色的資料
    不過通通都被包裹在"路線名稱"之中
    謝謝彭彭

    • @cwpeng-course
      @cwpeng-course  6 лет назад

      不同的資料,會有不同的格式,你得根據得到的資料去解析出你真正要的資訊。
      每種狀況都不一樣,所以我也沒辦法在這裡幫上什麼忙 ~

  • @hctorng9103
    @hctorng9103 8 месяцев назад +1

    有個問題想請教老師
    在clist =data [“result”][“results”]這行中的clist資料格式是屬於list
    但在下面一行的for迴圈中
    for company in clist:
    file.write(company[“公司名稱”])
    company[“公司名稱”]這個寫法應該屬於字典中鍵與值的對應,但為什麼list也可以使用這個方法找出company對應的值,謝謝老師

    • @leee8046
      @leee8046 7 месяцев назад

      同問

    • @cwpeng-course
      @cwpeng-course  2 месяца назад

      單純是 for 迴圈的基礎語法:把列表中的資料一一取出放到前面的變數名稱中,執行迴圈。變數名稱也不一定要叫做 company,要叫做 abc 也行。

  • @zhtpiaoxue
    @zhtpiaoxue 3 года назад +7

    这节课太棒了,就像实战一样,顺利得到程式结果,有一种成就感。

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      耶,很高兴对你有帮助哦 :)

  • @DAS-kg1vz
    @DAS-kg1vz 2 года назад +1

    一直出現"AttributeError: partially initialized module 'json' has no attribute 'load' (most likely due to a circular import)",無法下一步

    • @DAS-kg1vz
      @DAS-kg1vz 2 года назад +2

      已解決,原來是我的檔名取成json!!

    • @cwpeng-course
      @cwpeng-course  2 года назад

      有解決就好 :)

  • @emmaulala1495
    @emmaulala1495 4 года назад +3

    台北市政府的開放資料平台從107/11/1開始就換成現在的新平台了!!!QAQ
    畫面完全不一樣 裡面的內湖廠商名單也只剩下CSV擋了!!! 只能下載下來變成EXCEL
    拜託老師教學CSV黨如何連線串接~QQQQQ

    • @cwpeng-course
      @cwpeng-course  4 года назад +5

      感謝 @Winter 的回應 :)
      確實好像 JSON 的資料來源不見了,只好再看看什麼時候來錄另外一段範例 @@a

    • @test12363222
      @test12363222 4 года назад +5

      @@Jimmy-qh5qi 感謝!!
      只是政府又要疑惑為何突然很多人下載動物園的動物資料XDD

    • @LoniChou
      @LoniChou 4 года назад +7

      可以在市政府開放資料搜尋畫面中篩選JSON的資料(我用了臺北市食材登錄平台的資料),API網址在下載資料的右邊預覽按鈕(按下去會顯示API網址),然後因為資料內容有一些不太一樣,所以我自己修改了一部分的編碼內容僅供參考
      #由於台北市政府網站更新,所以修改了採用的資料與部分寫法
      import urllib.request as request
      import json
      src="data.taipei/api/getDatasetInfo/downloadResource?id=8a569b5b-0cb1-4c7f-a064-780b3301354c&rid=9744ea1c-aafb-471c-8bb8-04f398ad415a"
      with request.urlopen(src) as response:
      data=json.load(response) #利用json模組處理json資料格式
      print(data)
      #抓取特定資料
      #clist=data["result"]["results"]#指定資料所在的巢狀字典,由於參考資料改變,這一行僅供參考
      for market in data:
      print(market["夜市名稱"]) #取得夜市名稱的資料
      with open("market.txt", "w", encoding="utf-8") as file: #開啟檔案並寫入資料
      for market in data:
      file.write(market["夜市名稱"]+"
      ")

    • @pennylins
      @pennylins 4 года назад

      @@Jimmy-qh5qi 感謝你 真的可以用XDDD

  • @徐詠婕-t3r
    @徐詠婕-t3r 2 месяца назад

    老師好,我跟著步驟操作,但不知道為什麼公司資料只跑出前20筆(但內容都是對的!)

  • @Conan_Chang
    @Conan_Chang 3 месяца назад +1

    老師您好:
    想請教如果我想要同時印出公司名稱以及統編
    我應該要怎麼寫才對
    謝謝老師

    • @cwpeng-course
      @cwpeng-course  2 месяца назад +1

      print(company["公司名稱"], company["統編"])

    • @Conan_Chang
      @Conan_Chang 2 месяца назад +1

      @@cwpeng-course 謝謝老師~

  • @singo1232001
    @singo1232001 3 года назад +1

    哈哈 今年2021/7月 那個名錄 的瀏覽次數66992次 其他資料只有10幾次大多個位數
    所以估計平均每年27000次點擊 一天就會有70~80幾人 因為看了這個教學 跑去點網頁
    網頁製作者保證滿頭問號xd

    • @cwpeng-course
      @cwpeng-course  3 года назад

      哈哈哈,這件事情確實挺有趣的,希望不會造成對方的困擾才好 @@a

  • @8210141
    @8210141 4 года назад +2

    老師你好
    我有個問題想問一下
    這邊的 decode("utf-8")
    為甚麼不能使用 上次提到的
    encoding ("utf-8")
    utf-8 不是任何形式都可以用嗎?
    還是前面的英文單字 也是有影響?

    • @cwpeng-course
      @cwpeng-course  4 года назад +2

      decode 和 encode 是不同的意思,確實會有影響哦 ~~~

  • @a22885574
    @a22885574 Год назад +1

    想請問老師,為什麼在 12:14 那邊的
    data=json.load(response)
    後面不用加入.decode(utf-8)
    就能顯示中文了呢?

    • @cwpeng-course
      @cwpeng-course  Год назад +1

      可以想成我們呼叫的函式內部幫我們處理掉解碼的部分了 ~

  • @siggshakaski5944
    @siggshakaski5944 Год назад +1

    發現內湖科技園區廠商名錄點擊數遠高於其他各項

  • @yaochihli2263
    @yaochihli2263 2 года назад +1

    大有回饋
    with open("companies.txt", mode="r", encoding="utf-8") as file:
    print(file.read())

  • @apenguin0316
    @apenguin0316 Год назад +1

    謝謝彭彭老師
    想請問為什麼老師在連線台灣大學的網址時,不用import ssl就可以成功連接上?

    • @cwpeng-course
      @cwpeng-course  Год назад +2

      Mac 的憑證要特別處理,Windows 的不用 ~

  • @lovernon821
    @lovernon821 4 года назад +5

    每個細節都講得很清楚,有不懂的地方看幾遍配上解說就很好理解!

  • @beamtec2100
    @beamtec2100 5 лет назад +3

    請問老師為何我在data.txt擋中公司名稱只有1000筆的資料,但是您的教學影片當中有5000多筆,不解?請老師解惑!

    • @cwpeng-course
      @cwpeng-course  5 лет назад

      應該是政府的資料來源,抓取一次被限制在 1000 筆資料了 ~

    • @beamtec2100
      @beamtec2100 5 лет назад

      @@cwpeng-course 謝謝!

  • @ud1279
    @ud1279 5 лет назад +6

    可以試試"統編"會發現跑不出來喔
    因為有隻蟲藏在裡面摟 呵呵

    • @cwpeng-course
      @cwpeng-course  5 лет назад +2

      是的,裡面有隻蟲 XDDDD

    • @Grapefruit-qs8yo5rg4t
      @Grapefruit-qs8yo5rg4t 5 лет назад +1

      夷,為什麼我的跑得出來??

    • @ud1279
      @ud1279 5 лет назад +1

      這隻蟲子被堪稱史上最兇殘的防偽神奇寶貝沒有之一 趕緊收服牠吧
      收服之後把牠有規律的放個幾千隻藏在你的文章里就能知道你的文章會被copy到哪裡去了

    • @Grapefruit-qs8yo5rg4t
      @Grapefruit-qs8yo5rg4t 5 лет назад

      @@ud1279 我還是沒有很清楚ㄟ,可以麻煩樓主展示一下蟲子長甚麼樣子嗎?

    • @ud1279
      @ud1279 5 лет назад +2

      ​@@Grapefruit-qs8yo5rg4t 在"統編"這句話當中藏了一隻沒有軀殼的蟲蟲,因為沒有軀殼所以很難形容牠的長相,
      總之你去
      data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&rid=296acfa2-5d93-4706-ad58-e83cc951863c
      找到"統編"把 "統 copy到筆記本,然後按方向鍵的左右,你會發現要多按一下,因為牠就藏在這兩個字之間,趕緊收伏牠吧

  • @廣場上的鴿子
    @廣場上的鴿子 5 лет назад +3

    老師在用第一個台灣大學的網址時應該標註,網址下有底線才是有效網址,不然單純在visual code打出來的網址他似乎讀取不到

    • @cwpeng-course
      @cwpeng-course  5 лет назад +2

      感謝您的建議 ~

    • @jiahung7281
      @jiahung7281 Год назад

      感謝解惑,剛一直卡在這^^ 複製一下 貼上就好了

  • @nanayang3736
    @nanayang3736 5 лет назад +2

    我一直抓不到網頁的html檔...
    總是跑很多urllib.error
    Certificate verify failed
    可是到底我要開什麼權限給它嗎QQ

    • @廣場上的鴿子
      @廣場上的鴿子 5 лет назад

      我也是是版本更新嗎

    • @cwpeng-course
      @cwpeng-course  5 лет назад +4

      如果你是 mac 電腦,試著在程式前面加上:
      import ssl
      ssl._create_default_https_context = ssl._create_unverified_context
      然後執行時要用:python3 檔案名稱

    • @lucaszhi3963
      @lucaszhi3963 4 года назад

      @@cwpeng-course 感謝解決 但想問一下老師這段是什麼意思

  • @陳莘傑
    @陳莘傑 4 месяца назад

    謝謝老師的精彩解說,讓我可能迅速的了解,但是在網路連線這一章節一開始就卡住了 ,我用你網路連線跟資料串接的語法,重複打一遍,結果卻無法執行顯示錯誤,我確定有連網路@@,請問這跟版本有差異嗎?還是我哪邊錯了? 卡死中

  • @weicheihma9101
    @weicheihma9101 4 года назад +3

    應該是版本更新問題吧
    第16行使用'w'會造成覆寫而不是往後追加
    改成'a'就沒問題了
    參考:網路資料

    • @cwpeng-course
      @cwpeng-course  4 года назад +3

      w 會複寫,a 會追加沒錯 ~ 謝謝你的分享 :)

  • @韓嗨-g4y
    @韓嗨-g4y 3 года назад +1

    想請問澎澎老師
    為什麼在明明都在for迴圈裡面,在程式中直接print不用+"
    ",就可以直接換行
    而在寫入另一個檔案("data.txt")中,卻要使用+"
    " 來換行?才會一列一列的
    是觀察而得的嗎
    這是您的程式:
    with open("data.txt","w", encoding="utf-8") as file:
    for company in clist:
    print(company["公司名稱"])
    file.write(company["公司名稱"]+"
    ")

    • @cwpeng-course
      @cwpeng-course  3 года назад +3

      print 本身會自己帶有換行的效果,但是 write 不會。

    • @韓嗨-g4y
      @韓嗨-g4y 3 года назад +1

      @@cwpeng-course 謝謝老師 !

  • @小米-r4i
    @小米-r4i Год назад +1

    不好意思,想請問一下彭彭老師,我突然想到在資料傳輸的過程中會有安全性的問題嗎?

    • @cwpeng-course
      @cwpeng-course  Год назад

      如果網址是 https 開頭通常就大致上安全。

  • @cedricchen5845
    @cedricchen5845 2 года назад +1

    彭彭老師您好,想請問一下,我使用您的範例程式分別在macOS跟Windows系統上的vscode執行,macOS會編譯失敗,而windows則能印出結果,請問macOS有需要安裝其他套件嗎?謝謝

    • @Yo-yd1rw
      @Yo-yd1rw 2 года назад

      同問 我也適用macOS的vscode跑 從印出公司名稱那邊就出現問題 格式跟彭彭老師的結果會不一樣 會跑出亂碼QQ 想請問該怎麼解決?謝謝

    • @cwpeng-course
      @cwpeng-course  2 года назад +1

      要看看實際的錯誤訊息哦,另外 Mac 執行時請使用 python3 指令 ~

  • @yu-chiehlee8031
    @yu-chiehlee8031 10 месяцев назад +1

    為什麼 for 迴圈 會突然有一個company ? 是在哪裡定義的?

    • @cwpeng-course
      @cwpeng-course  2 месяца назад

      就是定義在 for 迴圈的語法,那裡就是定義

  • @erichsieh4677
    @erichsieh4677 4 года назад +1

    老師好
    有一個概念上的問題想請教老師
    請問用網路連線程式、公開資料串接 來取得資料 會有哪些好處 相對於先下載資料(可能是csv or xlsx etc ...)然後在寫入python
    因為我是從R轉換成python的使用者 所以很多想法都還會從R出發 慢慢在和python磨合中
    還煩請老師幫忙解答 謝謝

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      直接用程式串接,主要的好處在於資料源如果有更新,程式就能夠直接取得最新的資料,不用再手動去下載一次 ~

  • @huanggg9497
    @huanggg9497 2 года назад +1

    老師 請問如何分辨資料是屬於哪一種格式(JSON,CSV)的呢,是看排列方式嗎。

    • @cwpeng-course
      @cwpeng-course  2 года назад

      對哦,直接打開文件,觀察資料的格式。例如 CSV 很明顯就是用逗號隔開的表格式資料。

  • @vanessaliangchen4906
    @vanessaliangchen4906 9 месяцев назад +1

    老师你好,我不知道是因为版本原因还是什么,但是它的资料印不出来,它印出来了一堆乱码和错误。

    • @cwpeng-course
      @cwpeng-course  2 месяца назад

      可能你执行了 Python 2 版本,如果是 Mac 可以使用 python3 档案名称,来执行程式

  • @孟令夏
    @孟令夏 5 месяцев назад

    彭彭老师下午好!
    我在跟着老师的视频学习,在爬台北公开资料,代码都是参照老师的一个一个敲打的,为何终端那里报错呢?例如:self.sock = self._context.wrap_socket(self.sock,

  • @朱豐懋-u4i
    @朱豐懋-u4i 2 года назад +1

    老師好,想請問老師
    import urllib.request as request
    ImportError: No module named request
    已下載python3.10.2(mac)
    但一直跑出上面的錯誤訊息
    想請問老師是哪個部分需要改進
    謝謝老師

    • @q0988138683
      @q0988138683 2 года назад +1

      加上這個
      import ssl
      ssl._create_default_https_context = ssl._create_unverified_context
      #如果您不是在尋找經過驗證的 SSL,那麼只需使用未經驗證的 SSL
      版本更新過了

    • @cwpeng-course
      @cwpeng-course  2 года назад

      感謝 @Jay 的回應。如果是 Mac 的話,執行時要輸入:python3 檔案名稱

    • @Yuki-pg8sb
      @Yuki-pg8sb 2 года назад

      @@q0988138683 太感謝了!

    • @seanchen909
      @seanchen909 2 года назад

      @@q0988138683 同樣感謝大大 小小mac新手路過!!

  • @JuanJuan-vg4ow
    @JuanJuan-vg4ow 5 лет назад +2

    彭彭老師好,請問如果同時print出統編和公司名稱,應該怎麼寫?用for迴圈卡住...謝謝

    • @cwpeng-course
      @cwpeng-course  5 лет назад +7

      就依樣畫葫蘆:
      print(company["\ufeff統編"], company["公司名稱"])

  • @我想學英文
    @我想學英文 3 года назад +1

    模組 module: 獨立的程式檔案,可以重複使用

  • @陳偉傑-f6h
    @陳偉傑-f6h 6 лет назад +3

    老師,也可以順便教pands的相關影片,也預祝你破一萬!!!

    • @cwpeng-course
      @cwpeng-course  6 лет назад

      哈哈哈,謝謝你關於教學方向的建議和祝福,我還沒注意到快破一萬的說 XD

  • @蕭開午
    @蕭開午 2 года назад +1

    api 存取是什麼東西 彭彭可以稍微介紹一下嗎?

    • @cwpeng-course
      @cwpeng-course  2 года назад

      最基本的理解就是網路上有些人會提供能夠用網址連線得到的資料,我們稱之為 API。我們可以透過 Python 程式去連結這樣的 API。

  • @hsinnanlai6969
    @hsinnanlai6969 4 года назад +3

    原來要抓出統編要打上print(company["\ufeff統編"])
    用網頁原始碼看不到,但是透過老師說的→
    data=json.load(response)
    print(data)
    就會看的到了 ex:'\ufeff統編': '12978019'
    想了很久,但複習課程很有幫助,謝謝彭彭老師。

    • @cwpeng-course
      @cwpeng-course  4 года назад +2

      謝謝你的分享 :) 原始資料總是會有很多意想不到的狀況,在也是工程師存在的理由 XDDDD

    • @i-fanchang348
      @i-fanchang348 4 года назад

      終於知道為什麼統編出不來了!!!!
      謝謝

  • @HsuMark
    @HsuMark 5 лет назад +3

    感謝彭彭老師~一路看到這個檔案~從0開始真的受益良多~
    在練習的時候發現有的公開資料在寫入檔案的時候會有出現底下的錯誤:
    TypeError: can only concatenate str (not "NoneType") to str
    請問這樣要怎麼處理?謝謝

    • @HsuMark
      @HsuMark 5 лет назад +2

      哈~知道了~自問自答~加一個判斷是不是none就好了~感謝老師~繼續往下學習

    • @cwpeng-course
      @cwpeng-course  5 лет назад +1

      有解決就好嘍 :)

  • @兼听明
    @兼听明 3 года назад +1

    data=response.read().decode("utf-8")
    已解决

  • @寶聚盆
    @寶聚盆 2 года назад +1

    老師你好.
    不知道老師能出一集課程.來教導如何用Python建立資料庫.輸入資料.查詢資料...作業
    感謝老師如此詳細且精彩的課程

    • @cwpeng-course
      @cwpeng-course  2 года назад

      會哦,在資料庫課程的後面會有這方面的介紹,也謝謝你的回饋呦 :)

  • @chitiffany2464
    @chitiffany2464 4 года назад

    請問要如何下載 request package
    以下是我顯示在terminal的error
    --------------------------------------------------------------
    Traceback (most recent call last):
    File "Jul21.py", line 6, in
    import urllib.request as request
    ImportError: No module named request

    • @cwpeng-course
      @cwpeng-course  4 года назад

      可能是 Python 版本的問題,確定有安裝新版的 Python 3,如果是 Mac 電腦,執行時使用:python3 檔案名稱

  • @chhan0958
    @chhan0958 2 года назад +1

    首先感謝彭彭老師的教學影片
    我完全是新手,一步一步地看著影片到這裡
    有時候要想好久才了解程式碼的運作QQ
    這個台北市政府的APi好像無法使用了
    請問有哪位朋友可以提供其他的API嗎

    • @cwpeng-course
      @cwpeng-course  2 года назад

      我記得留言裡面好像有些其他的連結可以使用 ~

    • @allenine8
      @allenine8 2 года назад

      可以使用哦。。。因為有SSL 可以參考相關網友的寫法。。。是可以讀取資料的。。

  • @黃瑞祥-j2x
    @黃瑞祥-j2x 8 месяцев назад +1

    這陣子心血來潮想學程式,看到老師的解說從最一開始不怎麼了解程式到現在有初步的了解,後續會再跟著老師學習!

    • @cwpeng-course
      @cwpeng-course  8 месяцев назад

      謝謝你的回饋,很高興對你有幫助,一起努力 :)

  • @鄒佳臻-q4c
    @鄒佳臻-q4c 3 года назад

    不好意思
    請問澎澎老師 我照著課程上面打 發現錯誤如下
    "Traceback (most recent call last):
    File "", line 2, in
    data=json.load(response)
    File "C:\Python34\lib\json\__init__.py", line 268, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
    File "C:\Python34\lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))
    TypeError: the JSON object must be str, not 'bytes'"
    請問要如何解決呢?
    謝謝您的教學影片~
    獲益良多~

    • @cwpeng-course
      @cwpeng-course  3 года назад

      可能需要你的完整程式碼來判斷原因哦 ~

  • @張育嘉-q1k7t
    @張育嘉-q1k7t 3 года назад +1

    謝謝老師的教學~~
    在練習的時候發現網站的code很難看懂一個資料是在哪一層的字典裏面
    除了用肉眼自己找
    有沒有一個程式的方法可以找出一個資料 是被哪幾層字典包裹起來的
    sorry文字表達不太好
    希望你看得懂我在講甚麼

    • @cwpeng-course
      @cwpeng-course  3 года назад +2

      利用 Chrome 的開發人員工具,裡頭有個 Network 的標籤,可以觀察到瀏覽器的網路連線和結果,他會幫你把資料整理的很容易看 ~

    • @張育嘉-q1k7t
      @張育嘉-q1k7t 3 года назад +1

      @@cwpeng-course
      謝謝!
      我試試看

  • @Gary-fq1ti
    @Gary-fq1ti 4 года назад +1

    File "open-data.py", line 1, in
    import urllib.request as request
    ImportError: No module named request
    请问彭彭老师:这样是哪里出了问题呢?

    • @cwpeng-course
      @cwpeng-course  4 года назад

      这可能是版本的问题,你执行的是 Python 2 版本。确定安装新版的 Python 3 之后,Mac 执行时使用:python3 档案名称

    • @Gary-fq1ti
      @Gary-fq1ti 4 года назад +1

      @@cwpeng-course Thank you!

  • @임푼군-c4g
    @임푼군-c4g 2 года назад

    老師您好,執行過程中,一直遇到SSL: CERTIFICATE_VERIFY_FAILED with urllib的error,後來安裝了sudo /Applications/Python\ 3.10/Install\ Certificates.command之後有成功解決問題,但是想請問為什麼會出現這個錯誤呢?

    • @cwpeng-course
      @cwpeng-course  Год назад

      如果要連線到 HTTPS 的網址,Python 本身要安裝 SSL 憑證,但某些 Python 版本和作業系統沒有預設安裝這個憑證,所以需要額外做處理。

  • @jimmy-li6pc
    @jimmy-li6pc 3 года назад +1

    TypeError: string indices must be integers請問各位大大這句話是甚麼意思

    • @zacharyokaforlee
      @zacharyokaforlee 3 года назад +1

      “打字错误:字串的索引必须是整数”
      字面意思 hh

    • @cwpeng-course
      @cwpeng-course  3 года назад

      感謝 @Zachary Lee 的回應 :)

  • @arguskao
    @arguskao 2 года назад

    如果要抓名字和地址呢?我試著存檔案兩個以上的資料種類就失敗,但是印出就可以,why?

    • @cwpeng-course
      @cwpeng-course  2 года назад

      印出可以的話代表有抓到,要存到檔案中也可以,有問題的話要看是否有什麼細節的錯誤,然後修正程式解決。

  • @張小照
    @張小照 28 дней назад

    第15級啦

  • @許景翔-l2i
    @許景翔-l2i Год назад

    我想要請問我在連線台大網址的時候出現異常,但填入例如google網址的時候就正常運作,請問是因為原始碼中有中文沒有辦法進行運作嗎? 想知道有什麼方式可以解決嗎呢?(有找到parse和quote,但不知道如何使用?)
    謝謝彭彭老師

    • @cwpeng-course
      @cwpeng-course  Год назад

      可能要把程式碼貼出來看看比較有機會幫得上忙 ~

  • @bigo.kn1599
    @bigo.kn1599 Год назад

    老師您好,我卡在台灣大學網站步驟
    錯誤碼顯示:urllib.error.URLError:
    請問這怎麼解決呢?

  • @georgechiu4533
    @georgechiu4533 2 года назад +1

    澎澎老師,我不知道我為什麼連最基本的連線都做不了,我照著您敲代碼,試著run,但是出錯誤:
    Traceback (most recent call last):
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1342, in do_open
    h.request(req.get_method(), req.selector, req.data, headers,
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1255, in request
    self._send_request(method, url, body, headers, encode_chunked)
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1301, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1250, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1010, in _send_output
    self.send(msg)
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 950, in send
    self.connect()
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1424, in connect
    self.sock = self._context.wrap_socket(self.sock,
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 1040, in _create
    self.do_handshake()
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1122)
    During handling of the above exception, another exception occurred:
    Traceback (most recent call last):
    File "/Users/bokmanchiu/Library/Mobile Documents/com~apple~CloudDocs/G-python/run.py", line 3, in
    with request.urlopen(scr) as response: #連線
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 214, in urlopen
    return opener.open(url, data, timeout)
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 517, in open
    response = self._open(req, data)
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 534, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 494, in _call_chain
    result = func(*args)
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1385, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
    File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", line 1345, in do_open
    raise URLError(err)
    urllib.error.URLError:

    • @cwpeng-course
      @cwpeng-course  2 года назад +2

      試著在程式碼的最上方加入以下程式:
      import ssl
      ssl._create_default_https_context = ssl._create_unverified_context

  • @hspss897306
    @hspss897306 6 лет назад +1

    可能因為對JSON格式不熟,看完有些疙瘩
    特別是這一行:
    clist=data["result"]["results"]
    小弟選擇的檔案是:新竹市AED心臟電擊器設置地點
    opendata.hccg.gov.tw/dataset/d55cf39b-bebc-488f-9a86-4f36e2865d3f/resource/111d2c30-a788-41f9-8ebd-0798fa69f261/download/20180328091122254.json
    檔案中沒有"result" & "results" 字眼
    將程式碼改成
    clist=data #["result"]["results"]將後面的result註解掉
    雖然能順利執行 但到底這一行程式碼的作用是什麼?
    心裡不舒服 希望彭彭老師能出詳解 感謝!~

    • @cwpeng-course
      @cwpeng-course  6 лет назад +1

      建議就閱讀一下 JSON 的格式是怎麼回事。
      然後比較我們影片中用的資料,和你連結的這個資料,在階層組織上有什麼不同。
      在資料處理的領域上,認真的解讀原始資料是重要的工作之一。

    • @chenterry148
      @chenterry148 6 лет назад +4

      import urllib.request as request
      import json
      src="opendata.hccg.gov.tw/dataset/d55cf39b-bebc-488f-9a86-4f36e2865d3f/resource/111d2c30-a788-41f9-8ebd-0798fa69f261/download/20180328091122254.json"
      with request.urlopen(src) as response :
      data = json.load(response)
      clist=data
      with open("data4.txt","w",encoding="utf-8") as file :
      for company in clist:
      file.write(company["場所名稱"]+"
      "+company["AED放置地點"]+"
      ")
      print(company["場所名稱"]+"
      "+company["AED放置地點"]+"
      ")

  • @葉彥谷-e7r
    @葉彥谷-e7r 3 года назад

    老師不好意思 我網址讀出來結果一直都是
    urllib.error.URLError:
    好像是不知道 https這個字元? 一隻找不到解決方法...TT

  • @我想學英文
    @我想學英文 3 года назад +1

    模組 module
    import 模組名稱

  • @kaokevin1775
    @kaokevin1775 4 года назад +1

    老師請問一下
    import urllib.request as request
    import json
    src="data.taipei/api/getDatasetInfo/downloadResource?id=8a569b5b-0cb1-4c7f-a064-780b3301354c&rid=9744ea1c-aafb-471c-8bb8-04f398ad415a"
    with request.urlopen(src) as response:
    data=json.load(response) # 利用 json 模組處理 json 資料格式
    print(data)
    #抓取特定資料
    clist=data["result"]["results"]
    for market in clist:
    print(market["夜市名稱"]) #取得夜市名稱的資料
    with open("market.txt", mode="w", encoding="utf-8") as file: # 開啟檔案並寫入資料
    for market in clist:
    file.write(market["夜市名稱"]+"
    ")
    會出現以下錯誤訊息
    Traceback (most recent call last):
    File "crawler.py", line 8, in
    clist=data["result"]["results"]
    TypeError: list indices must be integers or slices, not str
    請問老師這個要如何解決

    • @cwpeng-course
      @cwpeng-course  4 года назад

      你抓的資料結構和我範例中的不一樣,可能得配合你抓到的資料來寫 #抓取特定資料 後面的程式。

    • @kaokevin1775
      @kaokevin1775 4 года назад

      彭彭的課程 因為那個內湖科技園區的api好像不能夠下載了

    • @cwpeng-course
      @cwpeng-course  4 года назад +1

      @@kaokevin1775 我有發現 QQ 使用新的資料,就必須根據資料的格式來寫新的程式,大致上是這樣的概念。

    • @kaokevin1775
      @kaokevin1775 4 года назад

      @@cwpeng-course
      老師我後面又找了一個台北市雨量站的API下面是code:
      import urllib.request as request
      import json
      src="117.56.59.17/OpenData/API/Rain/Get?stationNo=&loginId=open_rain&dataKey=85452C1D"
      with request.urlopen(src) as response:
      data=json.load(response) # 利用 json 模組處理 json 資料格式
      print(data)
      #抓取特定資料
      clist=data["count"]["data"]# 指定資料所在的字典,由於參考資料改變,這一行僅供參考
      for stationName in data:
      print(stationName["stationName"]) #取得臺北市雨量站名稱的資料
      with open("market.txt", "w", encoding="utf-8") as file: # 開啟檔案並寫入資料
      for stationName in data:
      file.write(stationName["stationName"]+"
      ")
      但是有個錯誤如下:
      TypeError: 'int' object is not subscriptable
      請問老師這個問題要怎樣解決
      補充:
      台北市雨量站及時資料API
      117.56.59.17/OpenData/API/Rain/Get?stationNo=&loginId=open_rain&dataKey=85452C1D
      台中大肚台地生物水域調查API
      datacenter.taichung.gov.tw/swagger/yaml/387010000A
      這兩個跟老師的教材不同是不是就不能使用巢狀字典儲存

    • @z790429
      @z790429 4 года назад +1

      @@kaokevin1775 因為這一個資料的結構跟老師的範例不同
      他在data下面就是列表了
      所以可以參考以下
      ------------------------------------------------------------------
      #串接、擷取公開資料
      import urllib.request as request
      import json
      src="117.56.59.17/OpenData/API/Rain/Get?stationNo=&loginId=open_rain&dataKey=85452C1D"
      with request.urlopen(src) as response:
      data=json.load(response) #利用json模組讀取資料
      #取得觀測站名稱, 並寫入檔案(weather.txt)
      slist=data["data"]
      with open("weather.txt","w", encoding="utf=8") as file:
      for name in slist:
      file.write(name["stationName"]+"
      ")

  • @蔡淑慧-w8y
    @蔡淑慧-w8y Год назад

    老師您好
    如果我建一個平台
    人家從我的平台去登入另一個網站
    是不是就可以把我的平台當為推薦
    或是對方的cookie中就有我的平台網址

    • @cwpeng-course
      @cwpeng-course  Год назад

      程式上有機會做到,但實際上有沒有紀錄要看這個追蹤系統有沒有建起來 ~

  • @EnnisHung
    @EnnisHung Год назад

    想請問老師如果出現以下問題該如何處理?
    程式碼都是按照老師的方式打
    後來json那段也有改成data=json.loads(response.read().decode("utf-8"))
    但依舊跑出這種情況
    想問問老師該如何處理
    File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    • @cwpeng-course
      @cwpeng-course  Год назад

      看起來是沒有順利抓取到資料,可能要再仔細檢查一下前面的程式碼。

  • @zhongchengchen9178
    @zhongchengchen9178 2 года назад +1

    彭彭老師您好!謝謝提供這麼棒的課程教學
    請問老師為什麼將公司名稱改成統編就跑錯誤KeyError,公司地址就可以順利產生。

    • @aaaffnnn6121
      @aaaffnnn6121 2 года назад

      影片老師有說原始的統編的key處理不乾淨,換成"\ufeff統編"再輸入run一次試試看

    • @cwpeng-course
      @cwpeng-course  2 года назад +1

      感謝 @AAAFFnnn 分享 :)

  • @我想學英文
    @我想學英文 3 года назад +1

    import 模組名稱.函式名稱

  • @陈小生-d7v
    @陈小生-d7v 4 года назад

    import urllib.request as request
    import json
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context
    src="openapi.land.moi.gov.tw/WEBAPI/LandQuery.ashx?mode=QueryReason&UNIT=AA:80"
    with request.urlopen(src) as response:
    data=json.load(response)
    print(data)
    回传的信息
    File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37-32\lib\urllib
    equest.py", line 1319, in do_open
    raise URLError(err)
    urllib.error.URLError:
    老师上面输入的代码,下面回传的信息。请问这种情况需要怎么解决呢

    • @cwpeng-course
      @cwpeng-course  4 года назад

      错误讯息是指没有办法正确解析网址,可能是网址有误,或暂时的网路问题,你可以多试几次看看。

  • @jie4294
    @jie4294 2 года назад

    你好我想问一下我在网络连接的部分跟你的程序一样,但跑不到,会显示 raise URLError('unknown url type: %s' % type)
    urllib.error.URLError:
    请问是什么问题呢,我的是python 3

    • @cwpeng-course
      @cwpeng-course  2 года назад

      我无法从这个错误讯息中判断,可能需要你原始的程式码来看看 ~

  • @ddssus1
    @ddssus1 3 года назад

    - 網路連線公開資料連接
    - 網路連線 載入模組
    - 下載特定網址資料
    - 公開資料 範例;; 台北市政府公開資料
    - 確認資料格式
    - 解認json格式

  • @Jefferykk
    @Jefferykk 3 года назад +1

    12:16
    請問老師
    抓下來的公開資料內有中文為何不用decode就能顯示中文呢
    會不會有需要decode的狀況呢

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      主要是 json.load() 這個方法幫我們順便解碼掉了哦 ~ 如果不是用這個方法,確實有可能會需要明確的寫 decode() 指令 ~

    • @Jefferykk
      @Jefferykk 3 года назад

      @@cwpeng-course 謝謝老師回復!

  • @林亭旭-v5f
    @林亭旭-v5f Год назад

    臺北市內湖科技園區廠商名錄 使用次數 74153次,有人知道原因嗎? 其他資料都使用兩位數或三位數而已。

    • @cwpeng-course
      @cwpeng-course  11 месяцев назад

      只能感謝機關整理和提供資料了 XDDDD

  • @邱晉威
    @邱晉威 6 лет назад +1

    老師您好:看了你的影片對我這初學者來說受益良多,但是有幾個問題想請教您指點一下。
    1.網路上open data資料如果1小時更新一次,我要連續抓取不監斷(1小時抓一次),請問該怎處理?
    2.如果成功抓取下來,我又不想覆蓋之前資料想要同個資料檔案下排序下去,請問該怎處理?
    3.下載後的資料,依時間來說我只想要留取最近24小時的資料,等於超過1天以前資料會自動刪除,請問該怎做處理?
    謝謝彭彭老師

    • @cwpeng-course
      @cwpeng-course  6 лет назад

      1. 可以使用作業系統中的排程功能,通稱 cron job
      2. 打開檔案時使用 append mode,例如 open("test.txt", "a")
      3. 一樣,可以使用上述作業系統中的排程功能,每天跑一個程式來清除過期的資料。當然你在儲存資料的時候就要帶上時間的資訊。

    • @邱晉威
      @邱晉威 6 лет назад +1

      謝謝老師的意見指導,我在試試看^_^

    • @邱晉威
      @邱晉威 6 лет назад

      謝謝老師指點的方向,我試成功了!!希望未來可以跟老師學習到更多更實用的技巧^_^

    • @cwpeng-course
      @cwpeng-course  6 лет назад

      恭喜成功 :)

  • @pei-chiwang3021
    @pei-chiwang3021 5 лет назад +1

    彭彭老師,請問讀取檔案是用json格式的話,最後在把公司名稱輸出到文字檔的時候不需要使用json嗎?

    • @cwpeng-course
      @cwpeng-course  5 лет назад +1

      不需要哦,這是兩個獨立的動作。
      讀取檔案,是要配合來源檔案的格式。
      輸出檔案,是按照我們自己的想法輸出就可以。

  • @楊凱翔-h9o
    @楊凱翔-h9o 2 года назад

    老師請問為什麼我輸入clist=data["result"]["results"]時,他除錯顯示
    clist=data["result"]["results"]
    KeyError: 'result'

    • @cwpeng-course
      @cwpeng-course  2 года назад

      可能要看你的完整程式碼才能判斷哦 ~

  • @wanglead410
    @wanglead410 6 лет назад +1

    彭彭老師,为什么我写的出现这个提示
    UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 30687: illegal multibyte sequence
    找到原因了,用python3.5自带编译器可以正常显示,但不知道在Visual Studio Code 中怎么修正。

    • @cwpeng-course
      @cwpeng-course  6 лет назад

      感谢你的分享 :)
      我的程式中好像没有用到 gbk 这个编码,抓取的资料包含繁体中文,有点不太能确定你那边的状况,不过你有初步解决问题我觉得很棒。

    • @wanglead410
      @wanglead410 6 лет назад

      感谢彭彭老師, 我可能是安装Visual Studio Code的过程中出现了问题,不知道怎么解决
      彭彭老師能不能出个安装Visual Studio Code的说明

    • @cwpeng-course
      @cwpeng-course  6 лет назад

      好哦,有时间的话我会出一下 ~

  • @我想學英文
    @我想學英文 3 года назад +1

    載入> 使用
    先載入模組,在使用模組中的函式或變數

  • @凱恩-x9k
    @凱恩-x9k 3 года назад +1

    請問一下,這樣算網路爬蟲嗎?

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      通常不會這樣說,但很接近沒錯。

  • @Paulsxb
    @Paulsxb 2 года назад

    完全和你一样,但是出错了
    ImportError: cannot import name 'file_dispatcher' from 'asyncore'

  • @markhuang60
    @markhuang60 3 года назад +2

    謝謝彭彭老師把流程講解地很清楚~一步一步照著完成真的很有趣XD

    • @cwpeng-course
      @cwpeng-course  3 года назад

      哈哈哈,很高興看到有趣的回饋,謝謝哪 :)

  • @YaCheng
    @YaCheng 2 года назад

    老師 請問 如過網頁不能產生json格式、該如何抓取資料?

    • @cwpeng-course
      @cwpeng-course  2 года назад

      那就要看網頁提供什麼樣形式的資料,例如 HTML 的原始碼 ~

  • @楊鎮鴻-g5v
    @楊鎮鴻-g5v 2 года назад

    老師好
    想請問一下
    每次 pip install 完之後 import 卻會出現 ModuleNotFoundError
    但查看 pip list 卻有有顯示已下載 BS4 跟 Flask 都出現同樣問題
    煩請老師解答 謝謝

    • @cwpeng-course
      @cwpeng-course  2 года назад

      很可能你的電腦中有其他的 Python 虛擬環境在運作,或許有安裝類似 Anaconda 這類的工具,建議可以移除後再試試看。

  • @cwh1697
    @cwh1697 3 года назад +1

    老師您好
    想詢問當我在嘗試讀取多重資料時,需要用","但不能用"+"
    但是在write時,卻是需要用"+",不能用","的原因是甚麼呢?

    • @stanleylee2202
      @stanleylee2202 3 года назад +2

      file.write,你可以想成把你print的資料,輸出到(印到)你前面open的檔案,而規則和print一樣,在印出檔案的時候是以字串的形式,所以要用+號喔

    • @stanleylee2202
      @stanleylee2202 3 года назад +1

      簡單來說就是write 這個函示的變數裡要填的是write("字串")

    • @stanleylee2202
      @stanleylee2202 3 года назад +3

      如果你要write出 公司名稱,公司地址 的話
      file.write(company["公司名稱"] + "," + company["公司地址"]+"
      " )
      要這樣寫喔

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      感謝 @李政昇 的詳細說明 :)

  • @arzu1543
    @arzu1543 2 года назад

    內湖科技園區廠商名錄網頁改成一頁一頁的資料呈現(上一頁,下一頁)是否就無法抓取全部的資料,只能一頁一頁的抓?

    • @cwpeng-course
      @cwpeng-course  2 года назад

      你可以觀察他的 API 邏輯是透過 offset 和 limit 在控制要抓的頁數,然後使用迴圈去一頁一頁抓出來。

  • @陳裕霖-j1s
    @陳裕霖-j1s 3 года назад +1

    彭彭老師您好:
    想請教您這個error是為甚麼呢?(我程式碼和您的範例程式碼是相同的)
    Traceback (most recent call last):
    File "open-data.py", line 15, in
    file.write(company["公司名稱"]+"/n")
    OSError: [Errno 9] Bad file descriptor

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      還是要看看你的完整程式碼才能判斷可能的錯誤原因哦 ~

    • @陳裕霖-j1s
      @陳裕霖-j1s 3 года назад +1

      @@cwpeng-course 老師好:
      底下是完整的程式碼,想請問是什麼問題
      # 網路連線程式、公開資料串接
      import urllib.request as request #載入模組
      import json
      src = "www.ntu.edu.tw/"
      # 下載特定網址的資料
      with request.urlopen(src) as response:
      data = response.read() # 利用json模組處理json資料格式
      print(data)
      # 串接、擷取公開資料
      謝謝

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      @@陳裕霖-j1s 沒有看到你一開始的那一段 file.write()?

    • @陳裕霖-j1s
      @陳裕霖-j1s 3 года назад +1

      @@cwpeng-course 老師,請問在哪裡呢?影片中並未提及,還請指正

    • @cwpeng-course
      @cwpeng-course  3 года назад +1

      @@陳裕霖-j1s 你分享給我的錯誤訊息包含 file.write(company["公司名稱"]+"/n") 這段程式碼,但你給我的程式碼中沒有看到 ~

  • @張致中
    @張致中 5 лет назад +1

    老師,請問您怎麼判斷政府的網址是json格式的?

    • @cwpeng-course
      @cwpeng-course  5 лет назад +1

      把網址用瀏覽器打開,看看裡面的文字長相,大概就會知道哦。

  • @施奕成-z6c
    @施奕成-z6c 5 лет назад +1

    老師您好,影片後半段的程式碼"for company in clist:"其中的company是什麼?(因為沒有去定義company但卻可以直接用這個名稱所以有疑慮)

    • @cwpeng-course
      @cwpeng-course  5 лет назад +4

      你可以複習一下 for 迴圈的介紹哦,在 for 迴圈的語法中:
      for 變數名稱 in 列表:
      那個變數名稱是直接建立的,會依序取得列表中的資料,並可以在迴圈中使用。

    • @apsincsoros1538
      @apsincsoros1538 5 лет назад

      这个和for i in range(1)中的i一样的,名字随便取

  • @kaokevin1775
    @kaokevin1775 3 года назад

    請問一下彭彭老師我嘗試著用另一種網路連線的方式改寫來讀取抓取api的資料,但是遇到了以下問題卡關以下是想是的錯誤訊息以及我的程式碼
    #-*- coding: utf-8 -*-   ←表示使用 utf-8 編碼
    #串接、擷取公開資料
    import requests as req
    import json
    src="117.56.59.17/OpenData/API/Rain/Get?stationNo=&loginId=open_rain&dataKey=85452C1D"
    response = req.get(src)
    data = json.load(response) #利用json模組讀取資料
    print(data)
    Traceback (most recent call last):
    File "rain.py", line 9, in
    data = json.load(response) #利用json模組讀取資料
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 287, in load
    return loads(fp.read(),
    AttributeError: 'Response' object has no attribute 'read'

    • @cwpeng-course
      @cwpeng-course  3 года назад

      你用的這個方式最後取得的 response 和影片中的方式是不同的東西,所以用 json 讀取的時候會有不同的做法,你要去找找看若使用 requests 模組來抓取資料,要怎麼處理 json 的格式。

    • @kaokevin1775
      @kaokevin1775 3 года назад

      @@cwpeng-course 我先嘗試看看謝謝老師回覆

  • @Dino-gh3no
    @Dino-gh3no 4 года назад

    我跟著做 但是到最後做完不出效果  
    sys= ubuntu Lte 20.04
    Python version= 3.8.2
    ##這都是CODE##
    import urllib.request as request
    import json
    src="data.taipei/api/v1/dataset/296acfa2-5d93-4706-ad58-e83cc951863c?scope=resourceAquire"
    with request.urlopen(src) as response:
    data=json.load(response)
    companylist=data["result"]["results"]
    with open("company.txt", "w", encoding="utf-8") as file:
    for company in companylist:
    file.write(companylist["公司名稱"]+"
    ")
    最後出來的結果是:Traceback (most recent call last): File "12-open-data.py", line 19, in file.write(companylist["公司名稱"]+"
    ")TypeError: list indices must be integers or slices, not str

    • @minglu2166
      @minglu2166 4 года назад

      file.write(companylist["公司名稱"]+"
      ")
      這一段 要填的是 company 不是companylist

    • @cwpeng-course
      @cwpeng-course  4 года назад

      感謝 @Ming Lu 的回應 :)

  • @ShouShou7777
    @ShouShou7777 2 года назад

    老師您好,若我是想要將篩選完的資料寫入某個資料夾內已存在的txt檔,有辦法操作嗎?
    因為原本的方式會直接在資料夾外新增一個txt檔(與資料夾內的txt同檔名),謝謝!

    • @cwpeng-course
      @cwpeng-course  2 года назад +1

      使用 open 打開你想要存的檔案 ( 已經存在的也沒問題 ),然後就直接寫入資料即可。如果真的是同一個資料夾同檔名應該會直接覆蓋,可能是檔案名稱沒有完全顯示出來。

  • @taox1068
    @taox1068 4 года назад

    彭彭老師您好, 遇到如下問題, 嘗試多次解決, 然還是不成功, 所以請幫忙指導
    import urllib.request as request
    import json
    src="cloud.culture.tw/frontsite/trans/emapOpenDataAction.do?method=exportEmapJson&typeId=M"
    with request.urlopen (src) as response:
    data2=json.load(response)
    Blist=data2[0]["name"]
    for ibookstore in Blist:
    print(ibookstore["name"])
    結果出來
    TypeError Traceback (most recent call last)
    in
    6 Blist=data2[0]["name"]
    7 for ibookstore in Blist:
    ----> 8 print(ibookstore["name"])
    TypeError: string indices must be integers
    之後, 我按照您之前影帶所教, 將其轉換成數值浮點數型態
    import urllib.request as request
    import json
    import pandas as pd
    src="cloud.culture.tw/frontsite/trans/emapOpenDataAction.do?method=exportEmapJson&typeId=M"
    with request.urlopen (src) as response:
    data2=json.load(response)
    Blist["name"]=pd.to_numeric(Blist["name"])
    Blist=data2[0]["name"]
    with open("data2.txt", "w", encoding="utf-8") as file:
    for ibookstore in Blist:
    file.write(ibookstore["name"]+"
    ")
    還是同樣問題出現
    TypeError Traceback (most recent call last)
    in
    5 with request.urlopen (src) as response:
    6 data2=json.load(response)
    ----> 7 Blist["name"]=pd.to_numeric(Blist["name"])
    8 Blist=data2[0]["name"]
    9 with open("data2.txt", "w", encoding="utf-8") as file:
    TypeError: string indices must be integers
    請指點迷津!!!

    • @cwpeng-course
      @cwpeng-course  4 года назад

      按照你取得的資料來看 data2[0]["name"] 是一個字串,所以你的 Blist 是一個字串,不能寫 Blist["name"]。
      除非你的 Blist 是一個字典,才能用 Blist[字串] 來取得對應的值。
      建議對 Python 基本資料型態的操作和理解可以多複習一下。

    • @taox1068
      @taox1068 4 года назад +1

      @@cwpeng-course 謝謝彭彭老師即時的回覆!