爬虫数据写入django sqlite3数据库

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

项目目录/db.py

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

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

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

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值