15.爬虫框架Scrapy 应用实战

使用scrapy抓取一个网站需要四个步骤:

Step one: 创建一个scrapy项目

Step two:定义item容器

Step three:编写爬虫

Step four:存储容器

一只爬虫带你看世界【11】

Scrapy Engine 是框架的核心,控制数据流在所有组件的流动。

 

项目实战:在http://dmoztools.net/Computers/Programming/Languages/Python上,爬取pythonbooks和resource。


Step one:创建scrapy项目

打开命令行,cd到工程安装目录,键入命令$scrapy  startproject  tutorial

tutorial为项目名称

一只爬虫带你看世界【11】

在工程目录中新增文件及目录:

一只爬虫带你看世界【11】


Step two:创建item容器

Item容器:

一只爬虫带你看世界【11】

打开并编辑 item.py

一只爬虫带你看世界【11】

Step three:编写爬虫

在spider文件夹中新建一个名为dmoz_spider.py

一只爬虫带你看世界【11】

打开命令行cd到工程目录,键入命令$ scrapy crawl dmoz

注意,dmoz为属性name的值

一只爬虫带你看世界【11】

工程目录中增加了两个文件

一只爬虫带你看世界【11】

之后解析该两个文件,准备知识如下:

一只爬虫带你看世界【11】

一只爬虫带你看世界【11】

进入shell模式,转到工程根目录,键入命令$ scrapy  shell “url”

一只爬虫带你看世界【11】


进入>>>模式,可以对response进行处理,例如打印response.body

一只爬虫带你看世界【11】


Body会反馈会好多内容,使用XPath进行信息筛选!

一只爬虫带你看世界【11】


举个栗子

查找body中title标签的内容:

一只爬虫带你看世界【11】

Response.Xpath(”//title”)      表示为查询title标签的信息

Response.Xpath(”//title”).extract()     表示只返回title标签内容

Response.Xpath(”//title/text()”).extract()     表示为去掉标签并返回内容


返回books列表中文章title

Response.xpath(‘//div[@class=”title-and-desc”]/a/div/text()’).extract()

一只爬虫带你看世界【11】


使用for迭代器打印文章title

一只爬虫带你看世界【11】

注意:

For函数内层中xpath中“div”前不需要“/”


退出shell

一只爬虫带你看世界【11】


再次编辑spider文件中dmoz_spider.py文件

一只爬虫带你看世界【11】


在命令行窗口键入命令:$scrapy crawl  dmoz

一只爬虫带你看世界【11】


等待一会出现爬取返回的信息:

一只爬虫带你看世界【11】


Step four:存储容器

在dmoz_spider.py文件中引入item容器,将爬取的信息存在item中,再将容器中的信息以json的形式存储并返回。

一只爬虫带你看世界【11】


再次回到命令行进入命令:$scrapy crawl  dmoz  -oitems.json  -t  json

-o 后面是保存文件名

-t 后面是文件保存的格式


一只爬虫带你看世界【11】


出现以下界面

一只爬虫带你看世界【11】


工程根目录中会多一个文件:

一只爬虫带你看世界【11】


结果展示:

一只爬虫带你看世界【11】


原来网站信息截图:

一只爬虫带你看世界【11】





相关文章: