嘘~ 正在从服务器偷取页面 . . .

行百里者半九十——scrapy 框架(1)


scrapy 框架初识

安装

如果没记错,python 3.6 及以上版本可以直接用 pip install scrapy.但具体是从哪个版本开始可以这样我也不是很清楚,因为我使用的 python 3.95,所以我是直接用pip安装的。也正因为如此,对于下载whl格式的包安装我是不太清楚的,所以不提。

认识

scrapy 安装成功后,我们来创建项目框架。

打开终端。cmd 或者从 pycharm 中打开终端。我以 pycharm 为例。

首先,进入到相应的目录

创建项目框架文件夹

scrapy startproject projectName

在进入刚创建的文件夹,创建新的执行文件

scrapy genspider fileName www.xxxx.com

然后我们打开我们创建的项目框架


其中 Blood.py是主代码文件,items.py 是跟保存有关的文件,middlewares.py是中间件,pipelines.py是管道文件,settings.py是配置文件。这些以后会讲到的,暂且不提。

如果要执行代码,终端的命令是scrapy crawl fileName
在这个案例里,就是scrapy crawl Blood

简单的代码实现

先打开 Blood.py文件
其中代码如下:

我圈起来的部分是允许爬虫爬取的网站的域名,而下面的列表是待爬取的网址。这就是说,如果待爬取的网址不属于我圈起来的域名,这些网址就不会被爬取。所以一般来说,我们直接是将这一行代码注释掉。

然后我们试着爬取百度首页。

首先代码如下:

import scrapy


class BloodSpider(scrapy.Spider):
    name = 'Blood'

    # allowed_domains = ['www.xxx.com']

    start_urls = ['http://www.baidu.com/']

    def parse(self, response):
        print(response.url) # 打印爬取的网址
        pass

执行代码scrapy crawl Blood

运行结果:

好家伙,这一坨是什么东西?

先来看我圈起来的部分,先是说连接到百度首页,再说被 robots 协议禁止了。好家伙,原来这是日志啊,但是 robots 协议怎么办?

没事,是时候打开我们的配置文件了

这里我们看到,我们的 scrapy 框架遵守 robots 协议,所以我们将 True 改成 False。再运行一次,🆗,这次没有报错了。


但是这一坨日志可真是叫人恶心。那有什么方法吗?

简单,再次打开而配置文件。
添加一行代码

LOG_LEVEL = "ERROR"

然后再次运行

看结果:

那么使用 scrapy 框架之后怎么保存爬取的内容呢?

嘿嘿,且听下回分解。


文章作者: New Ass
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 New Ass !
  目录