参考文章:
https://blog.youkuaiyun.com/La_vie_est_belle/article/details/79017358
https://blog.youkuaiyun.com/weixin_42052836/article/details/82315118
https://blog.youkuaiyun.com/zm147451753/article/details/85850526
常规pyinstaller 打包scrapy方式基本分2种:
1.在启动scrapy的命令begin.py文件中import 各种model,然后pyinstaller begin.py,还得把包含VERSION和mime.types的scrapy文件夹复制到生成后的dist里begin文件夹中
2.就是生成一个begin.spec文件,在里面可以hiddenimports里添加需要的model,还可以利用datas,直接把scrapy文件(上面提到的),自己写的douban scrapy文件放进生成后的dist里begin文件夹中
(ps: spec文件内不能有中文字符!不然会报错 gbk xx什么的)
而我这次打包方法就是利用spec文件:
原scrapy文件如下:
https://blog.youkuaiyun.com/qq_38282706/article/details/80058548
当然,我做了些改动,毕竟是1年前的作品了,我进步了嘛!
1.自己写的scrapy爬取豆瓣的py文件:
启动程序的begin.py
# -*- coding: utf-8 -*-
# 打包需要的import(我是用spec打包的,下面那些都可以删掉)
# import urllib.robotparser
# import scrapy.spiderloader
# import scrapy.statscollectors
# import scrapy.logformatter
# import scrapy.dupefilters
# import scrapy.squeues
# import scrapy.extensions.spiderstate
# import scrapy.extensions.corestats
# import scrapy.extensions.telnet
# import scrapy.extensions.logstats
# import scrapy.extensions.memusage
# import scrapy.extensions.memdebug
# import scrapy.extensions.feedexport
# import scrapy.extensions.closespider
# import scrapy.extensions.debug
# import scrapy.extensions.httpcache
# import scrapy.extensions.statsmailer
# import scrapy.extensions.throttle
# import scrapy.core.scheduler
# import scrapy.core.engine
# import scrapy.core.scraper
# import scrapy.core.spidermw
# import scrapy.core.downloader
# import scrapy.downloadermiddlewares.stats
# import scrapy.downloadermiddlewares.httpcache
# import scrapy.downloadermiddlewares.cookies
# import scrapy.downloadermiddlewares.useragent
# import scrapy.downloadermiddlewares.httpproxy
# import scrapy.downloadermiddlewares.ajaxcrawl
# #import scrapy.downloadermiddlewares.chunked
# import scrapy.downloadermiddlewares.decompression
# import scrapy.downloadermiddlewares.defaultheaders
# import scrapy.downloadermiddlewares.downloadtimeout
# import scrapy.downloadermiddlewares.httpauth
# import scrapy.downloadermiddlewares.httpcompression
# import scrapy.downloadermiddlewares.redirect
# import scrapy.downloadermiddlewares.retry
# import scrapy.downloadermiddlewares.robotstxt
# import scrapy.spidermiddlewares.depth
# import scrapy.spidermiddlewares.httperror
# import scrapy.spidermiddlewares.offsite
# import scrapy.spidermiddlewares.referer
# import scrapy.spidermiddlewares.urllength
# import scrapy.pipelines
# import scrapy.core.downloader.handlers.http
# import scrapy.core.downloader.contextfactory
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
# import os,json,csv,re,os,scrapy,pymysql,My_Tool
import subprocess
import multiprocessing
from tkinter import *
class test():
def __init__(self,root):
self.root = root #创建窗口
self.root.title("hello world") #窗口标题
self.root.geometry("320x220") #设定窗口尺寸
Button(text='启动方式:crawl_spider', command=self.crawl_spider).pack()
Button(text='启动方式:sub_call', command=self.sub_call).pack()
Button(text='关闭方法:kill_terminate', command=self.kill_terminate).pack()
Button(text='关闭方法:kill_Popen', command=self.kill_Popen).pack()
#使用scrapy默认的启动方法CrawlerProcess,
# PS:得把原scrapy文件、跟cfg放进文件夹才能运行!
def cr