昨天休息的时候偶然发现了一个的球鞋网站,上面有很多关于球鞋的资讯。于是,决定现学现卖,学习scrapy把数据都给爬下来。
故事的开端应该交代我的工具:
硬件:15寸MBP 10.10.5系统
软件:Python, Scrapy
如果你是Mac,那么你的电脑上面应该已经装好了Python了,接下来你需要装Scrapy,这些都安装好了之后你就可以开始你的爬虫之旅了。
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。你可以在这里看到Scrapy的更多介绍。
Python中通用的包管理工具是pip,类似于Ruby的gem, node.js的npm之类的东西啦。安装好了pip之后,你只需要一句下面的命令就装好了Scrapy。
pip install Scrapy
新建一个爬虫项目
scrapy startproject sneaker
目录结构如图
目录结构图
说下里面重要的几个文件
settings.py:从名字就可以看到它是一个配置文件,里面会写上你爬虫的一些配置。
sneaker_spider.py:爬虫,真正干活的东西
items.py:爬取下来的数据,相当于是一个model
pipelines.py:当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。
这里主要需要你来完成的是sneaker_spider.py,我先上一张截图
在这个spider里面有这样几个地方你需要关注,allowed_domains,start_urls,rules。
allowed_domains:爬虫只会爬取这个名单里域名下的数据
start_urls:从哪个地址开始爬取
rules:爬取规则。爬虫会根据这里的规则对页面中出现的链接进行解析,如果匹配正则表达式的话,爬虫会对这个链接继续爬取。
在这个类里面我只写了一个函数parse_item,爬虫爬取到数据之后会丢到这里来进行解析,你可以使用Xpath表达式来取得你想要的元素。
关于Xpath,网上有很多资料可以查到,要获取到一个元素的xpath,你可以使用浏览器提供的功能来获取到,当然这里的浏览器我不包括IE,哈哈。比如chrome,你打开Inspect Element之后,选择你的目标元素,然后右键选择copy Xpath,接下来你可以在命令行执行下面的命令验证下:
$x('your xpath')
取到你想要的数据之后,用他们来初始化你的Model就可以了,这里就是我的SneakerItem。
接下来,我需要去pipelines.py对我的item进行处理,我把它存到了一个json文件里面。
pipelines.py
接下来回到你项目的根目录,然后敲下scrapy crawl sneaker,接着你会看到你的命令行里滚过一大片数据,当他停下来的时候也就大功告成了。你会看到你的目录里多了一个items.json的文件,这里面存的就是爬取下来的数据。
这只是一个爬虫的很初级的一个阶段,需要学的还有很多。比如怎样绕过网站的反爬虫机制,怎样实现一个分布式的爬虫等等。如果你觉得这篇文章对你还有那么点用,你可以请我喝瓶可乐,小瓶儿的就可以。