Python写的dht爬虫,其中的一段代码看不懂

Python012

Python写的dht爬虫,其中的一段代码看不懂,第1张

python中没有三目运算,但是有点类似三目运算:

result if True / False else fresult if为真时候结果为result,为假的时候结果为fresult

例子:

result = 'test' if True else 'not test' # result = 'test'

result = 'test' if False else 'not test' # result = 'not test'

escape() 方法

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +

encodeURI() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $&* ( ) = : / ? + '

DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法,一类可由键值来唯一标示的信息按照某种约定/协议被分散地存储在多个节点上,这样也可以有效地避免“中央集权式”的服务器(比如:tracker)的单一故障而带来的整个网络瘫痪,实现DHT的技术/算法有很多种,常用的有:Chord, Pastry, Kademlia等。我们这里要研究的是Kademlia算法,因为BT及BT的衍生派(Mainline, Btspilits, Btcomet, uTorrent…),eMule及eMule各类Mods(verycd, easy emules, xtreme…)等P2P文件分享软件都是基于该算法来实现DHT网络的,BT采用Python的Kademlia实现叫作khashmir(科什米尔),官网如下所示。eMule采用C++的Kademlia实现干脆就叫作Kad,当然它们之间有些差别,但基础都是Kademlia