欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scrapy爬虫框架的基本使用 创建spider工程和spider爬虫 scrapy基本命令

程序员文章站 2022-05-07 17:25:56
...

Srcapy介绍

Scrapy是一个健壮的爬虫框架,可以从网站中提取需要的数据。是一个快速、简单、并且可扩展的方法。

Scrapy使用了异步网络框架来处理网络通讯,可以获得较快的下载速度,因此,我们不需要去自己实现异步框架。并且,Scrapy包含了各种中间件接口,可以灵活的完成各种需求。所以我们只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页上的各种内容。

Scrapy爬虫的优点很多:

  • 内建的css选择器和xpath表达式。

  • 基于IPython交互shell,方便编写爬虫和debug。

  • 健壮的编码支持。

  • 扩展性强,可使用signals和api(中间件,插件,管道)添加自定义功能。

  • 多用于session,cookies,http认证,user-agent,robots.txt,抓取深度限制的中间件和插件。

  • scrapy內建teinet console,可用于debug。

Scrapy的安装

scrapy的安装可能回出现问题。

如果安装不成功,先安装 wheel,然后下载twisted:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted,

进入你下载的目录执行:
pip install Twisted-17.1.0-cp35-cp35m-win_amd64.whl,
注意安装的是你选择的whl,而不是我这个。

安装失败,可以换另一个版本的twisted文件再次进行安装

接着使用pip命令安装pywin32,最后安装scrapy,或者设置超时命令直接安装scrapy:

pip install --default-timeout=5000 scrapy

鳄鱼君Ba使用的是2020.1的pycharm,是直接在settings中安装的,第一次没安装上,重试一次就成功了。
Scrapy创建工程

scrapy startproject 工程名字

创建工程之后,会生成一个固定的文件目录,结构如下:

├── mySpider  爬虫总目录
|   |── spiders   爬虫文件夹
|      ├── __init__.py
│      └── __pycache__
│   ├── __init__.py
│   ├── items.py  项目文件
│   ├── middlewares.py  中间件文件
│   ├── pipelines.py  管道文件
│   ├── __pycache__
│   ├── settings.py  设置文件 
└── scrapy.cfg  配置文件

spiders就是爬虫文件夹,创建一个爬虫文件必须要要进到该目录下。爬虫文件可以有多个,爬虫名字不可重复!

在Scrapy爬虫的工程目录中,存在有以下几个文件以及各部分组件的工作:

  • 管道文件夹(pipelines):负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
  • 中间件文件(middlewares):包含爬虫中间件和下载器中间件。
  • 设置文件(settings):对爬虫文件进行配置。
  • 爬虫文件(spiders):在这里编写我们的爬虫文件,需要爬取什么网站。

Scrapy命令整理

1.创建一个新的爬虫项目
scrapy startproject 项目名
2.生成爬虫
scrapy genspider 爬虫名 网址
3.运行爬虫文件
scrapy crawl 爬虫名称
scrapy crawl 爬虫名 -o 文件名.json  #保存json文件到本地
4.check检查错误
scrapy check
5.list返回项目所有的爬虫spider名称
scrapy list
6.view,存储,打开网页
scrapy view 网址
7.进入scrapy shell终端
scrapy shell 网址

接下来简单创建一个myspider爬虫项目,并创建myspider爬虫文件:

scrapy startproject myspider1
cd myspider1
scrapy genspider meizi https://www.meizitu.com/

然后会在myspider1文件夹下自动生成一个meizi爬虫文件,内容如下:

# -*- coding: utf-8 -*-
import scrapy
class MeiziSpider(scrapy.Spider):
    # name表示爬虫文件的名称,爬虫文件的名称表示的是爬虫问啊进的唯一标识
    name = 'meizi'
    # 允许的域名:用来做请求的限定,一旦该域名定义好之后,则start_url只可以发起该域名下的url的get请求
    allowed_domains = ['www.meizitu.com']
    # 起始的url列表:将要爬取的url存放在该列表中,这个列表就可以帮我们将每一个url进行get请求的发送
    start_urls = ['https://www.meizitu.com/']
    # parse用于数据解析,response参数就是请求回来的相应对象
    def parse(self, response):
        pass

到这里为止,你已经知道了如何创建一个简单的scrapy工程,那么接下来就是如何运行scrapy爬虫和数据解析,这里你可以自己随便找一个网站进行测试。