当前位置:   article > 正文

『scrapy爬虫』01. 安装环境创建示例项目(保姆级图文)_如何创建scrapy项目

如何创建scrapy项目


欢迎关注 『scrapy爬虫』 专栏,持续更新中
欢迎关注 『scrapy爬虫』 专栏,持续更新中

框架结构

初学者一般从爬虫(Spider)开始,这里编写我们的爬虫代码.

Scrapy 框架的主要组成部分和结构:

  • 引擎(Engine):引擎负责处理整个系统的数据流控制,触发事件,以及执行整个爬虫流程。
  • 调度器(Scheduler):调度器负责接收引擎发送过来的请求,并按照一定策略将请求入队,等待引擎处理。
  • 下载器(Downloader):下载器负责下载网页内容,并将下载得到的页面数据返回给引擎,通常使用异步方式实现并支持多线程下载。
  • 爬虫(Spider):爬虫定义了如何爬取特定网站(或特定页面),包括如何从网页中提取结构化数据,Scrapy 中可以定义多个爬虫。
  • 项目管道(Item Pipelines):项目管道负责处理爬取的数据,可以进行数据清洗、验证、存储等操作,可以定义多个管道,数据会依次经过这些管道处理。
  • 中间件(Middleware):中间件是在引擎和下载器之间的钩子框架,可以在请求和响应的不同阶段对它们进行拦截和处理,比如可以用来添加自定义的 User-Agent、代理、重试机制等。
  • 项目配置文件(Settings):项目配置文件包含了 Scrapy 爬虫的各种配置选项,如爬取速度、并发数、延迟时间、日志级别等。

1. 安装库

  • 建议用国内源,因为库包比较大,国外源下载慢.
pip install scrapy
  • 1
  • 检查版本号,看看一些常用命令
scrapy -version
  • 1
  • 常用命令如下:
    bench:用于运行快速基准测试,可以帮助你评估 Scrapy 的性能表现。

fetch:使用 Scrapy 下载器获取特定 URL 的内容,并将内容输出到标准输出或指定文件中。

genspider:根据预定义的模板生成新的爬虫文件,简化了创建新爬虫的过程。

runspider:运行一个独立的爬虫,无需创建一个完整的项目,适用于一次性的简单爬取任务。

settings:获取当前 Scrapy 项目的设置值,可以用来查看当前项目的配置信息。

shell:启动交互式的 Scrapy 控制台,方便开发者在其中测试和调试爬虫代码。

startproject:创建一个新的 Scrapy 项目,包括必要的目录结构和文件模板。

version:打印当前安装的 Scrapy 版本信息。

view:在浏览器中打开指定 URL,可以帮助开发者查看网页在 Scrapy 中的抓取结果。

在这里插入图片描述


2. 创建项目

  • 如图所示创建项目成功,确保你找的到当前的文件夹,建议你cd到一个方便的文件夹后再进行下面的操作.
scrapy startproject 英文项目名
scrapy startproject myscrapy 
  • 1
  • 2

在这里插入图片描述

  • 创建指定爬虫
根据前面的提示cd到我们刚刚新建的项目文件夹
cd myscrapy
  • 1
  • 2

然后新建指定网页的爬虫项目

scrapy genspider 爬虫文件名 爬虫的url
scrapy genspider baidu baidu.com
  • 1
  • 2

在这里插入图片描述
myscrapy\myscrapy\spiders目录下可以看到我们刚刚新建的爬虫
在这里插入图片描述
其内容 start_urls = ["http://baidu.com/"]对应前面的url

import scrapy


class BaiduSpider(scrapy.Spider):
    name = "baidu"
    allowed_domains = ["baidu.com"]
    start_urls = ["http://baidu.com/"]

    def parse(self, response):
        pass

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3. 项目结构与开发环境

在pycharm中打开项目,并新建venv的虚拟环境,虚拟环境中再次安装scrapy库,个人建议用虚拟环境可以保证项目的相对独立性.
在这里插入图片描述
最后的项目结构

scrapy.cfg
project/
    __init__.py
    items.py
    pipelines.py
    settings.py
    middlewares.py 
    spiders/
        __init__.py
        spider1.py
        spider2.py
        ...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

import scrapy

class BaiduSpider(scrapy.Spider):
    name = "baidu"
    allowed_domains = ["baidu.com"]# 限制或允许访问的域名列表
    start_urls = ["http://baidu.com/"] # 起始url

    def parse(self, response):
        pass

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

总结

大家喜欢的话,给个 本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】

推荐阅读