I am working on Scrapy 0.20 with Python 2.7. I found PyCharm has a good Python debugger. I want to test my Scrapy spiders using it. Anyone knows how to do that please?
What I have tried
Actually I tried to run the spider as a scrip. As a result, I built that scrip. Then, I tried to add my Scrapy project to PyCharm as a model like this:
File->Setting->Project structure->Add content root.
But I don't know what else I have to do
The
scrapy
command is a python script which means you can start it from inside PyCharm.When you examine the scrapy binary (
which scrapy
) you will notice that this is actually a python script:This means that a command like
scrapy crawl IcecatCrawler
can also be executed like this:python /Library/Python/2.7/site-packages/scrapy/cmdline.py crawl IcecatCrawler
Try to find the scrapy.cmdline package. In my case the location was here:
/Library/Python/2.7/site-packages/scrapy/cmdline.py
Create a run/debug configuration inside PyCharm with that script as script. Fill the script parameters with the scrapy command and spider. In this case
crawl IcecatCrawler
.Like this:
Put your breakpoints anywhere in your crawling code and it should work™.
According to the documentation https://doc.scrapy.org/en/latest/topics/practices.html
As of 2018.1 this became a lot easier. You can now select
Module name
in your project'sRun/Debug Configuration
. Set this toscrapy.cmdline
and theWorking directory
to the root dir of the scrapy project (the one withsettings.py
in it).Like so:
Now you can add breakpoints to debug your code.