Я пытаюсь очистить веб-страницу с помощью библиотеки Python Scrapy.
У меня есть следующий код:
class AutoscoutDetailsSpider(scrapy.Spider):
name = "vehicle details"
reference_url = ''
reference = ''
def __init__(self, reference_url, reference, *args, **kwargs):
super(AutoscoutDetailsSpider, self).__init__(*args, **kwargs)
self.reference_url = reference_url
self.reference = reference
destination_url = "https://www.autoscout24.be/nl/aanbod/volkswagen-polo-1-2i-12v-base-birthday-climatronic-benzine-zilver-8913b173-cad5-ec63-e053-e250040a09a8"
self.start_urls = [destination_url]
add_logs(self.start_urls)
def handle_error_response(self):
add_logs("NOT EXISTS. REFERENCE {} AND REFERENCE URL {}.".format(self.reference, self.reference_url))
def handle_gone_response(self):
add_logs("SOLD or NOT AVAILABLE Reference {} and reference_url {} is sold or not available.".format(self.reference, self.reference_url))
def parse(self, response):
add_logs("THIS IS RESPONSE {}".format(response))
if response.status == 404:
self.handle_error_response()
if response.status == 410:
self.handle_gone_response()
if response.status == 200:
pass
def start_get_vehicle_job(reference_url, reference):
try:
def f(q):
try:
runner = crawler.CrawlerRunner()
deferred = runner.crawl(AutoscoutDetailsSpider, reference_url, reference)
deferred.addBoth(lambda _: reactor.stop())
reactor.run()
q.put(None)
except Exception as e:
capture_error(str(e))
q.put(e)
q = Queue()
p = Process(target=f, args=(q,))
p.start()
result = q.get()
p.join()
if result is not None:
raise result
return {"Success.": "The crawler ({0}) is successfully executed.".format(reference_url)}
except Exception as e:
capture_error(str(e))
return {"Failure": "The crawler ({0}) is NOT successfully executed.".format(reference_url)}
def main(params):
start_get_vehicle_job(params.get('reference_url', None), params.get('reference', None))
Таким образом, первое, что выполняется, это main
, с основнымЯ звоню start_get_vehicle_job
с reference_url
и reference
в качестве параметров.И тогда start_get_vehicle_job
называет паука-скрапа AutoscoutDetailsSpider
.
В __init__
я добавляю URL, который нужно очистить.Параметры reference
и reference_url
в __init__
являются правильными.add_logs
функция просто добавляет текст в базу данных.И add_logs
в моем случае в __init__
добавляет правильный URL.
Я должен перейти к методу parse
, и там я хочу проверить статус ответа.Я добавил add_logs("THIS IS RESPONSE {}".format(response))
в начало метода parse
, но я не вижу этого сообщения в своей таблице журналов.
Когда я проверяю этот URL с scrapy shell
, он работает нормально, и я получаю response.status 404
, что правильно.

Это похоже на то, что паук-скрап совсем не подходит для анализа.
Любойидея?