如何将网站数据自动收集到我的数据库中?
我有一个基于Django的网站,使用的是托管在Webfaction上的PostgreSQL数据库。通常,我手动从另一个网站收集数据库所需的数据(就是复制粘贴到一个文本文件里),那个网站在一个网页上用HTML表格列出了所有数据。
关于用Python自动收集这些数据,我想我应该使用像html5lib或Scrapy这样的工具,写一个脚本来加载网页,找到我想要的HTML表格,从中提取数据,把它格式化成JSON,然后用
manage.py loaddata fixturename.json
把我的数据加载到数据库里。不过,我的问题是,怎么让这个脚本每天自动在Webfaction的服务器上运行呢?
4 个回答
你可以使用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
Cron和celerybeat都是不错的选择。Cron比较简单,而celery则能给你更多的控制权。
http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html
你可以使用 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