Scrapy爬虫学习记录

昨天休息的时候偶然发现了一个的球鞋网站,上面有很多关于球鞋的资讯。于是,决定现学现卖,学习scrapy把数据都给爬下来。

故事的开端应该交代我的工具:

硬件:15寸MBP 10.10.5系统

软件:Python, Scrapy

如果你是Mac,那么你的电脑上面应该已经装好了Python了,接下来你需要装Scrapy,这些都安装好了之后你就可以开始你的爬虫之旅了。

什么是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的文件,这里面存的就是爬取下来的数据。

结尾

这只是一个爬虫的很初级的一个阶段,需要学的还有很多。比如怎样绕过网站的反爬虫机制,怎样实现一个分布式的爬虫等等。如果你觉得这篇文章对你还有那么点用,你可以请我喝瓶可乐,小瓶儿的就可以。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

联机日志文件过小引发的log file 相关等待

      Oracle 联机重做日志文件记录了数据库的所有变化(DML,DDL或管理员对数据所作的结构性更改等),用于对于意外删除或宕机利用日志文件实现数据恢...

10120
来自专栏Android机动车

Android 8.0 功能和 API(翻译自Google官网)

Android 8.0 为用户和开发者引入多种新功能。本文重点介绍面向开发者的新功能。

19130
来自专栏VMCloud

【解析向】腾讯云的Windows Server日志配置收集工具是个什么鬼?(5)

且听笔者一句劝,无论是Windows还是Linux抑或是Unix都是大部分理论是相同的,与其与人争吵对比这几个平台之类的差异,不如好好研究下底层的各个子系统...

28170
来自专栏北京马哥教育

Python神技能 | 使用爬虫获取汽车之家全车型数据

最近想在工作相关的项目上做技术改进,需要全而准的车型数据,寻寻觅觅而不得,所以就只能自己动手丰衣足食,到网上获(窃)得(取)数据了。 汽车之家是大家公认的数据做...

70590
来自专栏数据库新发现

Statspack之十三-Enqueue

http://www.eygle.com/statspack/statspack13.htm

9010
来自专栏达摩兵的技术空间

app中的webview通识篇(上)

如果你还是第一次与app合作开发webview的页面,那么对于如何调试,可能有哪些问题可能是不够了解的。本文尝试性的根据自己的经验给大家一个入门级别的了解,如果...

90420
来自专栏极客猴

爬虫实战一:爬取当当网所有 Python 书籍

我们已经学习 urllib、re、BeautifulSoup 这三个库的用法。但只是停留在理论层面上,还需实践来检验学习成果。因此,本文主要讲解如何利用我们刚才...

13930
来自专栏Python中文社区

Python爬虫框架资源集合,包括Scrapy、PySpider等

scrapy - 最出名的网络爬虫,一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据...

63070
来自专栏技术翻译

为微服务架构编写端到端测试

微服务架构的一个主要方面是应用程序形成为松散耦合的服务的集合,每个服务可以独立地部署并且通过某种轻型协议相互通信。

26310
来自专栏Python数据科学

Python爬虫之Scrapy学习(基础篇)

在爬虫的路上,学习scrapy是一个必不可少的环节。也许有好多朋友此时此刻也正在接触并学习scrapy,那么很好,我们一起学习。开始接触scrapy的朋友可能会...

15830

扫码关注云+社区

领取腾讯云代金券