美文网首页
python爬虫-scrapy

python爬虫-scrapy

作者: quanCN | 来源:发表于2020-08-21 17:11 被阅读0次

简介

Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,官网

Scrapy框架的整体架构和组成

  • Scrapy Engine(引擎)
    负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等
  • Scheduler(调度器)
    它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎
  • Downloader(下载器)
    负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理
  • Spider(爬虫)
    它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)
  • Item Pipeline(管道)
    它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方
  • Downloader Middlewares(下载中间件)
    是一个可以自定义扩展下载功能的组件
  • Spider Middlewares(Spider中间件)
    是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

安装

  • 使用镜像安装
    pip3 install -i https://pypi.douban.com/simple scrapy
    
  • 创建项目
    scrapy startproject testObject
    
  • 项目目录如下
    project/
        scrapy.cfg            # 项目配置文件
    
        project/             # 项目的Python模块,将会从这里引用代码
            __init__.py
    
            items.py          # 项目 items 定义文件
    
            middlewares.py    # 项目中间件文件
    
            pipelines.py      # 项目 pipelines 文件
    
            settings.py       # 项目设置文件
    
            spiders/          # 爬虫代码目录
                __init__.py
    

基本使用

  • 创建爬虫
    scrapy genspider myspider(爬虫名) baidu.com(爬取域)
    
  • test
    常见test文件,直接运行即可运行爬虫
    from scrapy.cmdline import execute
    
    import sys
    import os
    
    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    execute(['scrapy','crawl','myspider'])
    
  • 提取数据
    • CSS选择器
    • XPath选择器
      title_selector = response.xpath('//*[@id="wrapper"]/div[4]/div/div[2]/h1/text()')
              content_selector = response.xpath('// *[ @ id = "content"]/text()')
              content = '\n'.join(content_selector.extract())
              article_item['content'] = content
              article_item['title'] = title_selector.extract_first()
      

相关文章

网友评论

      本文标题:python爬虫-scrapy

      本文链接:https://www.haomeiwen.com/subject/difpjktx.html