过完年回来,业余时间一直在独立开发一个小程序。主要数据是 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
修改 items
添加爬虫
编写 pipeline
修改配置文件
这样我们就顺利地完成了爬虫项目的编写。运行下,发现数据全部存到了数据库中。
scrapy 爬虫项目的部署
scrapy 爬虫项目的部署,我们使用官方的 scrapyd 即可,使用方法也比较简单,在服务器上安装 scrapyd 并且启动即可,然后在本地项目中配置 deploy 的路径,本地安装 scrapy-client,使用命令 deploy 即可部署到服务器。
scrapyd 提供了一些 api 接口来查看项目爬虫情况,以及执行或者停止执行爬虫。
这样我们就很方便的调这些接口来管理我们的爬虫任务了。
注意点:
- 如何部署 scrapyd 到服务器
- 如何设置 scrapyd 为系统后台服务及系统启动项
NEXT
下一篇,我们会介绍并且使用很火的一个 nodejs 后台 api 库 - hapijs。完成小程序所需要的所有接口的开发,以及使用定时任务执行爬虫脚本。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于