Estou trabalhando no Scrapy 0.20 com Python 2.7. Descobri que o PyCharm tem um bom depurador Python. Eu quero testar minhas aranhas Scrapy usando isso. Alguém sabe fazer isso por favor?
O que eu tentei
Na verdade, tentei executar o spider como um script. Como resultado, criei esse script. Então, tentei adicionar meu projeto Scrapy ao PyCharm como um modelo assim:File->Setting->Project structure->Add content root.
Mas eu não sei o que mais eu tenho que fazer
ImportError: No module named settings
Verifiquei se o diretório de trabalho é o diretório do projeto. É usado em um projeto Django. Alguém mais encontrou este problema?Working directory
, caso contrário ocorrerá um errono active project, Unknown command: crawl, Use "scrapy" to see available commands, Process finished with exit code 2
Você só precisa fazer isso.
Crie um arquivo Python na pasta do rastreador em seu projeto. Usei main.py.
Dentro do seu main.py coloque este código abaixo.
E você precisa criar uma "Configuração de execução" para executar o main.py.
Fazendo isso, se você colocar um ponto de interrupção em seu código, ele irá parar por aí.
fonte
A partir de 2018.1 isso se tornou muito mais fácil. Agora você pode selecionar
Module name
no seu projetoRun/Debug Configuration
. Defina comoscrapy.cmdline
eWorking directory
como o diretório raiz do projeto scrapy (aquele comsettings.py
ele).Igual a:
Agora você pode adicionar pontos de interrupção para depurar seu código.
fonte
Estou executando o scrapy em um virtualenv com Python 3.5.0 e definindo o parâmetro "script" para
/path_to_project_env/env/bin/scrapy
resolver o problema para mim.fonte
project/crawler/crawler
, ou seja, o diretório que contém__init__.py
.idéia intellij também funciona.
crie main.py :
mostre abaixo:
fonte
Para adicionar um pouco à resposta aceita, depois de quase uma hora descobri que tinha que selecionar a configuração de execução correta na lista suspensa (perto do centro da barra de ferramentas do ícone) e, em seguida, clicar no botão Depurar para fazê-lo funcionar. Espero que isto ajude!
fonte
Também estou usando o PyCharm, mas não estou usando seus recursos de depuração integrados.
Estou usando para depuração
ipdb
. Eu configurei um atalho de teclado para inseririmport ipdb; ipdb.set_trace()
em qualquer linha onde desejo que o ponto de interrupção aconteça.Então posso digitar
n
para executar a próxima instrução,s
para entrar em uma função, digitar qualquer nome de objeto para ver seu valor, alterar o ambiente de execução, digitarc
para continuar a execução ...Isso é muito flexível, funciona em ambientes diferentes do PyCharm, onde você não controla o ambiente de execução.
Basta digitar em seu ambiente virtual
pip install ipdb
e colocarimport ipdb; ipdb.set_trace()
em uma linha onde deseja que a execução seja interrompida.fonte
De acordo com a documentação https://doc.scrapy.org/en/latest/topics/practices.html
fonte
Eu uso este script simples:
fonte
Estendendo a versão de @Rodrigo da resposta, adicionei este script e agora posso definir o nome da aranha a partir da configuração em vez de alterar a string.
fonte