python爬虫网络请求超时是什么意思_python爬虫怎么处理异常和超时?
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
寫代碼總是會出異常的,尤其是爬蟲這類程序,無法確保每次請求都能穩定地返回統一的結果,比如反爬蟲策略提升、代理IP超時、程序異常等等,處理好這些問題,才能保證爬蟲程序持續地運行下去。
一、反爬蟲策略。這里不多說,之前有討論過,可以參考之前的文章《爬蟲如何有效突破網站的反爬機制?》。
二、超時設置。網絡總是不會一如既往的穩定如一,可能代理IP某個時間不穩定,也可能目標服務器某個時間不穩定,還有自身機器的網絡也可能不穩定,如果不設置好超時,程序也不好跑下去。
selenium+chrome的超時設置:
顯式等待:、等待某個條件發生,然后再繼續進行代碼。
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
element = WebDriverWait(driver, 10).until( #這里修改時間
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
隱式等待:是告訴WebDriver在嘗試查找一個或多個元素(如果它們不是立即可用的)時輪詢DOM一定時間。默認設置為0,一旦設置,將為WebDriver對象實例的生命期設置隱式等待。
driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")
三、異常處理。是程序就會有異常,不管是什么程序,python使用try&except語句來處理異常。try&except語句不僅僅是要讓其捕獲異常更重要的是讓其忽略異常,因為爬蟲中的絕大多數異常可能重新請求就不存在,因此,發現異常的時候將其任務隊列進行修復其實是個最省力的好辦法。
try:
passhttp://www.***.com/***/#
#可能出錯的語句
except Exception,e:
pass
#保留錯誤的url,留待下次重跑
print e
finally:
#無論是否處理了異常都繼續運行
print time.ctime()
四、自重啟設置。如果一個程序在某種情況下報錯多次,或者運行時間夠久遠,那么其性能可能會下降,就像一臺電腦一樣,用的越久就越慢,重啟不失為一個好辦法。當然這是治標不治本,但無疑是最省力的方法之一,當滿足設置的重啟條件后,程序自重啟,也是讓程序持久運行的一個好方法。
總結
以上是生活随笔為你收集整理的python爬虫网络请求超时是什么意思_python爬虫怎么处理异常和超时?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python从零开始系列连载_技术 |
- 下一篇: websocket python爬虫_p