非框架式爬虫的上线部署 Python程序打包处理

鳄鱼君Ba

发表文章数:514

热门标签

, , , ,

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python教程 » 非框架式爬虫的上线部署 Python程序打包处理

对于非框架式的爬虫程序,其部署方式如下:

  1. 创建可执行程序,使用者只需要双击程序即可运行爬虫程序
  2. 制定任务计划程序,利用计算机的任务管理器来控制爬虫程序的运行时间,不需要人工干预,实现自动化爬虫
  3. 创建服务程序,利用计算机的服务程序来运行爬虫程序,只要计算机没有关机,爬虫每时每刻都在运行

创建可执行程序

对于爬虫使用者来说,他们喜欢双击运行程序,而不是执行一些命令。因此,我们需要将程序打包成可执行程序。可执行程序是可在操作系统存储空间中浮动定位的二进制可执行程序,它可以加载到内存中,由操作系统加载并执行。在Windows操作系统上,它的可执行程序主要以.exe为后缀的文件表示,这不多介绍,都知道的!

非框架式开发是指使用urllib、requests、BeautifulSoup、xpath等爬虫模块实现的程序,整个过程不涉及爬虫框架,例如Scrapy框架、PySpider框架等等

Python将py文件打包成EXE文件需要借助第三方模块实现,目前第三方的打包模块主要有三种:py2exePyInstallercx_Freeze。其中,PyInstaller比较常用,这里以它为例。

使用PyInstaller打包EXE之前,需要安装PyInstaller模块,安装方式可以使用pip指令:pip install pyinstaller

PyInstaller成功安装后,我们在F盘里创建文件夹spider并在文件夹里创建mySpider.py文件,然后打开mySpider.py文件,编写一个简单的爬虫程序,代码如下:

import requests
res=requests.get("https://www.e1yu.com")
with open("F:\\spider\\data.html","w",encoding="utf-8") as f:
    f.write(res.text)

上述代码是访问鳄鱼君Ba,并将网页内容写入spider文件夹的data.html文件。下一步在F盘创建pack文件夹,打开CMD窗口并将CMD当前的路径切换到pack文件夹所在路径,然后在CMD窗口输入程序打包指令:pyinstaller F:\spider\mySpider.py

每次修改mySpider.py文件,就需要重新打包!

按回车键运行指令的时候,CMD窗口会出现相关的运行信息,直到出现“completed successfully”就代表程序已打包成功,然后我们呢在F盘下的pack文件夹下就可以看到相关文件,dist文件夹下有mySpider.exe,还有很多pyd和dll文件。

找到并运行mySpider.exe,会出现一个运行窗口,如果程序运行出错都会显示在运行窗口时。程序运行完成,窗口会自动关闭,如果窗口没有出现错误信息,说明程序运行成功。程序运行成功后,会在F:\\spider文件夹下生成data.txt,可自行查看!

mySpider.exe所在的文件夹有很多的pyd和dll文件,如果使用者操作不当,删除某个文件,就会导致mySpider.exe程序无法运行或者出错。我们可以在打包的时候,将依赖文件一起打包到mySpider.exe文件里:

pyinstaller -F -w F:\spider\mySpider.py

参数-F必须大写,这是将依赖文件打包到mySpider.exe文件;参数-w必须小写,这是隐藏程序控制台,可以美化程序运行,PyQt5和Selenium会出现程序控制台。

制定任务计划程序

虽然程序只需要简单的双击就可以运行,但是仍然显得不够人性化。现在我们需要将可执行n工序实现自动化运行。

在操作系统中,有一个系统功能叫做定时任务,我们可以通过定时任务来实现。不同的操作系统,定时任务有不同的操作方式,以Windows为例进行介绍。在计算机的“控制面板”里找到并单击“管理工具”图标,在管理工具的窗口中可以看到“任务计划程序”,单击后打开任务计划程序窗口:

非框架式爬虫的上线部署 Python程序打包处理

如果找不到,可以打开运行窗口(菜单键+R),输入taskschd.msc命令并回车!

从任务计划程序窗口可以看到,窗口正上方是任务计划列表,每个任务计划都有常规、触发器、操作、条件、设置历史记录等基本功能,各个功能说明如下:

  1. 常规:设置当前任务计划的名称、位置、创建者和任务描述等基本信息。
  2. 触发器:设置任务的触发条件,比如任务的运行时间、运行间隔、运行条件等信息。
  3. 操作:指定当前任务所运行的程序,这是将程序与任务进行绑定。
  4. 条件:与触发器一起作为任务运行的条件,如设置计算机的状态、电源状态和网络状态来决定是否执行任务。
  5. 设置:根据任务运行期间的状态进行设置,如设置运行超时、运行失败等异常操作。
  6. 历史记录:负责记录运行信息,Windows7、10系统已被禁用。

了解任务计划程序的基本功能后,接下来是创建任务计划,单击右侧的创建任务就会出现创建任务窗口,该窗口出现5个功能选项卡,分别用来设置任务的基本功能。

在“常规”选项卡里,一般设置任务名称和描述即可,其他设置使用默认即可,我们将任务名称设为mySpider,描述内容为“run mySpider.exe”即可完成常规选项卡的设置。然后单击“触发器”选项卡,单击“新建”按钮,创建新的触发器:

非框架式爬虫的上线部署 Python程序打包处理

