Как использовать PyCharm для отладки Scrapy проектов
Я работаю над Scrapy 0.20 с Python 2.7. Я обнаружил, что PyCharm имеет хороший отладчик Python. Я хочу проверить своих скребущих пауков, используя его. Кто-нибудь знает как это сделать пожалуйста?
что я пробовал
на самом деле я пытался запустить паука в качестве Сумы. В результате я построил эту сумку. Затем я попытался добавить свой Scrapy проект в PyCharm в качестве модели следующим образом:
File->Setting->Project structure->Add content root.
но я не знаю, что еще я должен сделать
9 ответов:
The
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.пакет командной строки. В моем случае место было здесь:
/Library/Python/2.7/site-packages/scrapy/cmdline.py
создайте конфигурацию запуска / отладки внутри PyCharm с помощью этот сценарий как сценарий. Заполнить параметры скрипта с помощью команды scrapy и паук. В данном случае
crawl IcecatCrawler
.такой:
поместите точки останова в любом месте вашего кода обхода, и он должен работать™.
вам просто нужно сделать это.
создайте файл Python в папке искателя в вашем проекте. Я использовал main.py.
- обходчика
- обходчика
- пауки
- ...
- main.py
- scrapy.cfg
внутри вашего main.py поместите этот код ниже.
from scrapy import cmdline cmdline.execute("scrapy crawl spider".split())
и нужно создайте "конфигурацию запуска" для запуска вашего main.py.
делая это, если вы поместите точку останова в свой код, он остановится там.
Я запускаю scrapy в virtualenv с Python 3.5.0 и устанавливаю параметр "script" в
/path_to_project_env/env/bin/scrapy
решил проблему для меня.
чтобы добавить немного к принятому ответу, спустя почти час я обнаружил, что мне нужно выбрать правильную конфигурацию запуска из выпадающего списка (рядом с центром панели инструментов значков), а затем нажмите кнопку отладки, чтобы заставить ее работать. Надеюсь, это поможет!
intellij idea также работать.
создать main.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 __name__ == '__main__': print('[*] beginning main thread') name = "scrapy crawl stack" #name = "scrapy crawl spa" main(name) print('[*] main thread exited') print('main stop====================================================')
показано ниже:
Я также использую 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