我对Django很新。我一直在阅读教程并决定开始自己的事情,并需要一些关于最佳前进方向的建议。
我正在创建一个简单的站点,该站点运行存储在postgreSQL表中的一小部分URL,并使用Beautiful Soup从每个URL页面中提取数据并将其存储在记录中..(仅记录在其上的统计数据)每个主页
我已经设置了模型和相关的类列表视图来显示它们。即将开始运行美丽的汤部分,并想知道在哪里应该物理地运行代码并“刮”每个站点的数据?
调用类视图时应该调用它吗?某种模特经理?只是一个定制的功能或什么?如果可能的话,我想使用Ajax以间隔更新这些数据,因此需要适应它。
希望这不是太模糊。很高兴发布我所拥有的东西,如果你觉得它很有用,虽然它只是一个简单的模型和Class ListView。
谢谢!
答案 0 :(得分:2)
你不应该在视图中进行任何抓取。它可能会使用户感到困惑,因为在抓取过程中页面不会加载。用户还可以刷新页面并使代码运行两次。此外,您可能为项目安装的许多代理可能会超时。
这更多是后台流程类型的工作。最简单的方法是使用custom admin command。在<ImageBackground style={styles.container} source={require('./src/assets/img/road1.jpg')}>
<Animated.Image style={styles.car} source={require('./src/assets/img/car2.png')}>
</Animated.Image>
</ImageBackground>
下创建名为scrape.py
的文件。别忘了management/commands
。例如:
__init__.py
在该文件中使用:
polls/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
scrape.py
tests.py
views.py
最后不要忘记用以下命令运行新命令:
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
def handle(self, *args, **options):
self.stdout.write(self.style.SUCCESS('I am a scraper!'))
您可能希望使用cron作业进行设置。
有关更复杂的用例,请参阅Celery。