構建一個網頁下載函式
環境:python3,模塊:python內置模塊urllib
import urllib.request
import urllib.error
def get_html(url,user_agent='xxx',num_retries):
headers = {'User-agent':user_agent} #設定默認用戶代理
request = urllib.request.Request(url=url,headers=headers) #添加請求頭引數
try:
return urllib.request.urlopen(url=request).read().decode('utf-8')
except urllib.error.URLError as e:
print('Error:', e.reason) #拋出例外reason
html = None
if num_retries > 0:
#4xx錯誤發生在請求存在問題時,5xx錯誤發生在服務器端存在問題時,只需保證在5xx時重新下載
if hasattr(e, 'code') and 500 <= e.code < 600:# hasattr() 函式用于判斷物件是否包含對應的屬性,
return download(url,user_agent,num_retries-1)
return html
注釋:
url:下載網址
user_agent:用戶代理
num_retries:重試下載次數
該函式下載網頁并回傳HTML,捕獲例外,對服務器端錯誤進行重試下載,設定用戶代理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/256801.html
標籤:python
