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

本贴最后更新于 2004 天前,其中的信息可能已经事过境迁

​​过完年回来,业余时间一直在独立开发一个小程序。主要数据是 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。完成小程序所需要的所有接口的开发,以及使用定时任务执行爬虫脚本。

  • 小程序
    77 引用 • 219 回帖 • 2 关注
  • Scrapy
    7 引用 • 12 回帖
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • 数据采集
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...