2

我正在尝试做三件事。

一:至少每天抓取和归档一组预定义的网站。

二:在这个数据上运行一夜之间的批处理python脚本(文本分类)。

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

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

问题950790建议我可以在 Django 本身中编写爬虫,但我不知道该怎么做。

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

4

3 回答 3

3

如果将 django 项目的应用程序目录插入 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'

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

于 2009-06-09T18:28:06.467 回答
2

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

下面是一个阅读页面的例子:

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

下面是一个解析页面的例子:

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

于 2009-06-09T18:52:47.540 回答
1

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

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

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

于 2009-06-09T18:32:19.297 回答