写入mongo数据库可以参考我之前的高校新闻博客,很简单两行代码搞定。
Django版本:2.0 Python版本:3.6.5
此次写入的为django sqlite3数据库,不懂django的先去补习,再回来看。
我们用cmd新建一个项目 website, 再新建一个 app,名称为tool
django-admin.py startproject website
cd website
python manage.py startapp tool
把 tool 中的 models.py 更改为以下内容
from django.db import models
# Create your models here.
class Information(models.Model):
title = models.CharField('新闻标题',max_length=100)
number = models.CharField('点击量排名',max_length=32)
clicks = models.CharField('点击量',max_length=32)
time = models.CharField('时间',max_length=32)
participate = models.CharField('参与人数',max_length=32)
comment_num = models.CharField('评论人数',max_length=32)
comment = models.TextField('评论内容')
created = models.DateTimeField('发布时间',auto_now_add=True)
def __str__(self):
return self.title
不要忘了把 tool 加入到 settings.py 中的 INSTALLED_APPS 中
# Application definition
INSTALLED_APPS = (
...
# 添加上 blog 这个 app
'tool',
)
然后使用cmd输入命令,同步数据库,创建相应的表,创建管理员账户、邮箱、密码
python manage.py makemigrations
python manage.py migrate
Django2.0版本:然后创建超级管理员
python manage.py createsuperuser
然后输入如下命令,浏览器输入127.0.0.1:8000/admin,即可进入管理员界面
python manage.py runserver 0.0.0.0:8000
此时还看不到相应的表,修改tool下的admin.py为:
from django.contrib import admin
# Register your models here.
from .models import *
class InformationAdmin(admin.ModelAdmin):
list_display = ('title','time','created')
admin.site.register(Information,InformationAdmin)
刷新网页即可看到:
import os
import django
from bs4 import BeautifulSoup
import requests
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "website.settings")#website可以更改为自己的项目名称
django.setup()#Django版本大于1.7 加入这行代码
def spider_Information():
global new
from tool.models import Information
first = BeautifulSoup(str(new[0]),'html.parser')
first_new = first.find_all('tr')
for i in range(20):
first_new_td = BeautifulSoup(str(first_new[i+1]),'html.parser')
first_new_item = first_new_td.find_all('td')
Information.objects.create(title=first_new_item[1].text,number=first_new_item[0].text,clicks=first_new_item[2].text,time=first_new_item[3].text)
if __name__ == "__main__":
url = 'http://news.ifeng.com/hotnews/'
req = requests.get(url)
html = req.content.decode('utf-8')
div_bf = BeautifulSoup(html,'html.parser')
new = div_bf.find_all('div',class_='boxTab clearfix')
spider_Information()
print('Information Done!')
此次数据为上一篇文章的新闻爬虫数据,这里爬取后直接写入。然后运行python db.py,进入管理员界面即可看到写入成功!