上回,我已经大概把爬虫写出来了。
我写了一个内容爬虫,一个爬取tag里面内容链接的爬虫其实还差一个,就是收集一共有哪些tag的爬虫。但是这里先不说这个问题,因为我上次忘了 这次又不想弄。。还有个原因:如果实际采集的话,直接用
http://segmentfault.com/questions/newest?page=1
这个链接 获取所有问题,挨个爬就行。
进入正题
第三部分,采集入库。
3.1 定义数据库(or model or schema)
为了入库,我需要在Django定义一个数据库的结构。(不说nosql和mongodb(也是一个nosql但是很像关系型)的事)
还记得那个名叫web的app么,里面有个叫models.py
的文件,我现在就来编辑它。
vim ~/python_spider/web/models.py
内容如下:
# -*- coding: utf-8 -*-
from django.db import models
# Create your models here.
class Tag(models.Model):
title = models.CharField(max_length=30)
def __unicode__(self):
return self.title
class Question(models.Model):
title = models.CharField(max_length=255)
content = models.TextField()
tags = models.ManyToManyField(Tag, related_name='questions')
sf_id = models.CharField(max_length=16, default='0') # 加上这个可以记住问题在sf的位置,方便以后更新或者其他操作
update_date = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.title
class Answer(models.Model):
question = models.ForeignKey(Question, related_name='answers')
content = models.TextField()
def __unicode__(self):
return 'To question %s' % self.question.title
都很直白,关于各个field可以看看 Django 的文档。