最近發(fā)現(xiàn)許多小伙伴在用 PySpider 爬取 https 開頭的網(wǎng)站的時候遇到了?HTTP 599: SSL certificate problem: self signed certificate in certificate chain 的錯誤。
經(jīng)過一番排查,解決方案總結(jié)如下
錯誤原因
這個錯誤會發(fā)生在請求 https 開頭的網(wǎng)址,SSL 驗證錯誤,證書有誤。
報錯如下

解決方案
最簡單的解決方法是:
在 crawl 方法中加入忽略證書驗證的參數(shù),validate_cert=False,即
1. self.crawl(url, callback=method_name, validate_cert=False)
以上方法基本可以解決問題。
如果出現(xiàn)了
1[E 160329 14:00:56 base_handler:194] crawl() got unexpected keyword argument: ['validate_cert']
的錯誤,即無法匹配到 validate_cert 參數(shù),那么則是 PySpider 本身的問題。
目前的最新發(fā)行版是 0.3.6(2016/3/29),不過 GitHub 最新版本目前是 0.4.0
可以更新到最新版本,即更新到 master 分支。
因為包還沒有發(fā)行,所以我們就手動來更新。
可以點擊右側(cè)下載 zip 包。

Mac OS X
以 Mac OS X為例,找到 pyspider 庫所在的路徑。我的是在
1. /Library/Python/2.7/site-packages/pyspider
打開之后發(fā)現(xiàn)如下的結(jié)構(gòu)。

把剛才的包下載下來之后,解壓縮,打開文件夾,發(fā)現(xiàn)目錄結(jié)構(gòu)是這樣的。

然后進入 pyspider 文件夾,觀察一下,發(fā)現(xiàn)和我們之前安裝的 pyspider 目錄結(jié)構(gòu)是一樣的,沒錯,就是它了!

嗯,把所有的文件都更新到 site-packages/pyspider 目錄中。
可以手動拖動替換,可以使用命令
1.?cd pyspider
2.?sudo python setup.py install
更新之后,然后重新啟動 pyspider 。
1. pyspider all
再加入 validate_cert=False 參數(shù),發(fā)現(xiàn)就不會出現(xiàn)剛才的問題了。
Linux
方法同上,pyspider 路徑應該在
1. /usr/lib/python/site-packages/pyspider-0.3.6.egg/pyspider
替換一下下載下來的文件。
同樣也可以使用命令
1.?cd pyspider
2.?sudo python setup.py install
Windows
方法同上,pyspider 路徑應該在
1. python(python安裝目錄)/Lib/site-packages/pyspider
同樣替換下載下來的文件即可。
命令同上
1.?cd pyspider
2.?sudo python setup.py install
結(jié)語
通過以上配置,我們解決了 PySpider 的 599 錯誤以及 validate_cert 參數(shù)不匹配的問題。
希望對大家有幫助!
---------------------------------------------------轉(zhuǎn)載--------------------------------------------------------