scrapy 安装

学习scrapy并不需要自己python基础多么好(我就是吃果果的例子),相反其实只要浏览过一遍python基础知识,就可以学习scrapy框架了,因为框架都是将比较复杂的内容封装,提供给用户一些简单的API。所以完全可以在学习scrapy框架的时候强化python基础。

环境
python : 3.5
scrapy: 1.5(当前最新)
pycharm: community(社区版,免费)
1.安装scrapy
	pip install scrapy
//可能会报错    error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

错误大概意思,就是缺少编译工具,需要下载virtual C++什么的。但是呢我是学python的下载c编译工具干嘛。所以直接下载twisted组件(事件驱动的网络引擎),scrapy是基于twisted的,找到和自己python版本对应的文件下载就可以了。详情请参考
这里写图片描述
安装twistwd组件并再次安装scrapy

	pip install  twistwd文件路径
	pip install scrapy 
2.新建scrapy项目
scrapy  startproject   projectName

//--------------------------------------
E:\>scrapy startproject firstScrapy
New Scrapy project 'firstScrapy', using template directory 'd:\\software1\\python\\lib\\site-packages\\scrapy\\templates\\project', created in:
E:\firstScrapy

You can start your first spider with:
cd firstScrapy
scrapy genspider example example.com

需要说明的是项目名称不能是*路径*,也就是需要在本路径下新建项目,并且名称只能为字母

项目目录结构
firstScrapy/
	scrapy.cfg
	firstScrapy/
		__init__.py
		items.py
		pipelines.py
		settings.py
		spidders/
			__init__.py
  • spidders 存放spiders文件(自定义爬虫)的目录
  • scrapy.cfg 项目配置文件,用于配置部署信息和项目配置文件路径
  • settings.py 爬虫的配置文件,用于配置一些公共特性。例:图片存储路径,数据管道,自定义中间件等
  • items.py 项目中的自定义item类存放该模块下(需要继承scrapy.Item),Item就类似于与数据库表所对应的实体类,毕竟面向对象操作更容易些
  • pipelines.py 项目中自定义pipelines类,独立的类 用于对item中的数据做进一步处理 比如去重,数据保存
3.使用默认模板新建一个爬虫

切换到项目根路径下。因为新建一个scrapy项目,

 cd firstScrapy
 ---------------------------------
 scrapy genspider  spiderName domain
  • spiderName 爬虫的名字,自定义

  • domain要爬取的网页 的域名,自定义
    比如我要爬取伯乐在线的博客

      scrapy genspiser jobbole  blog.jobbole.com/all-posts/   
    

firstScrapy/firstScrapy/spiders 下会发现多了一个jobbole .py文件

	class JobboleSpider(scrapy.Spider):
	    name = 'jobbole'  //爬虫的名字
	    allowed_domains = ['blog.jobbole.com'] //允许爬取网页的域名
	    start_urls=['http://blog.jobbole.com/all-posts/']//爬取的路径
	    
	    def parse(self, response):  //网页解析数据处理的核心方法
		    pass

现在我们写一点具体的逻辑,比如我想获取该页所有文章的标题

def parse(self,response):
	titles= response.xpath("//a[@class='archive-title']/text()").extract()
	print("文章标题  %s"%titles)

#####4.启动爬虫

scrapy crawl spiderName   //启动指定名称的爬虫
----------------------------------------
scrapy crawl jobbole

运行效果如下
这里写图片描述
上面的输出其实是在scrapy 终端中,使用内置对象response输出的。顺便提一句很多时候定位元素的时候不能一次就成功,这样就需要修改一次运行一次项目。所以可以使用scrapy终端,方便进行xpath,css等表达式的测试。

调用上面的命令实际上,Scrapy为Spider的 start_urls 属性中的每个URL创建了 scrapy.Request 对象,并将 parse 方法作为回调函数(callback)赋值给了Request。
Request对象经过调度,执行生成 scrapy.http.Response 对象并送回给spider parse() 方法。
#####启动scrapy 终端
上面也提到了,scrapy终端方便进行测试。
启动终端

scrapy  shell  url   //url是需要测试的网页的具体路径

注意: scrapy crawl spiderName 命令需要在项目目录下使用。

可能出现的问题:
KeyError: 'Spider not found: jobble'

大概意思就是名字为jobble的爬虫找不到,可能的原因有两种或者说是一种,就是还没有创建改名字爬虫或者创建了但是爬虫的名字拼写错误。在spidders目录下检查是否存在jobble.py,结合实际情况找到对应的解决方法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值