使用BeautifulSoup

时间:2017-11-21 02:03:55

标签: python django django-models beautifulsoup

我对Django很新。我一直在阅读教程并决定开始自己的事情,并需要一些关于最佳前进方向的建议。

我正在创建一个简单的站点,该站点运行存储在postgreSQL表中的一小部分URL,并使用Beautiful Soup从每个URL页面中提取数据并将其存储在记录中..(仅记录在其上的统计数据)每个主页

我已经设置了模型和相关的类列表视图来显示它们。即将开始运行美丽的汤部分,并想知道在哪里应该物理地运行代码并“刮”每个站点的数据?

调用类视图时应该调用它吗?某种模特经理?只是一个定制的功能或什么?如果可能的话,我想使用Ajax以间隔更新这些数据,因此需要适应它。

希望这不是太模糊。很高兴发布我所拥有的东西,如果你觉得它很有用,虽然它只是一个简单的模型和Class ListView。

谢谢!

1 个答案:

答案 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