使用python+BeautifulSoup完成爬虫抓取特定数据的工作,并使用Django搭建一个管理平台,用来协调抓取工作。
因为自己很喜欢Django admin后台,所以这次用这个后台对抓取到的链接进行管理,使我的爬虫可以应对各种后期的需求。比如分时段抓取,定期的对已经抓取的地址重新抓取。数据库是用python自带的sqlite3,所以很方便。
这几天正好在做一个电影推荐系统,需要些电影数据。本文的例子是对豆瓣电影抓取特定的数据。
第一步:建立Django模型
模仿nutch的爬虫思路,这里简化了。每次抓取任务开始先从数据库里找到未保存的(is_save = False)的链接,放到抓取链表里。你也可以根据自己的需求去过滤链接。
python代码:
class Crawl_URL(models.Model): url = models.URLField('抓取地址',max_length=100, unique=True) weight = models.SmallIntegerField('抓取深度',default = 0)#抓取深度起始1 is_save = models.BooleanField('是否已保存',default= False)# date = models.DateTimeField('保存时间',auto_now_add=True,blank=True,null=True) def __unicode__(self): return self.url
然后生成相应的表。
还需要一个admin管理后台
class Crawl_URLAdmin(admin.ModelAdmin): list_display = ('url','weight','is_save','date',) ordering = ('-id',) list_filter = ('is_save','weight','date',) fields = ('url','weight','is_save',) admin.site.register(Crawl_URL, Crawl_URLAdmin)
<