【学习笔记】分布式爬虫打造搜索引擎|笔记01|爬虫基础知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40643642/article/details/89886197

慕课网《聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎》 学习笔记

学习流程:

  1. 环境配置和基础知识铺垫
  2. 爬取真实数据
  3. scrapy突破反爬虫技术
  4. scrapy进阶
  5. scrapy redis分布式爬虫
  6. elasticsearch django实现搜索引擎

scrapy vs requests + beautifulsoup

  • requests和beautifulsoup都是库,scrapy是框架。
  • scrapy框架中可以加入requests和beautisoup。
  • scrapy基于twisted,性能是最大优势。
  • scrapy方便扩展,提供了很多内置的功能。
  • scrapy内置的css和xpath selector非常方便,beautifulsoup(纯python写的框架)最大的缺点就是慢。

网页分类

  • 静态网页  (在服务器端生成好的页面,页面内容不变)
  • 动态网页 (根据传递数据不同,通过服务器从数据库取出数据)
  • webservice(restapi)

爬虫能做什么

  1. 搜索引擎--百度、google、垂直领域搜索引擎(例如只用来搜索汽车相关的信息)
  2. 推荐引擎--今日头条
  3. 机器学习的数据样本
  4. 数据分析(如金融数据分析、舆情分析等)

爬虫去重策略

  • 将访问过的url保存到数据库中(最简单,但效率低)
  • 将访问过的url保存到set中,只需要o(1)的代价就可以查询url(占用内存大 100000000*2byte*50字符/1024/1024/1024=9G))
  • url经过md5等方法哈希后保存到set(比上一个方法进行几倍的压缩,将任意长度的url压缩成同样长度的md5字符串,而且不重复。scrapy采用类似md5的方式)
  • 用bitmap方法,将访问过的url通过hash函数映射到某一位(缺点:冲突高)
  • bloomfilter方法对bitmap进行改进,多重hash函数降低冲突

字符串编码

  1. 计算机只能处理数字,文本转换为数字才能处理。计算机中8个bit作为一个字节,所以一个字节能表示最大的数字就是255。
  2. 计算机是美国人发明的,所以一个字节可以表示所有字符,所以ASCII(一个字节)编码就成为美国人的标准编码。
  3. 但是ASCII处理中文明显不够的,中文不止255个汉字,所以中国制定了GB2312编码,用两个字节表示一个汉字。GB2312还把ASCII包含进去了。同理,日文,韩文等等上百个国家为了解决这个问题就都发展了一套字节的编码,标准越来越多,如果出现多语言混合显示就一定会出现乱码。
  4. unicode将所有语言统一到一套编码里。
  5. ASCII和unicode编码:1)字母A用ASCII编码十进制是65,二进制是0100 0001     2)汉字“中”已经超出了ASCII编码的范围,用unicode编码是20013,二进制是01001110 00101101      3)A用unicode编码只需要前面补0二进制是00000000 0100 0001
  6. 但是如果内容全是英文,unicode编码比ASCII需要多一倍的存储空间,同时多一倍的传输。
  7. 所以出现了可变长的编码“utf-8”,把英文变长一个字节,汉字3个字节。特别生僻的变成4-6字节,如果传输大量的英文,utf-8作用就很明显了。

                      

猜你喜欢

转载自blog.csdn.net/weixin_40643642/article/details/89886197