今天發現平時每小時報表內容少了好幾個table ,感受好奇怪,這個代碼很穩定跑了好長時間了,不知道哪裏出來問題,幸好代碼作了異常處理。不然我估計郵件都會發不出來了,看了下日誌文件,有報錯日誌記錄以下: ` page = urllib2.urlopen(url, timeout=300)
File "/usr/local/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/usr/local/lib/python2.7/urllib2.py", line 431, in open
response = self._open(req, data)
File "/usr/local/lib/python2.7/urllib2.py", line 449, in _open
'_open', req)
File "/usr/local/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/usr/local/lib/python2.7/urllib2.py", line 1240, in https_open
context=self._context)
File "/usr/local/lib/python2.7/urllib2.py", line 1197, in do_open
raise URLError(err)
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>
2018-11-13 07:03:27,612 - <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:
581)>
2018-11-13 08:03:10,058 - <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:
581)>`python
我把服務器上的代碼拿到本地跑沒問題,可是放到服務器上卻報錯,正是邪門了,百度下,有人遇到過一樣的問題,下面貼出別人的解決方案web
` 1. 使用ssl建立未經驗證的上下文,在urlopen中傳入上下文參數
import ssl
import urllib2服務器
context = ssl._create_unverified_context()
print urllib2.urlopen("https://www.12306.cn/mormhweb/", context=context).read()python2.7
ssl._create_default_https_context = ssl._create_unverified_contextide
print urllib2.urlopen("https://www.12306.cn/mormhweb/").read()
注意:在全全局請求文件導入import ssl
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
`測試
我只測試了第一種,代碼該了以後,再服務器上跑了一下,解決問題