Buduję projekt scrapy, w którym mam wiele pająków (pająk dla każdej domeny). Teraz adresy URL, które mają być pobierane, pochodzą dynamicznie od podanego przez użytkownika zapytania. więc zasadniczo nie muszę wykonywać szerokich indeksowań ani nawet śledzić linków. pojawią się adresy URL jeden po drugim i po prostu muszę wyodrębnić za pomocą selektorów. Zastanawiałem się, czy mógłbym po prostu przekazać adresy URL do kolejki wiadomości, z której mógłby czerpać pająk do scrapy, byłbym w porządku. Ale nie jestem w stanie tego rozgryźć. SprawdziłemJak zrobić start_url w scrapy do pobrania z kolejki wiadomości?
https://github.com/darkrho/scrapy-redis
ale czuję, to nie nadaje się do moich celów jak trzeba wielu kolejek (pojedyncza kolejka do każdego pająka). Jak się dowiedziałem, jednym ze sposobów wydaje się być zastąpienie metody start_request w pająku. Ale tutaj znowu nie jestem pewien, co robić (nowość w python i scrapy). Czy mogę po prostu traktować to jako normalny skrypt Pythona i ovverride metody używać (dowolnej) kolejki komunikatów? Potrzebuję również pająka (ów) pracującego 24 * 7 i skrobię, gdy istnieje żądanie w kolejce. Pomyślałem, że powinienem użyć sygnałów i podnieść gdzieś wyjątek DontCloseSpider. ale gdzie mam to zrobić? Jestem całkiem zagubiony. Proszę pomóż.
Oto scenariusz patrzę:
user-> Query -> URL z abc.com -> abc-pająk
-> url from xyz.com -> xyz-spider
-> url from ghi.com -> ghi-spider
Teraz każdy URL ma to samo do zgarniania za każda strona internetowa. Więc mam selektory robiące to w każdym pająku. Potrzebuję tylko scenariusza dla jednego użytkownika. kiedy jest wielu użytkowników, pojawi się wiele niepowiązanych adresów URL dla tego samego pająka. więc to będzie coś takiego:
QUERY1, QUERY2, query3
abc.com -> url_abc1, url_abc2, url_abc3
xyz.com -> url_xyz1, url_xyz2, url_xyz3
ghi .com -> url_ghi1, url_ghi2, url_ghi3
, więc dla każdej witryny te adresy będą pojawiać się dynamicznie, które będą przekazywane do odpowiednich kolejek wiadomości. teraz każdy z pająków przeznaczonych do witryny musi zużyć odpowiednią kolejkę i przekazać mi skradzione przedmioty, gdy istnieje żądanie w kolejce wiadomości
Problem polega na uruchomieniu wielu pająków? – Nabin
nie. Problem polega na tym, jak sprawić, aby pająki (lub pająki) zostały pobrane z kolejki komunikatów. – Avinragh
spójrz na http://stackoverflow.com/questions/21694386/running-more-than-one-spiders-one-by-one – Nabin