[問題] requests with open write下載檔案錯誤

看板Python作者 (wario2014)時間3年前 (2021/04/09 03:28), 編輯推噓1(1018)
留言19則, 3人參與, 3年前最新討論串1/1
大家好新手發問 程式碼 import requests url = "https://www.sec.gov/Archives/edgar/data/320193/000032019320000096\ /aapl-20200926_htm.xml" r = requests.get(url, timeout=(60, 60)) with open('A:/aapl-20200926_htm.xml', 'wt', encoding="utf-8") as f: f.write(r.text) f.close() r.close() 我想在sec網站下載資料檔案,但是光是這個單一連結,我執行十次,就有二,三次會 變成只有5KB的檔案,每次手動執行都有間隔相當時間避開request限制 https://i.stack.imgur.com/hBKiL.jpg
我在RAM disk,USB 都試過,timeout加大變小,都會發生 環境是vs code , python 3.8 請問是哪裡沒弄好,先謝謝了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.164.160 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1617910127.A.D16.html

04/09 04:58, 3年前 , 1F
看一下失敗時的內容吧
04/09 04:58, 1F

04/09 05:04, 3年前 , 2F
5~6KB那個頁面就是說你被擋了
04/09 05:04, 2F

04/09 05:04, 3年前 , 3F

04/09 05:28, 3年前 , 4F
timeout是伺服器沒回應時等多久
04/09 05:28, 4F

04/09 05:30, 3年前 , 5F
可是python 沒有跳錯誤訊息,被擋應該會403不是嗎
04/09 05:30, 5F

04/09 05:32, 3年前 , 6F
而且它這每秒十個規則,我遠遠超過十秒二十秒我都試過
04/09 05:32, 6F

04/09 05:52, 3年前 , 7F
因為沒有錯誤 只是回傳的不是你要的檔案是這個網頁
04/09 05:52, 7F

04/09 05:53, 3年前 , 8F
你加一條 print(r.text) 看資料就知道了
04/09 05:53, 8F

04/09 05:57, 3年前 , 9F
嗯,的確是403,印了status code,我了解了,謝謝你
04/09 05:57, 9F

04/09 05:59, 3年前 , 10F
看來sec實際的限制嚴格許多,估計一分鐘只能下兩次
04/09 05:59, 10F

04/09 06:06, 3年前 , 11F
試試 https://www.data.gov/ 有沒有你要的資料
04/09 06:06, 11F

04/09 06:24, 3年前 , 12F
感謝,我找找,另外403文擋裡有寫declare your traffic
04/09 06:24, 12F

04/09 06:25, 3年前 , 13F
by update user agent to include company info
04/09 06:25, 13F

04/09 06:26, 3年前 , 14F
隨便亂寫也行得通嗎,感覺沒這麼容易
04/09 06:26, 14F

04/10 18:10, 3年前 , 15F
可以參閱證監會的爬蟲policy
04/10 18:10, 15F

04/10 18:10, 3年前 , 16F

04/10 22:28, 3年前 , 17F
感謝,持續吸收中,當中的"disallow" /cgi-bin可以理解
04/10 22:28, 17F

04/10 22:30, 3年前 , 18F
成(連結略)/cgi-bin/browse-edgar?CIK=0000320193這種
04/10 22:30, 18F

04/10 22:31, 3年前 , 19F
讓browser走的路徑,是不適合script用的,對嗎 ?
04/10 22:31, 19F
文章代碼(AID): #1WRrblqM (Python)
文章代碼(AID): #1WRrblqM (Python)