python凤凰新闻数据分析(二)爬虫数据写入django sqlite3数据库

写入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)

刷新网页即可看到:


在终端导入有时候有些不方便,我没使用批量导入数据,在最外面那个website目录下写一个脚本,叫 db.py
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,进入管理员界面即可看到写入成功!





Django中集成Scrapy并存储数据到其自带的ORM(如SQLite、MySQL等)或第三方数据库(如PostgreSQL),你需要经历以下几个步骤: 1. **安装Scrapy**: 首先确保已安装PythonDjango。然后使用pip安装Scrapy: ``` pip install scrapy ``` 2. **创建Scrapy项目**: 创建一个新的Scrapy项目,可以命名为`my_spider_project`: ``` scrapy startproject my_spider_project ``` 3. **配置中间件**: 在Scrapy项目的`settings.py`文件中,你可以设置一个Django管道(DjangoPipeline)作为默认的数据处理机制。例如,添加一个JSON管道或连接到你的Django应用: ```python ITEM_PIPELINES = { 'my_spider_project.pipelines.DjangoPipeline': 300, } SPIDER_MIDDLEWARES = { # 如果需要在爬虫层面处理数据 'scrapymiddleware.middlewares.ScrapyMiddleware': 543, } DATABASES = {...} # 这里填写Django数据库配置 ``` 4. **编写Scrapy爬虫和解析器**: 在Scrapy的`spiders`目录下,创建一个新的爬虫,编写提取数据的逻辑。使用`yield`来返回Item实例,它们会通过管道传递。 5. **创建Django模型**: 在Django应用中的`models.py`中定义你想存储数据的模型。例如,如果抓取的是用户信息: ```python from django.db import models class User(models.Model): name = models.CharField(max_length=100) email = models.EmailField() ``` 6. **定义Django管道**: 在`pipelines.py`中编写DjangoPipeline,将Scrapy Item转换成Django Model实例并保存到数据库: ```python class DjangoPipeline(object): def process_item(self, item, spider): user = User.objects.create(**item) # 使用字典解包的方式填充模型字段 return item ``` 7. **启动Scrapy爬虫**: 在命令行中运行Scrapy爬虫,它会按照配置自动将数据写入Django数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值