[问题] requests with open write下载档案错误

楼主: wario2014 (wario2014)   2021-04-09 03:28:41
大家好新手发问
程式码
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
请问是哪里没弄好,先谢谢了
作者: x94fujo6   2021-04-09 04:58:00
看一下失败时的内容吧5~6KB那个页面就是说你被挡了https://i.imgur.com/fYY7xqt.pngtimeout是服务器没回应时等多久
楼主: wario2014 (wario2014)   2021-04-09 05:30:00
可是python 没有跳错误讯息,被挡应该会403不是吗而且它这每秒十个规则,我远远超过十秒二十秒我都试过
作者: x94fujo6   2021-04-09 05:52:00
因为没有错误 只是回传的不是你要的档案是这个网页你加一条 print(r.text) 看资料就知道了
楼主: wario2014 (wario2014)   2021-04-09 05:57:00
嗯,的确是403,印了status code,我了解了,谢谢你看来sec实际的限制严格许多,估计一分钟只能下两次
作者: x94fujo6   2021-04-09 06:06:00
试试 https://www.data.gov/ 有没有你要的资料
楼主: wario2014 (wario2014)   2021-04-09 06:24:00
感谢,我找找,另外403文挡里有写declare your trafficby update user agent to include company info随便乱写也行得通吗,感觉没这么容易
作者: cuteSquirrel (松鼠)   2021-04-10 18:10:00
可以参阅证监会的爬虫policyhttps://www.sec.gov/robots.txt
楼主: wario2014 (wario2014)   2021-04-10 22:28:00
感谢,持续吸收中,当中的"disallow" /cgi-bin可以理解成(连结略)/cgi-bin/browse-edgar?CIK=0000320193这种让browser走的路径,是不适合script用的,对吗 ?

Links booklink

Contact Us: admin [ a t ] ucptt.com