Scrapy学习-1-入门

基础知识
爬虫去重
1. 存储到数据库中

    存取速度慢

2. 存储到内存中的集合里,内存占用十分大

    当爬取数据有1亿条时

        1*10**8*2Byte*50str_len/1024/1024/1024 = 9

    结果显示仅仅爬取1亿条url数据就占用了9个G的内存,显然是不合适的

3. 将url经过md5等哈希方法存储在集合中

    一般一个md5占用128位,16Byte,结果大约为1.5G与上种方法相比,大大减少了内存占用

4. 使用bitmap位图法

    将url经过哈希后的md5值通过hash函数映射到某一位上

    一个url占据一位,同样的一个亿的数据,内存大约占据12M的内存大小。相比与hash方法又占用的内存又小了几个数量级

    这种方法带来的冲突会导致,再寻址

    虽然极大降低了内存占用,但是牺牲了运行时间

5. bloomfilter方法

    对bitmap优化后的方法,减少了hash冲突的可能性
Scrapy入门
介绍
  Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
 
github项目
  https://github.com/scrapy/scrapy
 
新建scrapy工程
# 在虚拟环境中,workon <yourvenvname>

scrapy startproject TestSpider

cd TestSpider

scrapy genspider example example.com
简单运行一下工程
# 创建一个main.py文件

    from scrapy.cmdline import execute

    import sys
    import os 

    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    execute(["scrapy", "crawl", "jobbole"])

# 在虚拟环境中执行

    scrapy crawl jobbole

# 或者直接运行我们的main.py文件

    ***

# 提示缺少模块

    pip install pypiwin32

# 配置settings,不遵循OBEY协议

    ROBOTSTXT_OBEY = False

# 快速调试工程,一次请求,多次测试

    scrapy shell <url_path>
 

猜你喜欢

转载自www.cnblogs.com/cq146637/p/9053116.html
今日推荐