私はPython 2.7でScrapy 0.20に取り組んでいます。PyCharmには優れたPythonデバッガーがあります。お願いします
実際、私はクモをスクリップとして走らせようとしました。その結果、私はそのスクリプトを作成しました。次に、Scrapyプロジェクトを次のようなモデルとしてPyCharmに追加しようとしました。
File->Setting->Project structure->Add content root.
しかし、私は他に何をしなければならないのかわかりません
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
。
このような:
クロールコードの任意の場所にブレークポイントを配置すると、機能します™。
これを行うだけです。
プロジェクトのクローラーフォルダーにPythonファイルを作成します。main.pyを使用しました。
Main.py内にこのコードを以下に配置します。
from scrapy import cmdline
cmdline.execute("scrapy crawl spider".split())
また、main.pyを実行するには、「実行構成」を作成する必要があります。
これを行うと、コードにブレークポイントを設定すると、そこで停止します。
Python 3.5.0でvirtualenvでスクレイピーを実行し、「script」パラメーターを/path_to_project_env/env/bin/scrapy
は私のために問題を解決しました。
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====================================================')
以下に表示:
受け入れられた答えに少し追加するには、ほぼ1時間後に、ドロップダウンリスト(アイコンツールバーの中央付近)から正しい実行構成を選択する必要があることがわかり、それを機能させるために(デバッグ)ボタンをクリックします。お役に立てれば!
PyCharmも使用していますが、組み込みのデバッグ機能は使用していません。
デバッグには ipdb
を使用しています。ブレークポイントを発生させたい任意の行にimport ipdb; ipdb.set_trace()
を挿入するためのキーボードショートカットを設定します。
次に、n
と入力して次のステートメントを実行し、s
と入力して関数をステップ実行し、任意のオブジェクト名を入力して値を確認し、実行環境を変更し、c
と入力して続行します実行...
これは非常に柔軟で、実行環境を制御しないPyCharm以外の環境で機能します。
仮想環境_pip install ipdb
_を入力して、実行を一時停止する行にimport ipdb; ipdb.set_trace()
を配置するだけです。
ドキュメントによると 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
この単純なスクリプトを使用します。
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()