web-dev-qa-db-ja.com

PyCharmを使用してScrapyプロジェクトをデバッグする方法

私はPython 2.7でScrapy 0.20に取り組んでいます。PyCharmには優れたPythonデバッガーがあります。お願いします

私が試したこと

実際、私はクモをスクリップとして走らせようとしました。その結果、私はそのスクリプトを作成しました。次に、Scrapyプロジェクトを次のようなモデルとしてPyCharmに追加しようとしました。

File->Setting->Project structure->Add content root.

しかし、私は他に何をしなければならないのかわかりません

86
William Kinaan

scrapyコマンドはpythonスクリプトです。これは、PyCharm内から起動できることを意味します。

スクレイピーバイナリ(which scrapy)これは、実際にはpythonスクリプト:

#!/usr/bin/python

from scrapy.cmdline import execute
execute()

これは、scrapy crawl IcecatCrawlerは次のように実行することもできます:python /Library/Python/2.7/site-packages/scrapy/cmdline.py crawl IcecatCrawler

Scrapy.cmdlineパッケージを見つけてください。私の場合、場所はここにありました:/Library/Python/2.7/site-packages/scrapy/cmdline.py

そのスクリプトをスクリプトとしてPyCharm内で実行/デバッグ構成を作成します。スクレイピーコマンドとスパイダーでスクリプトパラメーターを入力します。この場合 crawl IcecatCrawler

このような: PyCharm Run/Debug Configuration

クロールコードの任意の場所にブレークポイントを配置すると、機能します™。

155
Pullie

これを行うだけです。

プロジェクトのクローラーフォルダーにPythonファイルを作成します。main.pyを使用しました。

  • 事業
    • 昇降補助具
      • 昇降補助具
        • くも
        • ...
      • main.py
      • scrapy.cfg

Main.py内にこのコードを以下に配置します。

from scrapy import cmdline    
cmdline.execute("scrapy crawl spider".split())

また、main.pyを実行するには、「実行構成」を作成する必要があります。

これを行うと、コードにブレークポイントを設定すると、そこで停止します。

97
Rodrigo

2018.1から、これは非常に簡単になりました。プロジェクトのModule nameRun/Debug Configurationを選択できるようになりました。これをscrapy.cmdlineに設定し、Working directoryをスクレイピープロジェクト(settings.pyが含まれるプロジェクト)のルートディレクトリに設定します。

そのようです:

PyCharm Scrapy debug configuration

これで、ブレークポイントを追加してコードをデバッグできます。

11
Rutger de Knijf

Python 3.5.0でvirtualenvでスクレイピーを実行し、「script」パラメーターを/path_to_project_env/env/bin/scrapyは私のために問題を解決しました。

8
rioted

intellij ideaも機能します。

createmain.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#coding=utf-8
import sys
from scrapy import cmdline
def main(name):
    if name:
        cmdline.execute(name.split())



if __== '__main__':
    print('[*] beginning main thread')
    name = "scrapy crawl stack"
    #name = "scrapy crawl spa"
    main(name)
    print('[*] main thread exited')
    print('main stop====================================================')

以下に表示:

enter image description here

enter image description here

enter image description here

5
LuciferJack

受け入れられた答えに少し追加するには、ほぼ1時間後に、ドロップダウンリスト(アイコンツールバーの中央付近)から正しい実行構成を選択する必要があることがわかり、それを機能させるために(デバッグ)ボタンをクリックします。お役に立てれば!

3
taylor

PyCharmも使用していますが、組み込みのデバッグ機能は使用していません。

デバッグには ipdb を使用しています。ブレークポイントを発生させたい任意の行にimport ipdb; ipdb.set_trace()を挿入するためのキーボードショートカットを設定します。

次に、nと入力して次のステートメントを実行し、sと入力して関数をステップ実行し、任意のオブジェクト名を入力して値を確認し、実行環境を変更し、cと入力して続行します実行...

これは非常に柔軟で、実行環境を制御しないPyCharm以外の環境で機能します。

仮想環境_pip install ipdb_を入力して、実行を一時停止する行にimport ipdb; ipdb.set_trace()を配置するだけです。

2
warvariuc

ドキュメントによると https://doc.scrapy.org/en/latest/topics/practices.html

import scrapy
from scrapy.crawler import CrawlerProcess

class MySpider(scrapy.Spider):
    # Your spider definition
    ...

process = CrawlerProcess({
    'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})

process.crawl(MySpider)
process.start() # the script will block here until the crawling is finished
1
berardino

この単純なスクリプトを使用します。

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

process = CrawlerProcess(get_project_settings())

process.crawl('your_spider_name')
process.start()
0
gangabass