Python爬虫学习初窥Scrapy

此Scrapy篇第一回,那我们就先尝尝鲜,写一个小项目。关于Scrapy的安装,请参考:

如何在Windows下安装Scrapy:https://zhuanlan.zhihu.com/p/24982105)Installation guide:https://doc.scrapy.org/en/latest/intro/install.html#intro-install

创建一个工程

在我们开始爬取之前,需要新建一个Scrapy工程。我们可以先进入任何一个你想存放代码的目录,运行命令:

运行成功后,Scrapy将会在当前目录下自动创建一个名为quotetutorial的文件夹,包括如下的结构:

quotetutorial/ scrapy.cfg # deploy configuration file quotetutorial/ # project's Python module, you'll import your code from here __init__.py items.py # project items definition file pipelines.py # project pipelines file settings.py # project settings file spiders/ # a directory where you'll later put your spiders __init__.py

第一个Spider

Spider是一个我们在Scrapy用来爬取网页抓取信息的类(统称为Spider),它必须继承scrapy.Spider,并且定义一些方法及属性才能按需工作。比如,提取哪些信息,请求哪些网址等等。

我们可以进入之前的quotetutorial目录中,运行命令: ,Scrapy按照命令帮我们写好了一个Spider,在子目录spider中可以找到一个名为quotes.py的文件,打开查看:

我们将代码改写如下:

import scrapyclass QuotesSpider(scrapy.Spider): name = "quotes" def start_requests(self): urls = [ 'http://quotes.toscrape.com/page/1/', 'http://quotes.toscrape.com/page/2/', ] for url in urls: yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): page = response.url.split("/")[-2] filename = 'quotes-%s.html' % page with open(filename, 'wb') as f: f.write(response.body) self.log('Saved file %s' % filename)

如你所见,我们的Spider继承了scrapy.Spider,并且定义了一些属性和方法。

name:标识了这个Spider。在一个项目中,每个Spider的名字必须是独一无二的。

start_requests():必须返回一个可迭代对象,比如一个请求的列表或一个生成函数,Scrapy就是从这确定从哪开始爬取的。

parse():我们在这个方法中处理发出请求后返回的响应,响应是TextResponse的实例。我们在这个方法中提取所需要的信息,或者找到下一个进行爬取的链接。

运行爬虫

如何运行刚才我们已经写好的这个小型爬虫呢?

我们可以在quotetutorial目录下,运行命令: ,这条命令将会运行刚刚我们写好的名为quotes的爬虫,Scrapy会“机智地”帮我们发送请求!

可以看到,图中有不少有用地信息,比如请求了多少次,请求字节数等等。

查看quotetutorail目录:

多了两个文件,正如代码所示!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180315G0FWJ300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券