簡體   English   中英

機械化錯誤“太多不良響應”

[英]Mechanize error “too many bad responses”

進行抓取時,我發現某些網址失敗了。 經過檢查后,該URL在瀏覽器中看起來正常,並在wireshark中看到遠程服務器正在回答200,我終於發現該URL:

http://www.segundamano.es/electronica-barcelona-particulares/galaxy-note-3-mas.htm

失敗了

Net::HTTP::Persistent::Error: too many bad responses after 0 requests on 42319240, last used 1414078471.6468294 seconds ago

更奇怪的是,如果您從最后一部分中刪除一個字符,它將起作用。 如果將字符添加到其他位置,它將再次失敗。

更新1

編碼”

agent = Mechanize.new
page = agent.get("http://www.segundamano.es/electronica-barcelona-particulares/galaxy-note-3.htm")
  Net::HTTP::Persistent::Error: too many bad responses after 0 requests on 41150840, last used 1414079640.353221 seconds ago

這是一個網絡錯誤,如果您從同一IP向某個特定源發出過多請求,通常會發生此錯誤,從而導致頁面加載時間太長。 您可以嘗試向連接代理添加自定義超時,使連接保持活動狀態,並忽略不良的分塊(可能不良):

agent = Mechanize.new
agent.keep_alive = true
agent.ignore_bad_chunking = true
agent.open_timeout = 25
agent.read_timeout = 25
page = agent.get("http://www.segundamano.es/electronica-barcelona-particulares/galaxy-note-3.htm")

但這並不能保證連接成功,只會增加機會。

很難說為什么在一個URL而不是另一個URL上出現錯誤。 當您刪除3時,您請求另一個頁面; 一種可能使服務器更容易處理的方法? 我的觀點是:“機械化”設置沒有任何問題,但是您得到的答復卻是正確的。

同意塞弗林的觀點,問題出在另一側。 由於我無法在服務器中執行任何操作,因此我嘗試使用不同的庫來獲取數據。 奇怪的是,其中一些有效,而其他無效。 嘗試不同的設置進行機械化,最后我發現了一個不錯的設置:

  agent = Mechanize.new { |agent| 
    agent.gzip_enabled = false
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM