15.爬虫框架Scrapy 应用实战
使用scrapy抓取一个网站需要四个步骤:
Step one: 创建一个scrapy项目
Step two:定义item容器
Step three:编写爬虫
Step four:存储容器
Scrapy Engine 是框架的核心,控制数据流在所有组件的流动。
项目实战:在http://dmoztools.net/Computers/Programming/Languages/Python上,爬取pythonbooks和resource。
Step one:创建scrapy项目
打开命令行,cd到工程安装目录,键入命令$scrapy startproject tutorial
tutorial为项目名称
在工程目录中新增文件及目录:
Step two:创建item容器
Item容器:
打开并编辑 item.py
Step three:编写爬虫
在spider文件夹中新建一个名为dmoz_spider.py
打开命令行cd到工程目录,键入命令$ scrapy crawl dmoz
注意,dmoz为属性name的值
工程目录中增加了两个文件
之后解析该两个文件,准备知识如下:
进入shell模式,转到工程根目录,键入命令$ scrapy shell “url”
进入>>>模式,可以对response进行处理,例如打印response.body
Body会反馈会好多内容,使用XPath进行信息筛选!
举个栗子
查找body中title标签的内容:
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()
使用for迭代器打印文章title
注意:
For函数内层中xpath中“div”前不需要“/”
退出shell
再次编辑spider文件中dmoz_spider.py文件
在命令行窗口键入命令:$scrapy crawl dmoz
等待一会出现爬取返回的信息:
Step four:存储容器
在dmoz_spider.py文件中引入item容器,将爬取的信息存在item中,再将容器中的信息以json的形式存储并返回。
再次回到命令行进入命令:$scrapy crawl dmoz -oitems.json -t json
-o 后面是保存文件名
-t 后面是文件保存的格式
出现以下界面
工程根目录中会多一个文件:
结果展示:
原来网站信息截图: