一.,我们理一下使用GitHubActions详解发布爬虫需要哪几个步骤

  1. 上传爬虫代码到 GitHub 仓库
  2. 创建 GitHub Actions 工作流,并提交
  3. 触发 GitHub Actions 工作流运行爬虫
  4. 查看爬虫运行状态

1.提交代码到仓库

python爬取github内容 github 爬虫教程_python

 

 

  如图提交了代码,代码结构如上图

2. GitHub 仓库主页中找到 「Actions」 标签,再点击它。,搜索python相关的,如Python application就够用了

python爬取github内容 github 爬虫教程_定时任务_02

 

 搜索 Python,可以找到一个运行 Python 程序的工作流。就它了。

 

       

python爬取github内容 github 爬虫教程_python_03

 

 点击 Configure 按钮之后,你会进入如下编辑页面。

python爬取github内容 github 爬虫教程_定时任务_04

 

   所谓 GitHub 工作流,其实是一个 YAML 配置文件」,类似于现在很流行的 PaaS、IaaS、云原生应用之类的,都用代码来自动化配置。

   可以看到其中已经有一些默认工作流代码,我们这里只需要稍微改动一下

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python application

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

permissions:
  contents: read

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up Python 3.10
      uses: actions/setup-python@v3
      with:
        python-version: "3.10"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install flake8 pytest
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    - name: Lint with flake8
      run: |
        # stop the build if there are Python syntax errors or undefined names
        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    - name: Test with pytest
      run: |
        pytest

在界面上点击提交(Commit),你应该就会看到在 .github/workflows 目录下生成了 github-trending-crawler.yml 这个工作流配置文件。

简单来说,上面的工作流做了几件事情:

  1. 检出(Checkout)该仓库的代码
  2. 设置 Python 运行环境
  3. 安装依赖
  4. 运行程序

查看运行情况

我们提交了这个工作流,它应该会「自动运行」,因为工作流中默认设置触发条件。

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

示每当我们推送提交(Push Commits)或合并请求(Pull Request)时,该工作流会自动触发执行。

现在我们看看运行情况,如果你同样来到 Actions 页面,你会看到出现了工作流的执行列表。

python爬取github内容 github 爬虫教程_Python_05

 

 点进最新的那个,再点击 build,你会看到相关日志,然后我们展开 Test这个步骤的日志。

python爬取github内容 github 爬虫教程_Python_06

 

 定时任务

运行爬虫怎么能没有「定时任务」呢?而 GitHub Actions 恰巧支持!那么我们就欣然加上吧。

打开之前创建的工作流编辑页面,将在触发条件代码区域中,加上一段代码,编辑后内容如下。

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  schedule:
    - cron:  '0 * * * *'

其中,Cron 表达式 0 * * * * 表示每小时 0 分触发一次。对 Cron 表达式不熟悉的读者,可以参考 Cron Guru[9]

编辑好提交之后,我们应该能看到这个每小时执行的定时爬虫任务。

需要详细了解 GitHub Actions 的触发条件,请参考相关官方文档[10]

 

 

总结

本篇文章介绍了如何利用 GitHub Actions 工作流,来部署一个简单的「爬虫定时任务」。用到了技术如下:

  1. GitHub 代码仓库
  2. GitHub Actions 工作流,包括定时任务触发
  3. Python 爬虫开发,包括依赖库 requests[11]、bs4[12]