原标题:精通Python爬虫从Scrapy到移动应用(文末福利)

我能够听到人们的尖叫声:“Appery.io是什么,一个手机应用的专用平台,它和Scrapy有什么关系?”那么,眼见为实吧。你可能还会对几年前在Excel电子表格上给某个人(朋友、管理者或者客户)展示数据时的场景印象深刻。不过现如今,除非你的听众都十分老练,否则他们的期望很可能会有所不同。在接下来的几页里,你将看到一个简单的手机应用,这是一个只需几次单击就能够创建出来的最小可视化产品,其目的是向利益相关者传达抽取所得数据的力量,并回到生态系统中,以源网站网络流量的形式展示它能够带来的价值。

我将尽量保持简短的启发式示例,在这里它们将展示如何充分利用你的数据。

1.1 选择手机应用框架

借助于适当的工具向手机应用提供数据将是非常容易的事情。目前有许多优秀的跨平台手机应用开发框架,如PhoneGap、使用Appcelerator云服务的Appcelerator、jQuery Mobile和Sencha Touch。

本文将使用Appery.io,因为它可以让我们使用PhoneGap和jQuery Mobile快速创建iOS、Android、Windows Phone以及HTML5手机应用。我和Scrapy都与Appery.io无任何利益关联。我会鼓励你独立进行调研,看看除了本文中提出的功能外,它是否也能符合你的需求。请注意这是一个付费服务,你可以有14天的试用期,不过在我看来,它可以让人无需动脑就能快速开发出原型,尤其是对于那些不是网络专家的人来说,为此付费是值得的。我选择该服务的主要原因是它既能提供手机应用,也能提供后端服务,也就是说我们不需要再去配置数据库、编写REST API或为服务端及手机应用使用其他一些语言。你将看到,我们一行代码都不用去编写!我们将会使用它们的在线工具;在任何时候,你都可以下载该应用,并作为PhoneGap项目,使用PhoneGap的所有功能。

在本文中,你需要接入互联网连接,以便使用Appery.io。同时,还需要注意的是该网站的布局可能在未来会有所变化。请将我们的截屏作为参考,而不要在发现该网站外观不同时感到惊讶。

1.2 创建数据库和集合

第一步是通过单击Appery.io网站上的Sign-Up按钮并选取免费方案,来注册免费的Appery.io方案。你需要提供用户名、邮箱地址以及密码,然后就会创建好新账户了。等待几秒钟后,账户完成激活。然后就可以登录到Appery.io的仪表盘了。现在,开始准备创建新的数据库以及集合,如图1.1所示。

图1.1 使用Appery.io创建新数据库及集合

为了完成该操作,需要按照如下步骤执行。

1.单击Databases选项卡(1)。

2.然后单击绿色的Create new database(2)按钮。将新数据库命名为scrapy(3)。

3.现在,单击Create按钮(4)。此时会自动打开Scrapy数据库的仪表盘,在这里,你可以创建新的集合。

在Appery.io的术语中,一个数据库是由一组集合组成的。大致来说,一个应用使用一个单独的数据库(至少在最初时是这样),每个数据库中包含多个集合,比如用户、房产、消息等。Appery.io默认已经提供了一个Users集合,其中包括用户名和密码(它们有很多内置功能)。图1.2所示为创建集合的过程。

图1.2 使用Appery.io创建新数据库及集合

现在,我们添加一个用户,用户名为root,密码为pass。当然,你也可以选择更加安全的用户名和密码。为实现该目的,请单击侧边栏的Users集合(1),然后单击+Row添加用户/行(2)。在出现的两个字段中填入用户名和密码(3)和(4)。

我们还需要创建一个新的集合,用于存储Scrapy抓取到的房产数据,并将该集合命名为properties。通过单击绿色的Create new collection按钮(5),将其命名为properties(6),然后单击Add按钮(7),就可以创建新的集合了。现在,我们还必须对该集合进行一些定制化处理。单击+Col添加数据库列(8)。每个数据库列都有其类型,用于对值进行校验。除了价格是数值类型外,大部分字段都是简单的字符串类型。我们将通过单击+Col添加几个列(8),并填充列名(9),如果不是字符串类型的话,还需要选择类型(10),然后单击Create column按钮(11)。重复该过程5次,创建表1.1中展示的列。

表1.1

在集合创建的最后,你应该已经将所需的所有列都创建完成了,就像表1.1中所示的那样。现在已经准备好从Scrapy中导入一些数据了。

1.3 使用Scrapy填充数据库

首先,我们需要一个API key。我们可以在Settings选项卡(1)中找到它。复制该值(2),然后单击Collections选项卡(3)回到房产集合中,过程如图1.3所示。

图1.3 使用Appery.io创建新数据库及集合

