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. json属性里面出现特殊字符怎么获取属性

    直接上代码. 这样的 获取这个object后需要获取里面的书属性,但是正常情况下是XX.属性名.但是属性名有特殊符号.这时候我们可以这样. XX['属性名']['属性名']....可以一直这样写 XX ...

  2. SQL Server优化技巧——如何避免查询条件OR引起的性能问题

    之前写过一篇博客"SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析",里面介绍了OR可能会引起全表扫描或索引扫描的各种案例,以及如何优化查询条件中含有OR的SQL语句的 ...

  3. docker下MySQL的主从复制

    MySql的主从复制 sudo docker pull MySQL:5.7 拉取MySQL的镜像文件(版本号为 5.7) sudo docker run -p 3339:3306 --name mas ...

  4. 使用Active Database Duplication创建跨平台Data Guard设置 (Windows/Linux) (Doc ID 881421.1)

    Using Active Database Duplication to Create Cross Platform Data Guard Setup (Windows/Linux) (Doc ID ...

  5. python科学计算和数据分析常用库

    NumPy NumPy最强大的是n维数组,该库还包含基本的线性代数函数.傅立叶变换.随机函数和其他底层语言(如Fortran.C和C++)集成的工具. SciPy SciPy建立在NumPy基础上,它 ...

  6. ELK收集windows服务器日志笔记

    一.软件版本 1.jdk-8u211-linux-x64.rpm 2.elasticsearch-6.8.1.rpm 3.logstash-6.8.1.rpm 4.kibana-6.8.1-x86_6 ...

  7. java全栈项目

    文档地址:https://course.7yue.pro/lin/sleeve/ http://talelin.unna.com.cn/ 1.小程序里,我把结构分为三部分:wxml(view).pag ...

  8. win10 安装cuda和cudnn

    首先通过nvidia-smi 查看自己的显卡驱动对应的cuda版本. 参考:https://blog.csdn.net/qq_40212975/article/details/89963016 再去官 ...

  9. 《移动WEB前端高级开发实践@www.java1234.com.pdf》——2

    5.3 作用域.闭包和this let 声明的变量只存在于其所在的代码块中 由于 JS 是基于词法(静态)作用域的语言,词法作用域的含义是在函数定义时就确定了作用域,而不是函数执行时再确定 calcu ...

  10. [考试反思]1112csp-s模拟测试111:二重

    还是AK场.考前信心赛? 而且T3的部分分还放反了所有80的都其实只有50. 总算在AK场真正AK了一次... 手感好,整场考试很顺利.要不是因为T3是原题可能就没这么好看了. 20minT1,50m ...