我对 Django 很陌生。我一直在浏览教程,并决定从我自己的一些东西开始,并需要一些关于最佳前进方向的建议。
我正在创建一个简单的站点,它运行存储在 postgreSQL 表中的一小部分 URL 列表,并使用 Beautiful Soup 从每个 URL 页面中提取数据并将其存储在记录中..(它只是记录在主页上的统计数据每个)
我已经设置了模型和相关的类列表视图来显示它们。即将开始运行美丽的汤部分,想知道应该将代码实际放在哪里来运行并“抓取”每个站点的数据?
它应该在调用类视图时调用吗?某种模型管理器?只是一个定制的功能还是什么?如果可能,我想使用 Ajax 每隔一段时间更新这些数据,因此它需要适应这种情况。
希望这不是太模糊。很高兴发布我所拥有的,如果你觉得这很有用,尽管它实际上只是一个简单的模型和类 ListView。
谢谢!
您不应该在视图中进行任何抓取。这可能会使用户感到困惑,因为在抓取过程中页面不会加载。用户还可能刷新页面并导致您的代码运行两次。此外,您可能为项目安装的许多代理可能会超时。
这更像是一种后台进程类型的工作。最简单的方法是使用自定义管理命令。创建一个名为文件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!'))
最后不要忘记运行你的新命令:
python manage.py scrape
您可能想使用 cron 作业来设置它。
有关更复杂的用例,请参阅Celery。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句