爬虫框架就是一些爬虫项目的半成品,能够将一些爬虫经常使用的功能写好。而后留下一些接口,在不一样的爬虫项目中,调用适合本身项目的接口,再编写少许的代码实现本身须要的功能。由于框架已经实现了爬虫经常使用的功能,因此为开发人员节省了不少精力与时间。css
这是一套比较成熟的python爬虫框架,简单轻巧,而且很是方便。能够高效率的爬取Web页面并从页面中提取结构化的数据。Scrapy是一套成熟的框架,因此在使用时不须要担忧收取费用的问题。其网址为:https://scrapy.org 能够看下他们的开发文档html
源码地址:https://github.com/binux/pyspider/releasespython
开发文档地址为:http://docs.pyspider.org/mysql
Crawley也是python开发出的爬虫框架,该框架致力于改变人们从互联网中提取数据的方式。特性以下:c++
基于Eventlet构建的高速网络爬虫框架git
能够将数据存储在关系型数据库中,如mysqlgithub
能够将爬取的数据导入为Json、XML格式sql
支持非关系数据跨数据库
支持命令行工具后端
可使用喜欢的工具进行数据的提取
支持使用Cookie登陆或访问那些只有登陆才能够访问的网页
简单易学(hope so)
官网地址为:http://project.crawley-cloud.com
相对于Scrapy框架而言,PySpider框架是一支新秀。它采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器、任务监视器、项目管理器以及结果查看器。有以下特性:
Python脚本控制,能够用任何你喜欢的html解析包
Web界面编写调试脚本、起停脚本、监控执行状态、查看活动历史、获取结果产出
支持RabbitMQ、Beanstalk、Redis和Kombu做为消息队列
支持抓取JavaScript的页面
强大的调度控制,支持超时重爬及优先级设置
组件可替换,支持单机/分布式部署,支持Docker部署
01 安装Twisted模块 计算机须要有c++ 14.0的相关支持,能够个人网盘里下载
02 安装Scrapy模块 直接安装便可
03 安装pywin32模块 直接安装便可
在指定文件夹内打开命令行,输入: scrapy startproject scrapyDemo,便可建立一个名为‘scrapyDemo’的项目
在建立爬虫时,首先须要建立一个爬虫模块的文件,该文件须要放置在spiders文件夹中。爬虫模块是用于从一个网站或多个网站中爬取数据的类,它须要继承scrapy.Spider类,下面经过一个例子,实现爬取网页后将网页的代码以html文件保存到项目文件夹当中,以下:
import scrapy class QuotesSpider(scrapy.Spider): name = 'quotes' #定义爬虫的名称 def start_requests(self): #设置爬取目标的地址 urls=[ 'https://www.juzimi.com/article/23959', 'https://www.juzimi.com/article/23959?page=1', 'https://www.juzimi.com/article/23959?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: #向文件中写入获取的html代码 f.write(response.body) #输出保存文件的名称 self.log('Saved file %s'%filename)
在运行Scrapy 所建立的爬虫项目时,须要在命令窗口中输入“scrapy crawl quotes”,其中“quotes”是本身定义的爬虫名称。
除了使用在命令窗口中启动外,还能够在程序中启动爬虫的API,也就是CrawlerProcess类。首先须要在CrawlerProcess初始化时传入项目的settings信息,而后在crawl()方法中传入爬虫的名称,最后经过start()方法启动爬虫,代码以下:
#导入CrawlerProcess类 from scrapy.crawler import CrawlerProcess #导入获取项目设置信息 from scrapy.utils.project import get_project_settings #程序入口 if __name__ == '__main__': #建立CrawlerProcess类对象并传入项目设置信息参数 process=CrawlerProcess(get_project_settings()) #设置须要启动的爬虫名称 process.crawl('quotes') #启动爬虫 process.start()
Scrapy爬虫框架,能够经过特定的CSS或者XPath表达式来选择HTML文件中的某一处,而且提取出相应的数据。
一、CSS提取数据
使用CSS提取HTML文件中的某一处数据时,能够指定HTML文件中的标签名称,示例代码以下:
response.css('title').extract()