2022.08.24
爬虫抽取代码,有个步骤是加载db中脚本,动态编译成module,动态执行。
在load module时,class总是compile出来有问题。排查是因为换行符转义的问题。耗费很久在这里。
问题原因怀疑是ots后台插入的时候给自动加了转义(后台插入的时候并没有两个反斜杠)
为什么耗时这么久?
- 对原理不清楚,python module的原理,compile原生方法的用法,six包是做啥的。不懂原理,处处靠猜,那就好多地方可能会导致迷惑自己,在错误的方向上排查
- 各种google,python如何load module,2和3 load module有什么不同,compile怎么用,six是做啥的。imp 库是做啥的,一看被deprecated,又怀疑是它的原因,方向错了。
转折点在于,在本地单元测试,把db中的脚本放在本地代码,字符串形式,去单元测试。竟然能跑通。
再结合两种方式下 code属性值的不同,可以定位就是 脚本被转义的原因。
这里其实又要理解 转义符 的各种混淆问题,才能快速解决。