将Web爬虫与Django前端连接

时间:2009-06-09 18:14:07

标签: python django web-crawler

我正在尝试做三件事。

一:抓取并存档,至少每天,一组预定义的网站。

二:对此数据运行隔夜批处理python脚本(文本分类)。

三:向用户公开基于Django的前端,让他们搜索已爬网的数据。

我一直在玩Apache Nutch / Lucene但是当我可以使用另一个爬虫引擎时,让它与Django玩得很好似乎太难了。

问题950790表明我可以在Django本身编写爬虫,但我不确定如何解决这个问题。

基本上 - 在Django中编写爬虫的任何指针或我能够适应的现有python爬虫吗?或者我应该在第二步中加入'变成Django友好的东西'并编写一些胶水代码?或者,最后,我应该完全放弃Django吗?我真的需要能够从前端快速搜索的东西。

3 个答案:

答案 0 :(得分:3)

如果将django项目的app目录插入sys.path,则可以编写使用Django ORM功能的标准Python脚本。我们有一个/ admin /目录,其中包含执行各种任务的脚本 - 每个脚本的顶部都是一个看起来像这样的块:

sys.path.insert(0,os.path.abspath('../my_django_project'))
sys.path.insert(0,os.path.abspath('../'))
sys.path.insert(0,os.path.abspath('../../'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

然后,只需使用您选择的工具来抓取Web并使用Django数据库API来存储数据。

答案 1 :(得分:2)

您使用urllib2编写自己的抓取工具来获取页面,并使用Beautiful Soup解析HTML以查找内容。

以下是阅读页面的示例:

http://docs.python.org/library/urllib2.html#examples

以下是解析页面的示例:

http://www.crummy.com/software/BeautifulSoup/documentation.html#Parsing HTML

答案 2 :(得分:1)

如果您不想使用Django ORM编写爬虫(或者已经有工作爬虫),您可以在爬虫和Django-powred前端之间共享数据库。

为了能够使用Django admin搜索(和编辑)现有数据库,您应该创建Django模型。 这方面的简单方法如下所述:

http://docs.djangoproject.com/en/dev/howto/legacy-databases/