python 爬蟲由於網絡或代理不能用導致的問題處理方法


平時在爬取某些網頁的時候,可能是由於網絡不好或者代理池中的代理不能用導致請求失敗。此時有們需要重復多次去請求,python中有現成的,相應的包供我們使用:

  1. 我們可以利用retry模塊進行多次請求,如果全部都失敗才報錯。當然使用retry庫之前也需要先安裝,eg:
import requests

from retrying import retry

# 這里的headers使用的是手機版的
m_headers = {
    "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
}

@ retry(stop_max_attempt_number = 10)  #讓被裝飾的函數反復執行10次,10次全部報錯才會報錯, 中間有一次正常就繼續往下走
def parse_url1(url):
    response = requests.get(url, headers=m_headers, timeout=5)
    return response.content.decode()

# 真正的url請求函數
def parse_url(url):
    try:
        html_str = parse_url1(url)
    except:
        html_str = None
    return html_str

if __name__ == '__main__': 
    url = "http://www.baidu.com"
    print(parse_url(url))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM