过完年回来,业余时间一直在独立开发一个小程序。主要数据是8000+个视频和10000+篇文章,并且数据会每天自动更新。
我会整理下整个开发过程中遇到的问题和一些细节问题,因为内容会比较多,我会分成三到四篇文章来进行,本文是该系列的第一篇文章,内容偏python爬虫。
本系列文章大致会介绍一下内容:
数据准备(python的scrapy框架)
接口准备(nodejs的hapijs框架)
小程序开发(mpvue以及小程序自带的组件等)
部署上线(小程序安全域名等配置以及爬虫/接口等线上部署维护)
数据获取
数据获取的方法有很多种,这次我们选择了爬虫的方式,当然写一个爬虫也可以用不同的语言,不同的方式。之前写过很多爬虫,这次我们选择了python的scrapy库。关于scrapy,百度百科解释如下:
Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
学习scrapy,最好的方式就是先阅读一遍文档(Scrapy 1.6 documentation),然后照着文档里的例子写一写,慢慢就熟悉了。里面有几个很重要的概念是必须要理解的:
Items
官方对items的定义是“The main goal in scraping is to extract structured data from unstructured sources, typically, web pages.”,个人理解为数据结构,也就是要爬取数据的字段,最好能和数据库字段对应,便于入库。
Spiders
“Spiders are classes which define how a certain site (or a group of sites) will be scraped, including how to perform the crawl (i.e. follow links) and how to extract structured data from their pages (i.e. scraping items). ”,也就是爬虫比较核心的内容,定义爬虫的方式,一些策略,以及获取那些字段等等。
pipelines
“After an item has been scraped by a spider, it is sent to the Item Pipeline which processes it through several components that are executed sequentially.”,pipelines也就是我们爬虫拿到数据后要进行的处理操作,比如写入到文件,或者链接数据库,并且保存到数据库等等操作,都可以在这里进行操作。
Selectors
“When you’re scraping web pages, the most common task you need to perform is to extract data from the HTML source. ”,这部分就是如何解析html,从爬取到的html文件中解析出所需的数据,可以使用BeautifulSoup、lxml、Xpath、CSS等方法。
几个重要的部分,在上面进行了一些说明。
准备好环境(python3/scrapy等),我们就可以来写一个爬虫项目了。
爬取的内容来自于https://www.jqhtml.com这个网站。
scrapy startproject jqhtml
爬虫爬虫
这样我们就顺利地完成了爬虫项目的编写。运行下,发现数据全部存到了数据库中。
scrapy爬虫项目的部署
scrapy爬虫项目的部署,我们使用官方的scrapyd即可,使用方法也比较简单,在服务器上安装scrapyd并且启动即可,然后在本地项目中配置deploy的路径,本地安装scrapy-client,使用命令deploy即可部署到服务器。
scrapyd提供了一些api接口来查看项目爬虫情况,以及执行或者停止执行爬虫。
这样我们就很方便的调这些接口来管理我们的爬虫任务了。
注意点:
- 如何部署scrapyd到服务器
- 如何设置scrapyd为系统后台服务及系统启动项
NEXT
下一篇,我们会介绍并且使用很火的一个nodejs后台api库 - hapijs。完成小程序所需要的所有接口的开发,以及使用定时任务执行爬虫脚本。