从Django vi开始

2024-06-20 15:18:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Scrapy的经验是有限的,每次我使用它,它总是通过终端的命令。如何从django模板中获取表单数据(一个要刮取的url),以便与scrapy进行通信以开始进行抓取?到目前为止,我只想到从django的视图中获取表单返回的数据,然后尝试访问蜘蛛网.py在scrapy的目录中添加表单数据的url到spider的起始url。从那以后,我真的不知道如何触发真正的爬行,因为我习惯了严格地通过我的终端执行类似“scrapy crawl dmoz”之类的命令。谢谢。在

小编:刚刚发现了。。。我想我可能正朝着正确的方向前进。在


Tags: 数据djangopy命令目录视图模板终端
1条回答
网友
1楼 · 发布于 2024-06-20 15:18:01

你已经用编辑来回答了。最好的选择是设置^{} service并对^{}进行API调用以触发要运行的抓取作业。在

要进行API http调用,可以使用urllib2/requests,也可以使用scrapydAPI-^{}的包装:

from scrapyd_api import ScrapydAPI

scrapyd = ScrapydAPI('http://localhost:6800')
scrapyd.schedule('project_name', 'spider_name')

如果我们把scrapyd放在一边,并尝试run the spider from the view,它将阻塞请求,直到扭曲的reactor停止-因此,这不是一个真正的选择。在

但是,您可以开始使用^{}(与^{})一起使用——定义一个任务,该任务将运行您的废蜘蛛并从django视图调用该任务。这样,您就可以将任务放入队列,而不会有用户等待爬网完成。在


另外,请看一下django-dynamic-scraper包:

Django Dynamic Scraper (DDS) is an app for Django build on top of the scraping framework Scrapy. While preserving many of the features of Scrapy it lets you dynamically create and manage spiders via the Django admin interface.

相关问题 更多 >