Django+python+BeautifulSoup组合的垂直搜索爬虫

本文介绍了如何结合Django、Python和BeautifulSoup创建一个垂直搜索爬虫,专注于抓取豆瓣电影的数据。首先,通过Django建立模型和管理后台,用于管理和调度抓取任务。接着,编写爬虫代码,单线程运行,根据抓取深度控制抓取过程,并利用BeautifulSoup解析HTML获取电影标题、图片、简介等信息。最后,将抓取到的数据存储到SQLite数据库中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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)

链接管理后台

第二步,编写爬虫代码

爬虫是单线程,并且每次抓取后都有相应的暂定,豆瓣网会禁止一定强度抓取的爬虫

爬虫根据深度来控制,每次都是先生成链接,然后抓取,并解析出更多的链接,最好将抓取过的链接is_save=true,并把新链接存入数据库中。每次一个深度抓取完后都需要花比较长的时候把链接导入数据库。因为需要判断链接是否已存入数据库。

这个只对满足正则表达式 http://movie.douban.com/subject/(/d+)/ 的地址进行数据解析。并且直接忽略掉不是电影模块的链接。

第一次抓取需要在后台加个链接,比如http://movie.douban.com/chart,这是个排行榜的页面,电影比较受欢迎。

python代码:


<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值