爬取中國亞馬遜網站遇到503怎麼解決?

代碼大體就是:將所有的商品放到一個隊裡面,然後彈出一個就用HttpUrlConnection 打開的,一直循環到隊列非空。再爬取幾個頁面後就被返回503了,設置ua、請求頭還有將等待時間設為10s都沒效果。想請教一下應該怎麼辦?
上面是已經爬取的url,爬了一部分然後就返回503了。
503時的那個url沒有問題,我瀏覽器是可以打開的。


沒用的,就算你解決了503的問題,你很快也會發現amazon返回給你的價格都是錯的。


個人沒做過這些東西,只是腦洞,如果沒有幫助,請點"沒有幫助";

爬慢一點,偽造請求頭 每過一段時間換個瀏覽器信息之類的東西,爬行的鏈接不要連續:
例如 亞馬遜.com/商品類型A/商品ID1···商品ID2``` 這樣應該非常容易被抓
試試這樣: 亞馬遜.com/商品類型Rand(A-F)類型/商品ID1 ``商品ID 6 商品ID5
不去指定讓腳本爬什麼信息,而是讓腳本隨機爬出來信息 然後再給爬出來的結果分類

換IP的時候 也不要指定的時間段換,隨機幾十分鐘 或者 幾小時換IP, 畢竟 如果你是伺服器,發現總有一個IP段 每過30分鐘就有規律性的訪問 肯定有問題咯。

爬行的時候 不要只抓取頁面信息,怎麼也得裝裝樣子 請求一下頁面上的資源,例如圖片,CSS,JS之類的東西,有必要的話 再模擬一下js運行,有可能頁面的js上有陷阱,發現你載入了頁面但是js運行結果沒有返回到伺服器,這時候伺服器應該會給 懷疑指數+1.

同時裝裝樣子 請求一下商品頁面上的詳細信息之類的東西。
然後各種腦洞,考慮一下你正常情況下網購會經過什麼步驟,加入購物車啊之類的,並且操作步驟不要循環,跟有規律可循,大量使用Rand來控制步驟。或者直接 抓到加入購物車的鏈接 模擬商品加入購物車,然後從購物車的入口進入商品詳情再抓取之類的。

這些做法會降低爬行效率,然而至少能緩解爬不到之類的~


Amazon有API


503是一種HTTP狀態碼。英文名503 Service Unavailable與404(404 Not Found)是同屬一種網頁狀態出錯碼。由於臨時的伺服器維護或者過載,伺服器當前無法處理請求。這個狀況503是臨時的,並且將在一段時間以後恢復。但並不意味著必須在伺服器過載的時候使用它。某些伺服器只不過是希望拒絕某些客戶端的連接。

爬數據的時候出現503,應該是伺服器拒絕了訪問,那就暫停採集,緩一段時間再採集,並且要注意放慢採集速度和設置採集的間隔周期。


推薦閱讀:

在 Mac 上運行 Windows 程序的最佳方法是什麼?
一個Windows應用程序,例如大型遊戲,除了exe文件外,其餘的文件都是些什麼文件?有什麼內容?
阿里內推面試,應該注意什麼?
為什麼instagram被牆以後還能收到推送的通知?
怎麼用C語言繪製3D圖形,實現類似於UE4這樣的效果?

TAG:Java | 程序 | 爬蟲計算機網路 |