Próbuję przekazać argument zdefiniowany przez użytkownika do pająka scrapy's. Czy ktoś może zasugerować, jak to zrobić?
Czytałem -a
gdzieś o parametrze, ale nie mam pojęcia, jak go użyć.
python
scrapy
web-crawler
L Lawliet
źródło
źródło
self.domain
, nadal nie mogę uzyskać do niej dostępu poza__init__
metodą. Python zgłasza niezdefiniowany błąd. BTW, dlaczego pominąłeśsuper
połączenie? PS. Pracuję z klasą CrawlSpider__init__
to metoda klasy pająka. Jego implementacja sama w sobie nie czyni pająka mniej odpornym i jest uwzględniona w odpowiedzi, aby pokazać, że można zadeklarować wartości domyślne dla argumentów słów kluczowych, ale jak powiedziałeś, jest to opcjonalne. Jak wskazaliśmy w zeszłym roku, nie musisz używaćgetattr
argumentów, możesz po prostu uzyskać dostęp do argumentów jako atrybutów, np.self.category
Lub jak widzimy w odpowiedziself.domain
Poprzednie odpowiedzi były poprawne, ale nie musisz deklarować konstruktora (
__init__
) za każdym razem, gdy chcesz zakodować pająka scrapy, możesz po prostu określić parametry jak poprzednio:aw swoim kodzie pająka możesz po prostu użyć ich jako argumentów pająka:
I to po prostu działa.
źródło
Przekazywanie argumentów za pomocą polecenia crawl
Przekazywać argumenty do uruchomienia na scrapyd zastąpić -a z -d
Pająk otrzyma argumenty w swoim konstruktorze.
Scrapy umieszcza wszystkie argumenty jako atrybuty pająka i możesz całkowicie pominąć metodę init . Uważaj, aby uzyskać te atrybuty, użyj metody getattr, aby Twój kod się nie zepsuł.
źródło
Argumenty pająka są przekazywane podczas wykonywania polecenia indeksowania z opcją -a. Na przykład, jeśli chcę przekazać nazwę domeny jako argument mojemu pająkowi, zrobię to-
I otrzymuj argumenty w konstruktorach pająka:
...
to będzie działać :)
źródło
Alternatywnie możemy użyć ScrapyD, które ujawnia API, w którym możemy przekazać start_url i nazwę pająka. ScrapyD ma api do zatrzymywania / uruchamiania / statusu / wyświetlania pająków.
scrapyd-deploy
wdroży pająka w postaci jajka do demona, a nawet on zachowa wersję pająka. Uruchamiając pająka możesz wspomnieć, której wersji pająka użyć.curl http://localhost:6800/schedule.json -d project=default -d spider=testspider -d start_urls="https://www.anyurl...|https://www.anyurl2"
Dodatkową zaletą jest to, że możesz zbudować własny interfejs użytkownika, aby akceptować adres URL i inne parametry od użytkownika i zaplanować zadanie za pomocą powyższego interfejsu API scrapyd
Patrz scrapyd dokumentacji API więcej szczegółów
źródło