pyr*_*ace 10 python django scrapy web-scraping
我对Scrapy的体验是有限的,每次我使用它时,它总是通过终端的命令.如何从我的django模板中获取我的表单数据(要删除的URL)以与scrapy进行通信以开始进行刮擦?到目前为止,我只想到从django的视图中获取表单的返回数据,然后尝试进入scrapy目录中的spider.py,将表单数据的url添加到spider的start_urls中.从那里开始,我真的不知道如何触发实际的爬行,因为我习惯于通过我的终端使用"scrapy crawl dmoz"等命令严格执行此操作.谢谢.
微小的编辑:刚刚发现了scrapyd ...我想我可能正朝着正确的方向前进.
ale*_*cxe 12
你实际上是通过编辑回答的.最好的选择是设置scrapyd服务并进行API调用schedule.json以触发运行的抓取作业.
要进行API http调用,您可以使用urllib2/ requests,或使用scrapydAPI 的包装器- python-scrapyd-api:
from scrapyd_api import ScrapydAPI
scrapyd = ScrapydAPI('http://localhost:6800')
scrapyd.schedule('project_name', 'spider_name')
Run Code Online (Sandbox Code Playgroud)
如果我们放下scrapyd并尝试从视图中运行蜘蛛,它将阻止请求,直到扭曲的反应堆停止 - 因此,它实际上不是一个选项.
但是,您可以开始使用celery(与之配合使用django_celery) - 定义一个可以运行Scrapy蜘蛛并从django视图调用任务的任务.这样,您就可以将任务放在队列中,并且不会让用户等待爬网完成.
另外,看看django-dynamic-scraper包:
Django动态刮板(DDS)是一个应用程序Django构建在刮擦框架Scrapy之上.在保留Scrapy的许多功能的同时,它允许您通过Django管理界面动态创建和管理蜘蛛.
| 归档时间: |
|
| 查看次数: |
4633 次 |
| 最近记录: |