1. 在django项目根目录位置创建scrapy项目,django_12是django项目,ABCkg是scrapy爬虫项目,app1是django的子应用

2.在Scrapy的settings.py中加入以下代码

import os
import sys
sys.path.append(os.path.dirname(os.path.abspath('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_12.settings' # 项目名.settings
import django
django.setup()

3.编写爬虫,下面代码以ABCkg为例,abckg.py

# -*- coding: utf-8 -*-
import scrapy
from ABCkg.items import AbckgItem class AbckgSpider(scrapy.Spider):
name = 'abckg' #爬虫名称
allowed_domains = ['www.abckg.com'] # 允许爬取的范围
start_urls = ['http://www.abckg.com/'] # 第一次请求的地址
def parse(self, response):
print('返回内容:{}'.format(response))
"""
解析函数
:param response: 响应内容
:return:
"""
listtile = response.xpath('//*[@id="container"]/div/div/h2/a/text()').extract()
listurl = response.xpath('//*[@id="container"]/div/div/h2/a/@href').extract() for index in range(len(listtile)):
item = AbckgItem()
item['title'] = listtile[index]
item['url'] = listurl[index]
yield scrapy.Request(url=listurl[index],callback=self.parse_content,method='GET',dont_filter=True,meta={'item':item})
# 获取下一页
nextpage = response.xpath('//*[@id="container"]/div[1]/div[10]/a[last()]/@href').extract_first()
print('即将请求:{}'.format(nextpage))
yield scrapy.Request(url=nextpage,callback=self.parse,method='GET',dont_filter=True)
# 获取详情页
def parse_content(self,response):
item = response.meta['item']
item['content'] = response.xpath('//*[@id="post-1192"]/dd/p').extract()
print('内容为:{}'.format(item))
yield item

4.scrapy中item.py 中引入django模型类

pip install scrapy-djangoitem

from app1 import models
from scrapy_djangoitem import DjangoItem class AbckgItem(DjangoItem):
# define the fields for your item here like:
# name = scrapy.Field() # 普通scrapy爬虫写法
# title = scrapy.Field()
# url = scrapy.Field()
# content = scrapy.Field()
django_model = models.ABCkg # 注入django项目的固定写法,必须起名为django_model =django中models.ABCkg表

5.pipelines.py中调用save()

import json
from pymongo import MongoClient
# 用于接收parse函数发过来的item
class AbckgPipeline(object):
# i = 0
def open_spider(self,spider):
# print('打开文件')
if spider.name == 'abckg':
self.f = open('abckg.json',mode='w')
def process_item(self, item, spider):
# # print('ABC管道接收:{}'.format(item))
# if spider.name == 'abckg':
# self.f.write(json.dumps(dict(item),ensure_ascii=False))
# # elif spider.name == 'cctv':
# # img = requests.get(item['img'])
# # if img != '':
# # with open('图片\%d.png'%self.i,mode='wb')as f:
# # f.write(img.content)
# # self.i += 1
item.save()
return item # 将item传给下一个管道执行
def close_spider(self,spider):
# print('关闭文件')
self.f.close()

6.在django中models.py中一个模型类,字段对应爬取到的数据,选择适当的类型与长度

class ABCkg(models.Model):
title = models.CharField(max_length=30,verbose_name='标题')
url = models.CharField(max_length=100,verbose_name='网址')
content = models.CharField(max_length=200,verbose_name='内容')
class Meta:
verbose_name_plural = '爬虫ABCkg'
def __str__(self):
return self.title

7.通过命令启动爬虫:scrapy crawl 爬虫名称

8.django进入admin后台即可看到爬取到的数据。

将scrapy爬取数据通过django入到SQLite数据库的更多相关文章

  1. 如何提升scrapy爬取数据的效率

    在配置文件中修改相关参数: 增加并发 默认的scrapy开启的并发线程为32个,可以适当的进行增加,再配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100. ...

  2. scrapy爬取数据的基本流程及url地址拼接

    说明:初学者,整理后方便能及时完善,冗余之处请多提建议,感谢!   了解内容: Scrapy :抓取数据的爬虫框架     异步与非阻塞的区别   异步:指的是整个过程,中间如果是非阻塞的,那就是异步 ...

  3. python之scrapy爬取数据保存到mysql数据库

    1.创建工程 scrapy startproject tencent 2.创建项目 scrapy genspider mahuateng 3.既然保存到数据库,自然要安装pymsql pip inst ...

  4. 42.scrapy爬取数据入库mongodb

    scrapy爬虫采集数据存入mongodb采集效果如图: 1.首先开启服务切换到mongodb的bin目录下 命令:mongod --dbpath e:\data\db 另开黑窗口 命令:mongo. ...

  5. scrapy爬取数据进行数据库存储和本地存储

    今天记录下scrapy将数据存储到本地和数据库中,不是不会写,因为小编每次都写觉得都一样,所以记录下,以后直接用就可以了-^o^- 1.本地存储 设置pipel ines.py class Ak17P ...

  6. scrapy爬取数据保存csv、mysql、mongodb、json

    目录 前言 Items Pipelines 前言 用Scrapy进行数据的保存进行一个常用的方法进行解析 Items item 是我们保存数据的容器,其类似于 python 中的字典.使用 item ...

  7. 信息技术手册可视化进度报告 基于BeautifulSoup框架的python3爬取数据并连接保存到MySQL数据库

    老师给我们提供了一个word文档,里面是一份信息行业热词解释手册,要求我们把里面的文字存进数据库里面,然后在前台展示出来. 首先面临的问题是怎么把数据导进MySQL数据库,大家都有自己的方法,我采用了 ...

  8. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  9. 爬虫必知必会(6)_提升scrapy框架爬取数据的效率之配置篇

    如何提升scrapy爬取数据的效率:只需要将如下五个步骤配置在配置文件中即可 增加并发:默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_ ...

随机推荐

  1. iOS开发中全量日志的获取

    我们在app中对崩溃.卡顿.内存问题进行监控.一旦监控到问题,我们就需要记录下来,但是,很多问题的定位仅靠问题发生的那一刹那记录的信息是不够的,我们需要记录app的全量日志来获取更多的信息. 一,使用 ...

  2. Flutter速记

    一.安装 参考https://www.jianshu.com/p/cda416e2fc0d         二.换图标   三.打包 参考:https://www.cnblogs.com/shuang ...

  3. 一些常用的 redis 的操作配置(对String、hash)

    import java.util.List; import java.util.Map; import org.apache.logging.log4j.LogManager; import org. ...

  4. PHP目前常见的五大运行模式

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xujingzhong0077/artic ...

  5. SSM实现mysql数据库账号密码加密连接

    引言 咱们公司从事的是信息安全涉密应用的一些项目研发一共有分为三步,相比较于一般公司和一般的项目,对于信息安全要求更加严格,领导要求数据量和用户的用户名及密码信息都必需是要密文配置和存储的,这就涉及到 ...

  6. Spring Boot可执行Jar包运行原理

    目录 1. 打可执行Jar包 2. 可执行Jar包内部结构 3. JarLauncher 4. 简单总结 5. 远程调试 Spring Boot有一个很方便的功能就是可以将应用打成可执行的Jar.那么 ...

  7. linux远程登入/远程上传文件

    一.远程登入 1.安装 Xshell5 2.查看是否具备连接 在linux 主机上输入 chkconfig --list | grep sshd #sshd 0:关闭 1:关闭 2:启用 3:启用 4 ...

  8. 操作系统篇之Linux命令操作和redis安装以及基本使用

    电脑操作系统 : windows7,8,10,xp,win98 操作系统 : linux ax unix 以后开发项目是部署在服务器上,服务器一般采用linux. linux的优点:系统稳定,操作速度 ...

  9. JS基础语法---内置对象

    js学习中三种对象: 内置对象----js系统自带的对象 自定义对象---自己定义的构造函数创建的对象 浏览器对象---BOM的时候讲 内置对象: Math Date String Array Obj ...

  10. Dynamics CRM邮件附件,你真的了解吗?

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复160或者20151014可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 听人问起怎么读取到一封邮件所有的 ...