现在编写我的代码能够成功地向django restapi发送post请求,结果分别触发spider并成功地将其输出存储到数据库。因此,我使用的是scrapydapi,您可以在下面的代码片段中看到
@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def crawlRottenTomatoes(request):
print("in crawl tottentomatoes method")
url = request.data["url"]
if not url:
return JsonResponse({'error': 'Missing args'})
if not is_valid_url(url):
return JsonResponse({'error': 'URL is invalid'})
domain = urlparse(url).netloc
msg_dic = {}
try:
scrapyd.schedule(project="movie_spider", spider="rottentomatoes", url=url, domain=domain)
msg_dic['msg'] = "Spider RottenTomatoes for given url is up and running"
except Exception as e:
print("exception")
msg_dic['error'] = "Error running spider for RottenTomatoes"
return JsonResponse(msg_dic, safe=False)
但现在我想要的是。当我在websockets上看到的网站/频道爬网和解析完成后,scrapyd会有一些回应。我试着使用websockets,但问题是scrapyd本身就是一个恶魔。我不是真的能够发送一个消息到websocket客户端从好斗。有没有人知道该怎么做,或者可以分享一些可以帮助我的资源?
1条答案
按热度按时间0lvr5msh1#
查看api引用,获得scrapyd作业状态的唯一方法似乎是通过
listjobs
https://scrapyd.readthedocs.io/en/stable/api.html#listjobs-json和寻找你的工作id
在列表中。另一个选择是监视scrapyd的日志文件。或者您也可以尝试将此功能添加到https://github.com/scrapy/scrapyd 它将在完成作业后发送一个http请求。