非常好!现在需要将数据导入到Appery.io中。我们先将项目以及名为easy的爬虫(easy.py)复制过来,并将该爬虫重命名为tomobile(tomobile.py)。同时,编辑文件,将其名称设为tomobile。

图1.3 使用Appery.io创建新数据库及集合

非常好!现在需要将数据导入到Appery.io中。我们先将项目以及名为easy的爬虫(easy.py)复制过来,并将该爬虫重命名为tomobile(tomobile.py)。同时,编辑文件,将其名称设为tomobile。

此时,你需要对Scrapy的主设置文件进行一些小修改,将之前复制的API key添加进来。现在,我们所需要做的就是将如下行添加到properties/settings.py文件中。

不要忘记将APPERYIO_DB_ID替换为你的API key。此外,还需要确保设置中的用户名和密码,要和你在Appery.io中创建数据库用户时使用的相同。要想向Appery.io的数据库中填充数据,请像平常那样启动scrapy crawl。

这次的输出会有些不同。可以看到在最开始的几行中,有一行是用于启用ApperyIoPipeline这个Item管道的;不过最明显的是,你会发现尽管抓取了100个Item,但是却有200次请求/响应。这是因为Appery.io的管道对每个Item都执行了一个到Appery.io服务端的额外请求,以便写入每一个Item。这些带有api.appery.io这个URL的请求同样也会在日志中出现。

当回到Appery.io时,可以看到在properties集合(1)中已经填充好了数据(2),如图1.4所示。

图1.4 使用数据填充properties集合

1.4 创建手机应用

创建一个新的手机应用非常简单。我们只需单击Apps选项卡(1),然后单击绿色的Create new app按钮(2)。填写应用名称为properties(3),然后单击Create按钮进行创建就可以了,该过程如图1.5所示。

图1.5 创建新手机应用及数据库集合

1.4.1 创建数据库访问服务

创建新应用时的选项数量可能会有些多。使用Appery.io的应用编辑器,可以写出复杂的应用,不过我们将尽可能保持事情简单。我们最初需要的就是创建一个服务,能够让我们从应用中访问Scrapy数据库。为了达到这一目的,需要单击长方形的绿色按钮CREATE NEW(5),然后选择Database Services(6)。这时会弹出一个新的对话框,让我们选择想要连接的数据库。选择scrapy数据库(7)。这个菜单中的大部分选项都不会用到,现在只需要单击展开properties区域(8),然后选择List(9)。在后台,它会为我们编写代码,使得我们使用Scrapy爬取的数据可以在网络上使用。最后,单击Import selected services按钮完成(10)。

1.4.2 创建用户界面

下面将要开始创建应用所有的可视化元素了,这将会使用编辑器中的DESIGN选项卡来实现,如图1.6所示。

图1.6 创建用户界面

从页面左侧的树中,展开Pages文件夹(1),然后单击startScreen(2)。UI编辑器将会打开该页面,我们可以在其中添加一些控件。下面使用编辑器编辑标题,以便对其更加熟悉。单击头部标题(3),然后会发现屏幕右侧的属性区域会变为显示标题的属性,其中包含一个Text属性,将该属性值修改为Scrapy App,屏幕中间的标题也会相应地更新。

然后,需要添加一个网格组件,从左侧面板(5)中拖曳Grid控件即可实现。该控件有两行,而根据我们的需求,只需要一行即可。选择刚刚添加的网格。当手机视图顶部的缩略图区域(6)变灰时,就可以知道该网格已经被选取了。如果没有被选取,单击该网格以便选中。然后右侧的属性栏会更新为网格的属性。这里只需要将Rows属性设置为1,然后单击Apply即可(7)和(8)。现在,该网格就会被更新为只有一行了。

最后,拖拽另外一些控件到网格中。首先要在网格左侧添加图片控件(9),然后在网格右侧添加链接(10),最后在链接下面添加标签(11)。

就布局而言,此时已经足够。接下来将从数据库中向用户界面输入数据。

1.4.3 将数据映射到用户界面

目前为止,我们花费了大量时间在DESIGN选项卡中,以创建应用的可视化效果。为了将可用的数据链接到这些控件中,需要切换到DATA选项卡(1),如图1.7所示。

图1.7 将数据映射到用户界面

选择Service(2)作为数据源类型。由于前面创建的服务是唯一可用的服务,因此它会被自动选取。然后可以继续单击Add按钮(3),此时服务属性将会在其下方列出。只要按下了Add按钮,就会看到像Before send以及Success这样的事件。我们可以通过单击Success后面的Mapping按钮,定制服务成功调用后要做的事情。

此时会打开Mapping action editor,我们可以在这里完成连线。该编辑器有两侧。左侧是服务响应中可用的字段,而在右侧中可以看到前面步骤中添加的UI控件的属性。两侧都有一个Expand all链接,单击该链接可以看到所有可用的数据和控件。接下来,需要按照表1.2中给出的5个映射,从左侧向右侧拖曳。

表1.2

1.4.4 数据库字段与用户界面控件间映射

表1.2中项的数量可能会与你的情况有些许差别,不过由于每种控件都只有一个,因此出错的可能性非常小。通过设置这些映射,我们通知Appery.io在后台编写所有代码,以便在数据库查询成功时使用数据库中的值加载控件。下面,可以单击Save and return按钮(6)继续。

此时又回到了DATA选项卡,如图1.7所示。由于还需要返回到UI编辑器当中,因此需要单击DESIGN选项卡(7)。在屏幕下方,你会发现一个EVENTS区域(8),尽管该区域一直存在,但它刚刚才被展开。在EVENTS区域中,我们让Appery.io做一些事情,作为对UI事件的响应。这是我们需要执行的最后一个步骤。它会让应用在UI加载完成后立即调用服务取回数据。为了实现该功能,我们需要选择startScreen作为组件,并将事件保持为默认的Load选项。然后选择Invoke service作为action,保持Datasource为默认的restservice1选项(9)。最后,单击Save(10),这就是我们为创建这个手机应用所做的所有事情了。

1.4.5 测试、分享及导出你的手机应用

现在,可以测试这个应用了。我们所需要做的事情就是单击UI生成器顶部的TEST按钮(1),如图1.8所示。

图1.8 运行在你浏览器中的手机应用

手机应用将会在浏览器中运行。这些链接都是有效的(2),可以浏览。可以预览不同的手机屏幕方案以及设备方向,也可以单击View on Phone按钮,此时会显示一个二维码,你可以使用移动设备扫描该二维码,并预览该应用。你只需分享其生成的链接,其他人也可以在他们的浏览器中尝试该应用。

只需单击几下,我们就可以将Scrapy抓取的数据组织起来,并展示在手机应用中。如果你需要更进一步地定制该应用,可以参考Appery.io提供的教程,其网址为http://devcenter.appery.io/tutorials/。当一切准备就绪时,就可以通过EXPORT按钮导出该应用了,Appery.io提供了非常丰富的导出选项,如图1.9所示。

图1.9 你可以将应用导出到大部分主流移动平台

你可以导出项目文件,在自己喜欢的IDE中进一步开发;也可以获得二进制文件,发布到各个平台的手机市场当中。

1.5 本文小结

使用Scrapy和Appery.io这两个工具,我们拥有了一个可以抓取网站并且能够将数据插入到数据库中的系统。此外,我们还得到了RESTful API,以及一个简单的可以用于Android和iOS的手机应用。对于高级特性和进一步开发,你可以更加深入到这些平台中,将其中部分开发工作外包给领域专家,或是研究替代方案。现在,你只需要最少的编码,就能够拥有一个可以演示应用理念的最小产品。

你会注意到,在如此短的开发时间中,我们的应用看起来还不错。这是因为它使用了真实的数据,而不是占位符,并且所有链接都是可用且有意义的。我们成功创建了一个尊重其生态(源网站)的最小可用产品,并以流量的形式将价值回馈给源网站。

现在,我们可以开始学习如何使用Scrapy爬虫在更加复杂的场景下抽取数据了。

本文摘自《精通Python爬虫框架Scrapy》

《精通Python爬虫框架Scrapy》

【美】迪米特里奥斯 考奇斯-劳卡斯(Dimitrios Kouzis-Loukas)箸

点击封面购买纸书

Python3 scrapy教程,全面剖析网络爬虫技术的实现原理,通过爬取示例演示Scrapy的应用,涵盖从桌面端爬取到移动端爬取,实时爬取在内的所有内容。

本书讲解了Scrapy的基础知识,讨论了如何从任意源提取数据,如何清理数据,以及如何使用Python和第三方API进行处理,以满足自身需求。本书还讲解了如何将爬取的数据高效地馈入数据库、搜索引擎和流数据处理系统(比如Apache Spark)。在学习完本书后,你将对数据爬取胸有成竹,并将数据应用在自己的应用程序中。

在“异步社区”后台回复“关注”,即可免费获得2000门在线视频课程;推荐朋友关注根据提示获取赠书链接,免费得异步图书一本。赶紧来参加哦!

扫一扫上方二维码,回复“关注”参与活动!

阅读原文,购买《精通Python爬虫框架Scrapy》返回搜狐,查看更多

责任编辑:

