Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用BeautifulSoup更新django数据库_Python_Django_Django Models_Beautifulsoup - Fatal编程技术网

Python 使用BeautifulSoup更新django数据库

Python 使用BeautifulSoup更新django数据库,python,django,django-models,beautifulsoup,Python,Django,Django Models,Beautifulsoup,我对Django很陌生。我一直在浏览教程,并决定从我自己的东西开始,需要一些关于最佳前进方向的建议 我正在创建一个简单的站点,它运行在postgreSQL表中存储的URL小列表中,并使用Beautiful Soup从每个URL页面提取数据,并将其存储在记录中。。它只是在每个网站的主页上记录的统计数据 我设置了模型和相关的类列表视图来显示它们。即将开始运行BeautifulSoup部分,想知道应该将代码放在哪里运行,并为每个站点刮取数据 调用类视图时是否应该调用它?什么模特经理?只是一个定制的功能

我对Django很陌生。我一直在浏览教程,并决定从我自己的东西开始,需要一些关于最佳前进方向的建议

我正在创建一个简单的站点,它运行在postgreSQL表中存储的URL小列表中,并使用Beautiful Soup从每个URL页面提取数据,并将其存储在记录中。。它只是在每个网站的主页上记录的统计数据

我设置了模型和相关的类列表视图来显示它们。即将开始运行BeautifulSoup部分,想知道应该将代码放在哪里运行,并为每个站点刮取数据

调用类视图时是否应该调用它?什么模特经理?只是一个定制的功能还是什么?如果可能的话,我想使用Ajax每隔一段时间更新这些数据,因此它需要与之相适应

希望这不是太模糊。如果你觉得这是有益的,尽管它实际上只是一个简单的模型和类列表视图,很高兴发布我的内容


谢谢

您不应该在视图中进行任何刮削。这可能会让用户感到困惑,因为在进行刮削时页面不会加载。用户还可能刷新页面并导致代码运行两次。此外,您可能为项目安装的许多代理可能会超时

这更像是一种后台处理类型的工作。最简单的方法是使用一个。在management/commands下创建一个名为scrape.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作业来设置它


有关更复杂的用例,请参见。

您不应该在视图中执行任何刮取操作。这可能会让用户感到困惑,因为在进行刮削时页面不会加载。用户还可能刷新页面并导致代码运行两次。此外,您可能为项目安装的许多代理可能会超时

这更像是一种后台处理类型的工作。最简单的方法是使用一个。在management/commands下创建一个名为scrape.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作业来设置它


有关更复杂的用例,请参阅。

Perfect,我将尝试一下。谢谢你的快速回复,基奇克。太好了,我试试看。谢谢你的快速回复,基奇克。