scrapy 框架基本使用
scrapy简介:
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试
一.基本使用
1. scrapy startproject 项目名称
- 在当前目录中创建中创建一个项目文件(类似于Django)
-cd 项目名称 进入项目目录
2. scrapy genspider [-t template] <name> <domain>
- 创建爬虫应用
如:
scrapy gensipider -t basic oldboy oldboy.com
scrapy gensipider -t xmlfeed autohome autohome.com.cn
PS:
查看所有命令:scrapy gensipider -l
查看模板命令:scrapy gensipider -d 模板名称
3. scrapy list
- 展示爬虫应用列表
4. scrapy crawl 爬虫应用名称 --nolog
- 运行单独爬虫应用
-----------------------------------------------------
二.项目结构project_name
/
scrapy.cfg
project_name
/
__init__.py
items.py
pipelines.py
settings.py
spiders
/
__init__.py
爬虫
1.py
爬虫
2.py
爬虫
3.py
文件说明:
- scrapy.cfg 项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)
- items.py 设置数据存储模板,用于结构化数据,如:Django的Model
- pipelines 数据处理行为,如:一般结构化的数据持久化
- settings.py 配置文件,如:递归的层数、并发数,延迟下载等
- spiders 爬虫目录,如:创建文件,编写爬虫规则
-----------------------------------------------------------------------------------------------------
三.xpath选择器基本// 子子孙孙.// 当前子/ 儿子
/div[@id="i1"] 儿子中div标签切id为i1
/div[@id="i1"]/text() 获取某个标签的文本
obj.extract() 列表中每个字符串=》[]
obj.extract.first() 列表中每个字符串=》列表第一个元素
运用url做选择
// a[re:test(@href,"/all/hot/recent/\d+")]/@href
注:可在Chrome浏览器审查元素中,选中并copy xpath
css选择器略...
------------------------------------------------------------------
四. scrapy shell
用法:scrapy shell www.baidu.com(domin)
优点:调试作用域固定在domin上,调试个别代码不用启动整个框架,从而减少调试时间
五.常用函数
- Request是一个封装用户请求的类,在回调函数中yield该对象表示继续访问
- HtmlXpathSelector用于结构化HTML代码并提供选择器功能
res = HtmlXpathSelector(response).select()
六.增加main,debug整框架
from scrapy.cmdline import execute import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) execute(["scrapy", "crawl", "chouti", "--nolog"])