新建触发器的窗口看到,开始任务是一个文本下拉框,默认值是制定计划时,下拉框还有其他触发条件,如用户登录Windows时触发、启动Windows时触发和发生事件时触发等触发条件,不同的触发条件有不同的设置。

以按制定计划时为例,将触发器设为每天中午12点开始运行,每隔1小时就运行一次,持续时间为无限期,该设置说明:只要电脑没有关机,该任务就会无限期运行,运行间隔为1小时;如果电脑关机重启了,当电脑时间到了中午12点就会无限期运行。

非框架式爬虫的上线部署 Python程序打包处理

触发器创建后,还可以继续添加新的触发器或者编辑(删除)已有的触发器,一个任务计划里可以有多个触发器,以便满足多方面的需求:

非框架式爬虫的上线部署 Python程序打包处理

下一步单击“操作”选项卡,将爬虫程序mySpider.exe与计划任务进行绑定,单击“新建”按钮,创建新的操作。在新建操作的窗口里单击浏览按钮并将爬虫程序mySpider.exe选中:

非框架式爬虫的上线部署 Python程序打包处理

操作创建后,还可以继续添加新的操作或者编辑(删除)已有的操作,一个任务计划里也可以支持多个操作同时存在。对于条件和设置选项卡,一般无须设置,使用默认值即可满足大部分的需求。

任务创建成功后,在任务计划程序窗口里找到新创建的任务mySpider,若想对已创建的任务进行修改,只需双击任务即可进入修改窗口:

非框架式爬虫的上线部署 Python程序打包处理

创建服务程序

对于某些人来说,任务计划执行依然不能满足他们的使用需求,他们希望爬虫程序每时每刻都在运行或者处于待命状态,且程序运行在运行的时候不能出现运行窗口,只希望通过配置文件来控制爬虫的运行和待命状态。

要让爬虫每时每刻都处于活动状态,可以将爬虫设置为一个死循环,每次循环的等待时间设为10s,想要爬虫程序长期运行又不能出现程序运行窗口,只能将爬虫程序以服务程序的形式运行。首先我们将爬虫程序mySpider.py的功能进行修改:

import requests
import time
while True:
    # 读取配置文件的任务
    with open(r'F:\\spider\\task.txt','r') as f:
        task=f.read()
    for i,url in enumerate(task.split(',')):
        if url:
            res=requests.get(url)
            path=r'F:\\spider\\%s.html'%str(i)
            with open(path,'w',encoding='utf-8') as q:
                q.write(res.text)
    # 清空配置文件的任务列表
    with open(r'F:\\spider\\task.txt', 'w') as w:
        task = w.write('')
    time.sleep(2)

打包的代码不要出现中文输出

上述代码将爬虫程序设为一个死循环,每次循环都会读取配置文件task.txt的内容,从文件内容提取每个URL地址并对其实现HTTP请求,将响应内容写入新的txt文件,最后清空配置文件内容,防止下次循环重复执行。

将修改后的mySpider.py文件进行打包处理,生成mySpider.exe文件。下一步是把EXE文件生成服务程序,这个实现过程需要使用辅助工具NSSM,在浏览器中打开NSSM网站(http://www.nssm.cc/download)下载NSSM工具

非框架式爬虫的上线部署 Python程序打包处理

将下载后的NSSM压缩包进行解压处理,然后根据计算机的位数选择相应的文件夹。以计算机的64位为例,打开CMD窗口并将路径切换到NSSM的win64文件夹,输入NSSM指令(nssm install)运行NSSM,NSSM只能通过cmd窗口运行,并且必须在nssm.exe目录下。如果直接双击nssm.exe只会出现NSSM的指令信息,可以使用指令信息来使用NSSM功能。

非框架式爬虫的上线部署 Python程序打包处理

NSSM service installer窗口里,Path文件框选择已打包好的mySpider.exe文件,Service Name是对服务程序进行命名,我们将其命名为mySpider,最后单击Install service按钮即可安装服务程序。

服务程序安装成功后,右键单击桌面上的“此电脑”图标,在弹出的菜单中选择“管理”菜单项;在打开的计算机管理窗口中,单击左侧的“服务和应用程序/服务”菜单项;在右侧的窗口中就会打开服务程序;在服务程序列表中找到mySpider服务并单击“启动此服务”:

非框架式爬虫的上线部署 Python程序打包处理

或者使用快捷键:菜单键+R打开运行窗口,输入命令:services.msc即可!

配置服务还可以使用命令,这个比较麻烦,感兴趣的可以百度搜索一下!

服务程序启动后,爬虫程序每隔3秒(自己设定)就会运行一次,如果F:\spider\task.txt的文件内容不为空,爬虫程序就会爬取数据并且清空文件内容;如果文件内容为空,爬虫就不做任何操作,可认为是处于一种待命状态。

https://www.e1yu.com,https://www.baidu.com,

服务程序开启后,只要计算机处于开机状态,服务就会一直处于运行状态,如果不想使用服务,可在服务程序列表中停止服务。此外,还可以将服务从服务程序列表删除。使用快捷键打开运行窗口,输入删除指令sc delete mySpider即可删除服务程序mySpider。

未经允许不得转载:作者:鳄鱼君Ba, 转载或复制请以 超链接形式 并注明出处 鳄鱼君Ba
原文地址:《非框架式爬虫的上线部署 Python程序打包处理》 发布于2020-06-28

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

7 + 3 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册