我正在研究django,我已经建立了一个电子邮件爬虫,可以在基本网址的链接上找到电子邮件... 我想将结果输入到作为站点数据库的db.sqlite3文件。 我的爬虫作为芹菜任务在背景中工作。 我可以通过什么方式将任务添加到数据库的末尾。 我试图用post方法做但没有运气。
tasks.py
from celery.utils.log import get_task_logger
from .forms import CrawlUpForm
from .craw import crawler
import time
app = Celery(broker='amqp://')
@app.task
def startcraw(base,url,emails):
mylist= crawler(base,url,emails)
for em in mylist:
new_entry = Crawler(site=base, max_links=20, max_emails=333,emails=em)
new_entry.save()
answer= ', '.join(mylist)
return answer
我想添加sql数据库的答案(它包含电子邮件,链接和其他内容)
my views.py:
from tasks import startcraw
import time
def home(request):
form = SignUpForm(request.POST or None)
if form.is_valid():
save_it= form.save(commit=False)
save_it.save()
messages.success(request,"Working, please wait........")
baseurl=form.cleaned_data['site']
maxemails=form.cleaned_data['max_emails']
maxurl=form.cleaned_data['max_links']
startcraw.delay(base=baseurl,url=maxurl,emails=maxemails)
return HttpResponseRedirect('/done/')
return render_to_response("signup.html",locals(),context_instance=RequestContext(request))
models.py:
class Crawler(models.Model):
site=models.CharField(max_length=250,null=True,blank=False)
max_links=models.IntegerField(default=5,max_length=10,blank=True)
max_emails=models.IntegerField(default=5,max_length=10,blank=True)
emails = models.CharField(max_length=999999,null=True,blank=False)
我添加models.py。 在我的tasks.py中,我在mylist var中收到一封电子邮件列表 现在不关心其他变量......
答案 0 :(得分:0)
你为什么要张贴它?您可以直接从Celery脚本访问模型,只需在那里创建它。