zoukankan      html  css  js  c++  java
  • 爬虫5-Scrapy爬虫架构

    简介

    Scrapy是爬取网站,提取结构性数据并存储的应用框架。对爬取过程中的请求、返回、解析、存储、调度等流程提供模块化支持。

    items模块——定义需要爬取的数据字段

    保存爬取到的数据的容器,python的字典类型。根据网站数据对item进行定义字段。

    # items示例
    import scrapy
    class DangDangItem(scrapy.Item):
        _id = scrapy.Field()
        title = scrapy.Field()
        chubanshe = scrapy.Field()

    pipelines模块——连接数据库、存储

    # pipelines示例:通过__init__初始化连接mongodb,需要连接的库名、表名、主机地址、端口号在setting.py模块定义完毕;在process_item方法通过isinstance函数判断item数据类型,若传入与item一致则存入数据库表
    import pymongo
    from scrapy.conf import settings
    from .items import DangdangItem
    
    class DangdangPipeline(object):
        def __init__(self):
            host = settings['MONGODB_HOST']
            port = settings['MONGODB_PORT']
            db_name = settings['MONGODB_DBNAME']
            client = pymongo.MongoClient(host=host,port=port)
            tdb = client[db_name]
            self.post = tdb[settings['MONGODB_DOCNAME']]
    
        def process_item(self, item, spider):
            if isinstance(item,DangdangItem):
                try:
                    book_info = dict(item)
                    if self.post.insert(book_info):
                except Exception:
                    pass
            return item

    settings模块——定制Scrapy组件的方法

    可以控制核心core、插件extension、pipeline及spyder组件,实现对调度、请求等待时间、存储优先级、请求队列清理方式、数据库连接方式的定义

    # settings参数举例
    SPIDER_MODULES=['****']  #scrapy搜索spider模块列表
    DOWNLOAD_DELAY              #爬取延时等待时间
    SCHEDULER                         #Scrapy的调度器配置
    DUPEFILTER_CLASS              #对爬取链接去重,第二个链接不再爬取
    SCHEDULER_PERSIST           #TRUE不清队列;FALSE清队列
    SCHEDULER_QUEUE_CLASS  #爬虫的优先级算法:队列、栈、优先级
    MONGODB_DBNAME             #定义连接到的数据库
    MONGODB_DOCNAME          #定义存储到的表名

    spider模块

    # spider模块中有用于爬取的文件,命名为****.py.
    # 创建爬虫文件,需要继承crapy.spider,需要定义三个属性
    name         #名字要唯一,不可以为不同的spider设定相同的名字
    start_urls   #含spider启动时爬取的url列表
    parse()      #spider的一个方法,用于接收请求链接返回的response数据
  • 相关阅读:
    Python 生成器
    Python 切片
    Visual Studio Code编辑器使用
    linux常用命令
    python selenium学习笔记
    selenium+chrome driver 报错处理 (Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17763 x86_64)
    python+uiautomator2+fiddler 自动化测试学习总结
    我的第一篇博客
    计算机网络差错控制基本方法
    计算机网络复习笔记(简略)
  • 原文地址:https://www.cnblogs.com/foolangirl/p/14169895.html
Copyright © 2011-2022 走看看