精通python爬虫框架-精通Python爬虫从Scrapy到移动应用(文末福利)相关推荐

  1. 爬取人民日报_【爬虫系列】人民日报半个世纪的资料(文末福利)

    在资料库中人民日报从1957年-2002年近半个世纪的报纸资料: http://www.ziliaoku.org/rmrb/ 如此好的资料,就应该自己收藏到本地,因为说不定哪一天,网上的资料就被删除了 ...

  2. Python一分钟带你探秘不为人知的网络昆虫!(文末获取爬虫福利!)

    在这个到处都充斥着互联网和人工智能的时代,你真的了解它吗?可曾想过你每天都在浏览的网页信息都被无数只网络爬虫监控着?你也可能有听到过这样一个名词,但是你真的了解它吗? 到底什么是网络爬虫?今天大灰狼就 ...

  3. 文末福利 | Python3 网络爬虫:老板,需要特殊服务吗?

    文末福利!送书啦! 您若喜欢,给公众号设置星标,第一时间获取推送 1 前言 网络爬虫,爬天爬地爬空气. 除了常规的下载文字.图片.音频这些,还能干啥? 还能干的有很多,比如一些「多种多样」的特殊服务. ...

  4. python识别手写文字_如何快速使用Python神经网络识别手写字符?(文末福利)

    原标题:如何快速使用Python神经网络识别手写字符?(文末福利) 点击标题下[异步社区]可快速关注 在本文中,我们将进一步探讨一些使用Python神经网络识别手写字符非常有趣的想法.如果只是想了解神 ...

  5. 最强旅游攻略 | 用Python分析国庆中秋最佳旅游景点 (文末福利)

    作者 | 裸睡的猪 头图 | CSDN下载自视觉中国 文末福利,不要错过哦! 正文 2020年国庆中秋双节马上就要到来 昨天和朋友聊天: 我:"这8天你准备去哪里玩" 朋友:&qu ...

  6. 精通python爬虫框架-精通Python爬虫框架Scrapy.pdf

    作 者 :(美)迪米特里奥斯·考奇斯·劳卡斯(Dimitrios Kouzis Loukas)著:李斌译 出版发行 : 北京:人民邮电出版社 , 2018.02 ISBN号 :978-7-115-47 ...

  7. python scrapy框架爬虫_Scrapy爬虫框架教程(一)-- Scrapy入门

    前言 转行做python程序员已经有三个月了,这三个月用Scrapy爬虫框架写了将近两百个爬虫,不能说精通了Scrapy,但是已经对Scrapy有了一定的熟悉.准备写一个系列的Scrapy爬虫教程,一 ...

  8. python 爬虫框架_Python网络爬虫-scrapy框架的使用

    1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...

  9. python多线程爬虫框架_普通爬虫vs多线程爬虫vs框架爬虫,Python爬对比

    前言 本文的文字及图片过滤网络,可以学习,交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本开发环境 Python 3.6 皮查姆 目标网页分析 网站就选择发表情这个网站吧 网站是静 ...

最新文章

  1. 数据库和数据仓库的区别
  2. 雅马哈发电机换机油教程_奥迪老A4B7 EA113 1.8T发动机严重烧机油大修彻底解决
  3. python flask跨域_Flask框架踩坑之ajax跨域请求实现
  4. ARM AMBA 外围设备 的datasheet
  5. Java11 新特性
  6. synchronized 底层如何实现?什么是锁升级、降级?
  7. 7-4 sdut-求两个整数之和(II)
  8. mysql缺失值处理方法,插值MySQL表中的缺失值
  9. 手把手教你整合最优雅SSM框架
  10. 初译 Support Vector Machines:A Simple Tutorial(一)
  11. Windows打印服务器上无法删除打印机
  12. 一对多关联关系映射和设置级联属性
  13. 福利!H3CNE认证网络工程师GB0-191 考试试题库超详细解析-02。持续更新~~
  14. 青春三宝:书籍、时间和健康
  15. 计算机考研分数403,总分403分过来人分享成功考研经验_跨考网
  16. Unity3D-粒子光圈
  17. 基于单片机的盆栽自动浇花系统-毕设课设protues仿真全套资料
  18. xMAP/NMAP/MIAP/移动办公/手机办公/移动适配
  19. 8.0强行转换后变成了7_如何将网页转换为 PDF,保存在本地备用?
  20. 魔界中的黑V天險(2)

热门文章

  1. 5训练需要更改参数吗_这就是需要的瘦肚子训练,5个杠铃片腹肌训练动作暴汗燃脂瘦腰腹...
  2. 光流 速度_[论文笔记] FlowNet 光流估计
  3. 趣谈网络协议笔记-二(第十讲)
  4. Vim - 视图模式
  5. 可变导向车道——为了缓解高峰压力的临时转向车道
  6. Trie(前缀树/字典树)及其应用
  7. python二维数组初始化
  8. 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!...
  9. angular指令:tm.tags添加/删除标签
  10. Lodop中特殊符号¥打印设计和预览不同