推 CaptainH: 等10秒不夠就等20秒啊 04/08 23:13
→ uranusjr: timeout 是指連不上的話在多久之後「放棄」, 不是你要的 04/08 23:28
→ uranusjr: 用 sleep 是最簡單的解, 至於要等多久就要看網站而定 04/08 23:28
→ s860134: 一樓最佳解XD 另外你可以多準備幾個 proxy 來讀 04/08 23:35
→ s860134: urllib.request.ProxyHandler 04/08 23:40
!!!!!!!!哈哈哈哈哈哈,一樓一語點醒我夢中人阿
剛剛發現更好的方法
用except:
time.sleep(10)
這樣沒有成功就可以一直等了!!!
謝謝大家!!!!
※ 編輯: kiloxx (114.36.77.57), 04/09/2016 00:01:55
推 busystudent: 其實你這樣time.sleep(10)改成20秒不夠好,你該試著 04/09 00:07
→ busystudent: 讓程式碼依序停1秒或5秒 04/09 00:07
→ busystudent: time.sleep(randint(1,5)) 04/09 00:08
→ busystudent: 記得還要這一行from random import randint 04/09 00:08
→ kenduest: 另外若你是對同一個網站下達抓取資料,建議多利用 04/09 00:40
→ kenduest: HTTP/1.1 的 keep-alive 方式連續抓取 04/09 00:40
→ kenduest: 也就是一個 connection 下可以有多個 http request 04/09 00:41
→ kenduest: 上面寫法會變成切斷連線之後重新產生一個新的連線 04/09 00:42
→ kenduest: 建議可以裝 requests 替代要使用 keep alive 比較快 04/09 01:07
推 eight0: 也可以參考 header "Retry-After" 04/09 06:34