1.出现 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 7: ordinal not in range(128)
原因:混淆了 python2 里边的 str 和 unicode 数据类型
解决办法:在出错的脚本前加上以下代码:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
或者是:
import sys
if sys.getdefaultencoding()!='utf-8':
reload(sys)
sys.setdefaultendcoding('utf-8')
2.出现 SyntaxError: Non-ASCII character '\xe8' in file
原因:Python的默认编码文件是用的ASCII码
解决:只要在文件开头加入#-*- coding: UTF-8 -*-或者 #coding=utf-8就可以了
3.利用githup上的爬虫爬取裁判文书网时,在文书id的解密过程中出现了如下问题
异常产生于:
def decrypt_id(RunEval, id):
"""
docid解密
"""
js = ctx2.call("GetJs", RunEval)
print js
js_objs = js.split(";;")
js1 = js_objs[0] + ';'
js2 = re.findall(r"_\[_\]\[_\]\((.*?)\)\(\);", js_objs[1])[0]
key = ctx2.call("EvalKey", js1, js2)
key = re.findall(r"\"([0-9a-z]{32})\"", key)[0]
docid = ctx2.call("DecryptDocID", key, id)
return docid
原因是缺少node.js环境,需要安装node.js,安装教程参照:https://www.cnblogs.com/zhouyu2017/p/6485265.html
注意:安装node.js后还需要更换cnpm的镜像(执行下面这条语句)
npm install -g cnpm --registry=https://registry.npm.taobao.org
爬虫项目连接:https://github.com/sixs/wenshu_spider
文书id解密过程:
首先,由获得的runEval得到下图:
提取com.str._KEY的值,传入到js文件中的com.str._KEY
之后,对加密的id进行解密
var unzipid=unzip(id);
var realid=com.str.Decrypt(unzipid);
return realid;
最终的返回值即文书id明文。