Scrary:一个开源友好的扩展性强框架,主要作用从网站上抓取所需要的数据。优点:快速,强大,扩展性强,无需接触核心代码即可使用,python编写可移植型强。
包的安装:
http://www.cnblogs.com/python-life/articles/4511314.html
一个简单地scrapy spider编写过程
- 创建工程
创建工程的命令scrapy startproject project_name
在genspider的基础上改写想要的内容cd project_name
创建spiderscrapy genspider dmoz_spider(spider_name) dmoz.org(目标网站)
- 定义要摘取的内容
在items.py中定义要爬取的内容
title=scrapy.Field() - 编写spider
修改文件夹中的spider下的dmoz_spider.py文件 - 修改pipeline
修改pipeline.py - 运行
运行,命令行输入:scrapy crawl dmoz_spider(spider_name)
列出一个工程中的爬虫:scrapy list
scrapy命令行工具
scrapy --help
用于查看帮助信息
scrapy version (-v)
用于显示scrapy
版本信息,加上-v显示各组件的版本
startproject
:scrapy startproject project_name
创建一个工程和其相对完整的目录结构
genspider
:scrapy genspider dmoz_spider(spider_name) dmoz.org(目标网站)
在一个工程中(cd
之后)运行产生一个spider,可以产生多个spider,要求spider名称不同
scrapy list
:用来查看本工程中的spider名称
scrapy view +url
:查看页面源码在浏览器中显示的样子
scrapy parse
:在工程中以固定的parse函数(工程中的函数)解析某个页面,可以进一步判断parse函数是否有误
scrapy shell
:用于调试数据,检测xpath,查看页面源码等,执行命令进入交互式页面,可以产生一些供使用的全局变量
scrapy runspider spider_name.py
:运行一个自包含的爬虫
scrapy bench
:基准测试,用来测试scrapy安装是否成功
scrapy的重要组件
spider:定义如何爬取一个网站,包括怎样跟踪连接,怎样提取数据,基本流程:
- 产生初始requests
- parse函数解析requests对应的response
- 使用selector抽取需要的信息
- 存储item
selector:解析网页的库还有beautifulsoup,lxml。但是scrapy中默认的是selector。常用的抽取方法:
- xpath
response.xpath('//title/text()')
- css
response.css(title::text)
- re
- extract
item :定义要抓取的属性
import scrapy
class Product(scrapy.Item):
name=scrapy.Field()
price=scrapy.Field()
pipeline:清洗html数据,检验数据,存储数据
from scrapy.exceptions import DropItem
class PricePipeline(object):
vat_factor=1.15
def process_item(self,item,spider):
if item['price']:
...
else:
...
要想使得pipeline生效,必须要做的事在setting.py中加入以下内容:
ITEM_PIPELINES={
'myproject.pipeline.PricePipeline':300,
'myproject.pipeline.pricePipeline':800,
#'路径':优先级,先执行优先级低的再执行优先级搞得
}
Feed Export:存储抓取到的数据
存储格式包括:
- JSON
- JSON lines
- CSV
- XML
存储位置包括:本地,S3,FTP,标准输出