如何将网站数据自动收集到我的数据库中?

0 投票
4 回答
1926 浏览
提问于 2025-04-17 13:37

我有一个基于Django的网站,使用的是托管在Webfaction上的PostgreSQL数据库。通常,我手动从另一个网站收集数据库所需的数据(就是复制粘贴到一个文本文件里),那个网站在一个网页上用HTML表格列出了所有数据。

关于用Python自动收集这些数据,我想我应该使用像html5lib或Scrapy这样的工具,写一个脚本来加载网页,找到我想要的HTML表格,从中提取数据,把它格式化成JSON,然后用

manage.py loaddata fixturename.json

把我的数据加载到数据库里。不过,我的问题是,怎么让这个脚本每天自动在Webfaction的服务器上运行呢?

4 个回答

1

你可以使用YQL来抓取网站的数据,并把结果以json格式返回。我经常用YQL来为我的应用获取数据。它速度很快,而且你的服务器不需要承受这个负担。

http://developer.yahoo.com/yql/

如果你想每天运行这个脚本一次,可以试着把它添加到一个定时任务中。

http://docs.webfaction.com/software/general.html#scheduling-tasks-with-cron

http://garrett.im/django/sysadmin/2011/10/03/cron-django-webfaction.html

1

Cron和celerybeat都是不错的选择。Cron比较简单,而celery则能给你更多的控制权。

http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

3

你可以使用 cron 来安排任务。

你的 crontab 文件可能看起来像这样:

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
    0        1          *             *               *           /usr/bin/python manage.py loaddata fixturename.json

(或者你可以使用 @daily /usr/bin/python manage.py loaddata fixturename.json 这个命令,让它每天午夜运行一次)

查看 webfaction 的文档了解更多信息: http://docs.webfaction.com/software/general.html#scheduling-tasks-with-cron

撰写回答