最近發(fā)現(xiàn)許多小伙伴在用 PySpider 爬取 https 開頭的網(wǎng)站的時候遇到了?HTTP 599: SSL certificate problem: self signed certificate in certificate chain 的錯誤榄融。
經(jīng)過一番排查痴鳄,解決方案總結如下
錯誤原因
這個錯誤會發(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ā)行匾灶,所以我們就手動來更新。
可以點擊右側下載 zip 包租漂。
Mac OS X
以 Mac OS X為例阶女,找到 pyspider 庫所在的路徑。我的是在
1. /Library/Python/2.7/site-packages/pyspider
打開之后發(fā)現(xiàn)如下的結構哩治。
把剛才的包下載下來之后秃踩,解壓縮,打開文件夾业筏,發(fā)現(xiàn)目錄結構是這樣的憔杨。
然后進入 pyspider 文件夾,觀察一下驾孔,發(fā)現(xiàn)和我們之前安裝的 pyspider 目錄結構是一樣的芍秆,沒錯,就是它了翠勉!
嗯妖啥,把所有的文件都更新到 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
結語
通過以上配置叁丧,我們解決了 PySpider 的 599 錯誤以及 validate_cert 參數(shù)不匹配的問題啤誊。
希望對大家有幫助!
---------------------------------------------------轉載--------------------------------------------------------