小程序开发一使用scrapy爬虫采集数据

50次阅读

共计 1794 个字符,预计需要花费 5 分钟才能阅读完成。

过完年回来,业余时间一直在独立开发一个小程序。主要数据是 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 接口来查看项目爬虫情况,以及执行或者停止执行爬虫。

这样我们就很方便的调这些接口来管理我们的爬虫任务了。

注意点:

  1. 如何部署 scrapyd 到服务器
  2. 如何设置 scrapyd 为系统后台服务及系统启动项

NEXT

下一篇,我们会介绍并且使用很火的一个 nodejs 后台 api 库 – hapijs。完成小程序所需要的所有接口的开发,以及使用定时任务执行爬虫脚本。​​​​

正文完
 0