1.在分析网页url结构时,因为网页url重复的原因(如:一级页面有首页url,二级页面仍有首页url,如果不去重,爬虫会对首页url循环爬取,无法跳出),我们需要对已经爬取过的url做去重处理。
2.爬虫去重策略
1.将访问过的url保存到数据库中----效率非常低,应用起来最简单
2.将访问过的url保存到set中,只需要O(1)的代价就可以查询url----内存占用会越来越大,eg.1亿条url大概会占用9G内存
3.url经过md5等方法哈希后保存到set中----将字符缩减到固定的长度,比法2成倍压缩内存,大概5倍
4.用bitmap的方法,将访问过的url经过hash函数映射到某一位----内存进一步压缩。bitmap缺点:冲突会非常多
5.bloomfilter方法对bitmap进行改进,多重hash函数降低冲突
3.scrapy使用法3,后面会讲解bloomfilter的实现
4.python字符串编码:写文件、网络传输的过程中、调用函数时会报错
utf8编码存储和传输优势明显,编程时使用utf8编码问题就会变得复杂 ,因为在内存中,一个字符串中有的字符占用1个字节,有的占用2个字节,很混乱。所以在应用场景下两种字符的互相转换就变得非常必要。
python2中编码不同,python3中编码统一变为unicode
encode(unicode)、decode(unicode)方法。