您的位置:首页 > 数据库 > SQL

爬虫数据写入django sqlite3数据库

2020-02-04 01:48 971 查看

1、生成app,设置5个python文件

项目目录/db.py

增加了对链接(link)的页面查询和数据库导入

[code]import os
import django
from bs4 import BeautifulSoup
import requests

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myweb.settings")  # myweb可以更改为自己的项目名称
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')
#print(first_new_item)
link = first_new_td.find(name='a').get('href') # 查找方法:先find a,再get href
#print(link)
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,
link=link)
#Information.objects.create(link='link')
#print(first_new_item)

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!')

项目app/models.py

[code]from django.db import models

# Create your models here.
class Information(models.Model):
title = models.CharField('新闻标题', max_length=100)
link = models.CharField('链接', max_length=200)
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

另需设置

settings.py(增加app名称) 

urls.py(admin页面)        添加path('admin/', admin.site.urls),

admin.py

[code]from django.contrib import admin

# Register your models here.
from .models import *

class InformationAdmin(admin.ModelAdmin):
list_display = ('title', 'link', 'time', 'created')

admin.site.register(Information, InformationAdmin)

2、使用admin页面发布

web发布效果

python manage.py runserver

  • 点赞
  • 收藏
  • 分享
  • 文章举报
搞不好啦 发布了27 篇原创文章 · 获赞 0 · 访问量 364 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: