Jak używać PyCharm do debugowania Scrapowych projektów
Pracuję nad Scrapy 0.20 z Pythonem 2.7. Znalazłem PyCharm ma dobry debugger Pythona. Chcę go przetestować. Wie ktoś jak to zrobić?
Czego próbowałem
Właściwie to próbowałem uruchomić pająka jako scrip. W rezultacie zbudowałem ten przepis. Następnie próbowałem dodać mój Scrapowy projekt do PyCharm jako model podobny do tego:File->Setting->Project structure->Add content root.
Ale nie wiem co jeszcze muszę zrobić
9 answers
Polecenie scrapy
jest skryptem Pythona, co oznacza, że można go uruchomić z poziomu PyCharm.
Kiedy sprawdzisz scrapowy binarny (which scrapy
) zauważysz, że jest to skrypt Pythona:
#!/usr/bin/python
from scrapy.cmdline import execute
execute()
Oznacza to, że polecenie takie jak
scrapy crawl IcecatCrawler
można również wykonać tak: python /Library/Python/2.7/site-packages/scrapy/cmdline.py crawl IcecatCrawler
/Library/Python/2.7/site-packages/scrapy/cmdline.py
Utwórz konfigurację run/debug wewnątrz PyCharm z tym skryptem jako skryptem. Wypełnij skrypt parametry za pomocą polecenia Scrappy i spider. W tym przypadku crawl IcecatCrawler
.
Like this:
Umieść swoje punkty przerwania w dowolnym miejscu w kodzie indeksowania i powinno działać™.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-26 21:15:46
Musisz to zrobić.
Utwórz plik Pythona w folderze crawlera w swoim projekcie. Używałem main.py.
- Projekt
- Crawler
- Crawler
- pająki
- ...
- main.py Scrapy.cfg
- Crawler
- Crawler
Inside your main.py umieść ten kod poniżej.
from scrapy import cmdline
cmdline.execute("scrapy crawl spider".split())
I musisz utworzyć "Run Configuration", aby uruchomić swój main.py.
Robiąc to, jeśli umieścisz punkt przerwania na Twoim kodzie zatrzyma się na tym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-04 22:09:56
Uruchamiam Scrappy w virtualenv z Pythonem 3.5.0 i ustawienie parametru "script"na /path_to_project_env/env/bin/scrapy
rozwiązało problem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-15 10:08:30
Aby dodać trochę do zaakceptowanej odpowiedzi, po prawie godzinie okazało się, że muszę wybrać poprawną konfigurację Uruchom z listy rozwijanej( w pobliżu środka paska narzędzi ikon), a następnie kliknąć przycisk Debug, aby uruchomić go do pracy. Mam nadzieję, że to pomoże!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-09 03:41:08
Intellij idea również działa.
Utwórz 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====================================================')
Pokaż poniżej:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-25 16:02:28
Używam również PyCharm, ale nie używam jego wbudowanych funkcji debugowania.
Do debugowania używam ipdb
. Ustawiłem skrót klawiaturowy, aby wstawić import ipdb; ipdb.set_trace()
W dowolnej linii, którą chcę, aby punkt przerwania się odbył.
Następnie mogę wpisać n
, aby wykonać następną instrukcję, s
, aby wejść do funkcji, wpisać nazwę dowolnego obiektu, aby zobaczyć jego wartość, zmienić środowisko wykonywania, wpisać c
, Aby kontynuować wykonywanie...
Po prostu wpisz swoje wirtualne środowisko pip install ipdb
i umieść import ipdb; ipdb.set_trace()
w linii, w której chcesz wstrzymać wykonanie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-16 16:51:24
[[5]} od 2018.1 stało się to o wiele łatwiejsze. Możesz teraz wybrać Module name
w swoim projekcie Run/Debug Configuration
. Ustaw to na scrapy.cmdline
i Working directory
do katalogu głównego projektu Scrappy (tego z settings.py
).
Like so:
Teraz możesz dodać punkty przerwania do debugowania kodu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-21 13:21:18
Zgodnie z dokumentacją 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-19 04:52:21
Używam tego prostego skryptu:
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()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-21 23:14:53