本当のscrapy単一のパッケージファイル(CFGが含まれていません)

フロントます。https://www.cnblogs.com/luocodes/p/11827850.html

 

最後にscrapyに真の単一のファイルにパッケージ化する方法、問題を解決します

夜の時間を費やし、急に今日インスピレーションを得ました

 

エラー解析

Scrapy.cfgはあなたが何のエラー---爬虫類を見つけません、実行可能ファイルと一緒にファイルを入れていないだろう

その理由は、与えられています

1.scrapy.cfgファイルは、実行可能ファイルに入りません

2.scrapy scrapy.cfgファイルディレクトリを読み取れません

 

質問1

pyInstallerのは、一時的なファイルシステムに実行可能ファイルを抽出する操作をしています

私たちは、だから最後ものの中に含まれる文書の私達のパッケージを理解することができるようになりますディレクトリの実行可能ファイルでそれを見つける必要があります

我々はstart.pyプログラムで遅延を設定する必要があるので、問題は、実行可能ファイルが完成し稼働している時はいつでも、それが生成する一時ファイルが削除されます、もあります

プログラムが終了していないとして、一時ファイルも、私たちが見る助けに保持されます

- * -コーディング:UTF-8 - * - 
から scrapy.cmdlineのインポート実行
 から scrapy.utils.pythonの輸入garbage_collect
 から scrapy.crawler 輸入CrawlerProcess
 から scrapy.utils.project 輸入get_project_settings

インポートrobotparserの
インポートのOS
 インポートsysの
 インポートのインポートscrapy.spiderloader
 輸入scrapy.statscollectorsの
 輸入scrapy.logformatterの
 輸入scrapy.dupefiltersは
 インポートscrapy.squeuesを
 
輸入scrapy.extensions.spiderstateの
 輸入scrapy.extensions.corestats
 輸入scrapy.extensions.telnetの
 輸入scrapy.extensions.logstats
 輸入scrapy.extensions.memusage
 輸入scrapy.extensions.memdebug
 輸入scrapy.extensions.feedexport
 輸入scrapy.extensions.closespiderの
 輸入scrapy .extensions.debugの
 インポートscrapy.extensions.httpcache
 輸入scrapy.extensions.statsmailerの
 輸入scrapy.extensions.throttle
 
輸入scrapy.core.scheduler
 輸入scrapy.core.engine
 輸入scrapy.core.scraper
 輸入scrapy.core.spidermwの
 輸入scrapy.core.downloader
 
輸入scrapy.downloadermiddlewares.statsは
 インポートscrapy.downloadermiddlewares.httpcache
 輸入scrapy.downloadermiddlewares.cookiesが
 インポートscrapy.downloadermiddlewares.useragent
 輸入scrapy.downloadermiddlewares.httpproxy
 輸入scrapy.downloadermiddlewares.ajaxcrawlの
 輸入scrapy.downloadermiddlewares.chunked
 輸入scrapy.downloadermiddlewares.decompressionの
 インポートscrapyを.downloadermiddlewares.defaultheadersは
 インポートscrapy.downloadermiddlewares.downloadtimeout
 輸入scrapy.downloadermiddlewares.httpauthの
 インポートをscrapy.downloadermiddlewares.httpcompressionの
 インポートscrapy.downloadermiddlewares.redirect
 輸入scrapy.downloadermiddlewares.retryの
 輸入scrapy.downloadermiddlewares.robotstxt
 
輸入scrapy.spidermiddlewares.depth
 輸入scrapy.spidermiddlewares.httperror
 輸入scrapy.spidermiddlewares.offsite
 輸入scrapy.spidermiddlewares.refererの
 輸入scrapy.spidermiddlewares.urllength
 
輸入scrapy.pipelines
 
輸入scrapy.core.downloader.handlers.http
 輸入scrapy.core.downloader.contextfactory

プリント(のsys.path [0])

プリント(sys.argvの[0])

印刷(os.path.dirname(os.path.realpath(sys.executable)))

プリント(os.path.dirname(os.path.realpath(sys.argvの[0])))
CFG = os.path.join(os.path.split(のsys.path [0])[0]、" scrapy.cfg " プリント(CFG)
time.sleep( 10 

プロセス = CrawlerProcess(get_project_settings())
 
「SK」はプロジェクトのクモの1つの名前です。
process.crawl(' biqubao_spider '、ドメイン= ' biqubao.com ' 
process.start()  クロールが終了するまでスクリプトがここにブロックします。

 

だけしようとした後、この機能をのsys.pathそれは一時ファイルの場所を取得することです。
私は、後の一時ディレクトリにこの変数がscrapy.cfg導出されている場所をCFG 

次のように生成された一時ファイル:



 

一時ファイルは、私たちがテストを継続し、CFGが含まれ、一時ファイルにstart.pyファイルを実行し、正常な動作があることがわかりました

問題はscrapy生成cfgファイルを読み取られないように、

 

質問2

それを読むためにscrapyのcfgファイルを作成するには?

デバッグの後、私は、関数scrapyは、CFGファイルのパスを読んでい

#scrapy \ utilsの\ conf.py 
デフ
get_sources(use_closest = 真): XDG_CONFIG_HOME = os.environ.get(' XDG_CONFIG_HOME 'または\ たければ、os.path.expantion(' 〜/ .configを' ソース = [ ' /etc/scrapy.cfg '、R ' C:\ scrapy \ scrapy.cfg ' XDG_CONFIG_HOME + ' /scrapy.cfg ' たければ、os.path.expantion(' 〜/ .scrapy.cfg ' )] の場合use_closest: sources.append(closest_scrapy_cfg()) リターン

機能はソースCFGファイルパスのアレイであります

 

問題をテストした後、我々は、我々は、単一のファイルを実行し、この時間は、主導scrapyの読みではなく一時ファイルのCFGの単一ファイル・パスの下のcfgだと思います

ソースの実行が適切にCFGファイルに一時ファイルを読むことができるようになります後だけに生成された単一のファイルを追加し、この時間はそれほど

 

デフ get_sources(use_closest = 真):
    XDG_CONFIG_HOME = os.environ.get(' XDG_CONFIG_HOME 'または\
        たければ、os.path.expantion(' 〜/ .configを' 
    ソース = [ ' /etc/scrapy.cfg '、R ' C:\ scrapy \ scrapy.cfg ' 
               XDG_CONFIG_HOME + ' /scrapy.cfg ' 
               たければ、os.path.expantion(' 〜/ .scrapy.cfg ')、os.path.join(os.path.split(のsys.path [0])[0]、" scrapy.cfg " )]
     の場合use_closest:
        sources.append(closest_scrapy_cfg())
    リターン

 

再パッケージ化、単一の実行可能ファイルがアップ与えられません動きました!

 

 

おすすめ

転載: www.cnblogs.com/luocodes/p/11829414.html