python打包scrapy项目 ,可移植文件夹

python打包scrapy项目《打包结果是一个可移植的文件夹》
这是打包后的文件结构,打包前只有Fund文件夹+hooks文件夹+scrapy.cfg+start.py
第一步:
start.py文件 是打包的入口(项目完成前并没有它,只为打包而生)

#coding = utf-8
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

-- coding: utf-8 --

import scrapy
import json
from Fund.items import FundItem #入口把你的爬虫主要代码都带过来了Fund文件夹下items.py中的一个类FundItem;
from scrapy.http.response.html import HtmlResponse as HtmlResponse
from scrapy.http.request import Request

#解决方案–官网 \Fund\spiders\fund_spider.py 爬虫主py的代码全部放在这里【只保留部分代码参考】
class FundSpider(scrapy.Spider):
name = ‘fund’ #爬虫名称

headers = {                                                        # 请求头

    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36",

}
max_page = 7   # 需要爬取的页数
temp_page = 0  # 爬取第x页    
base_url2 ='hd/'      # 具体信息页的链接前半段
urls = [f'htt)]  # 列表页 url

def start_requests(self):
    '''
    爬虫发起的第一个请求
    '''
    yield scrapy.Request(
        self.urls[0],

        #callback=self.parse,    #这条我注释掉了,因为执行报错OSError: could not get source code【后面还有一处,修改了删除,因这个报错,第一处】
        dont_filter=True
        #verify=False
    )

def parse(self,response):
    response = json.loads(response.body_as_unicode())
    
    for num in range(100):
        url2 = self.base_url2 + response.get('content')[num].get('url')
        yield scrapy.Request(url2,callback=self.info_parse) #,verify=False)               # 发起 request 请求,并进入回调函数
    
    self.temp_page += 1                                                   # 爬取第 x 页
    if self.temp_page < self.max_page:
        yield scrapy.Request(
            self.urls[self.temp_page],
            method="POST",
            headers=self.headers,
            body="{}",
            #callback=self.parse,  #这条我注释掉了,因为执行报错OSError: could not get source code【后面还有一处,修改了删除,因这个报错,第二处】
            dont_filter=True
            #verify=False                                              # 防止 scrapy 对该 url 去重 
        )  

def info_parse(self,response):
    item = FundItem()
    #print(response.text)
    #hxs = Selector(response)                                                     # 实例化一个 item
    for val in range(15):            
        title = response.xpath('//div[1][@class="table-response"]/table/tbody/tr[{}]/td[1]/text()'.format(val)).extract_first()
  
   
        else:
            pass
    #yield item   #这条我注释掉了,因为执行报错OSError: could not get source code【后面还有一处,修改了删除,因这个报错,第三处】
    return item

#创建一个进程
process = CrawlerProcess(get_project_settings())

‘followall’ is the name of one of the spiders of the project.

process.crawl(FundSpider) #避开命令行
process.start()

入口py文件编辑好后,就直接打包,会生成start.spec文件;

第二不
构建hooks文件,系统性的导入文件。这里分为两步,第一步,构建scrapy-hook.py文件;第二步,构建start.spec文件。

#coding=utf-8
#调用hooks,批量导入数据与模块
from PyInstaller.utils.hooks import collect_submodules, collect_data_files

This collects all dynamically imported scrapy modules and data files.

hiddenimports = (collect_submodules(‘scrapy’) +
collect_submodules(‘scrapy.pipelines’) +
collect_submodules(‘scrapy.extensions’) +
collect_submodules(‘scrapy.utils’)+collect_submodules(‘scrapy.spiders’)
)
#加载数据
datas = collect_data_files(‘scrapy’)

这个是保存在hooks下的scrapy-hook.py文件

第三部修改
start.spec 文件

-- mode: python ; coding: utf-8 --

block_cipher = None

a = Analysis([‘start.py’],
pathex=[‘D:\打包专用目录\cs99’], #你打包文件的位置
binaries=[],
datas=[(".\scrapy.cfg",".")],
hiddenimports=[“Fund.items”,“Fund.middlewares”,‘Fund.pipelines’,‘Fund.settings’,‘Fund.spiders’], #我的Fund文件下的几个py文件
hookspath=[".\hooks\"], #引入文件
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name=‘start’,
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name=‘start’)

最后直接执行 pyinstaller -F start.spec (当前位置启动cmd哦)

我能帮助的就这么多了,文章是看了一些,有两篇搞定了我的打包任务
一篇是知乎上的文章:https://zhuanlan.zhihu.com/p/41875047
一篇是CSDN上的文章:https://blog.csdn.net/qq_31288929/article/details/108845035
感谢两位的文章指引,第一次打包scrapy框架项目,不懂得太多!如果你还有不懂得,可以给我留言,看到后会回复,或者私信也可以。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pyinstaller是一个可以将Python脚本打包成可执行文件的工具,其主要功能是将Python程序自动转换为独立且可执行的二进制文件。使用Pyinstaller打包可以实现在没有Python环境的计算机上执行Python程序的目的。 Pyinstaller的使用相对简单,只需在命令行输入打包命令即可,同时还可以为打包程序添加各种参数,比如生成单个可执行文件,优化程序运行速度等。 使用Pyinstaller的步骤大致分为如下几个: 1. 安装Pyinstaller:可以使用pip等命令行工具进行安装,安装完成后即可使用。 2. 编写Python程序:编写好Python程序后,使用Pyinstaller打包命令即可将程序打包。 3. 打包程序:可以使用命令行进行打包操作,也可以使用Pyinstaller提供的GUI界面来完成打包操作,打包完成后即可在dist目录下找到生成的可执行文件。 4. 配置打包参数:根据需要,可以对打包参数进行调整,比如设置生成的可执行文件名称、添加支持的文件类型等。 总的来说,Pyinstaller打包是一个非常方便的工具,可以让Python程序更方便地在其他计算机中运行,也可以更好地保护程序的源代码,使其不易被别人窃取。 ### 回答2: PyInstaller是一个很好用的Python打包工具,可以将Python代码打包成一个独立的可执行文件,方便程序的使用和部署。下面详细介绍一下PyInstaller的使用。 1. 安装PyInstaller 可以使用pip安装PyInstaller,输入以下命令即可: ```bash pip install pyinstaller ``` 2. 打包命令 打包命令非常简单,只需要进入项目的根目录,然后在终端中输入以下命令即可: ```bash pyinstaller -F file.py ``` 其中,file.py为你要打包Python文件名。-F参数表示生成单个可执行文件。生成的可执行文件在dist目录下。 3. 打包选项 PyInstaller还提供了很多打包选项,可以根据需要进行设置。下面列举一些常用选项: - -F,--onefile:生成单个可执行文件。 - -D,--onedir:生成目录的打包文件,包含多个文件。 - -i,--icon=FILE.ico:设置生成的可执行文件图标。 - --add-data:添加附加文件或目录。例:--add-data 'images/*.png:images'。 - --hidden-import:隐式导入,添加未自动检测到的模块。例:--hidden-import ‘pymysql’。 4. 打包注意事项 打包注意事项如下: - PyInstaller打包时,可能会遇到一些Python模块无法正常导入的情况。这时,可以使用-h命令查看帮助文档,确定需要添加哪些选项。 - 打包出来的可执行文件可能会被杀毒软件误判为病毒,这时可以尝试关闭杀毒软件或者将生成的可执行文件添加到白名单中。 总的来说,PyInstaller非常适合用于将Python程序打包成可执行文件。在使用过程中,需要注意的一些细节,但是只要根据需要设置选项,就能够很方便地生成可执行文件。 ### 回答3: PyInstaller是一个用于将Python应用程序打包为可执行文件的工具。使用它可以轻松地将Python程序打包成独立的可执行文件,无需安装Python解释器,同时还可以将程序和所有相关依赖打包成单个文件。 PyInstaller支持在Windows、Mac OS X和Linux等多个平台上打包Python应用程序,并且可以将Python脚本转换成一些常见的可执行文件格式,例如Windows下的exe、Mac OS X下的app和Linux下的bin。 使用PyInstaller打包Python程序需要以下步骤: 第一步:安装PyInstaller 使用pip安装PyInstaller:pip install pyinstaller 第二步:创建打包文件的.spec文件 在命令行中执行pyinstaller命令,创建一个.spec文件。该文件包含了打包所需要的参数。 例如:pyinstaller hello.py --name=hello --onefile 执行上述命令后,会在当前目录下生成一个.spec文件,它包含了打包所需要的参数。 第三步:编辑.spec文件 使用文本编辑器打开.spec文件,根据需要修改其中的参数。参数的详细说明可以在PyInstaller的官方文档中查看。 第四步:执行打包命令 使用命令行中执行pyinstaller命令,指定.spec文件作为参数来进行打包。 例如:pyinstaller hello.spec 执行该命令后,将生成可执行文件和各种附属文件,包括打包Python解释器和所需的库文件等。 使用PyInstaller打包Python程序可以帮助开发者简化应用程序的部署过程,使得用户可以更加方便地使用Python应用程序。同时,打包后的程序也具有更好的可移植性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值