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

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

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

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

  1. # -*- coding: utf-8 -*-
  2. import scrapy
  3. from ABCkg.items import AbckgItem
  4.  
  5. class AbckgSpider(scrapy.Spider):
  6. name = 'abckg' #爬虫名称
  7. allowed_domains = ['www.abckg.com'] # 允许爬取的范围
  8. start_urls = ['http://www.abckg.com/'] # 第一次请求的地址
  9. def parse(self, response):
  10. print('返回内容:{}'.format(response))
  11. """
  12. 解析函数
  13. :param response: 响应内容
  14. :return:
  15. """
  16. listtile = response.xpath('//*[@id="container"]/div/div/h2/a/text()').extract()
  17. listurl = response.xpath('//*[@id="container"]/div/div/h2/a/@href').extract()
  18.  
  19. for index in range(len(listtile)):
  20. item = AbckgItem()
  21. item['title'] = listtile[index]
  22. item['url'] = listurl[index]
  23. yield scrapy.Request(url=listurl[index],callback=self.parse_content,method='GET',dont_filter=True,meta={'item':item})
  24. # 获取下一页
  25. nextpage = response.xpath('//*[@id="container"]/div[1]/div[10]/a[last()]/@href').extract_first()
  26. print('即将请求:{}'.format(nextpage))
  27. yield scrapy.Request(url=nextpage,callback=self.parse,method='GET',dont_filter=True)
  28. # 获取详情页
  29. def parse_content(self,response):
  30. item = response.meta['item']
  31. item['content'] = response.xpath('//*[@id="post-1192"]/dd/p').extract()
  32. print('内容为:{}'.format(item))
  33. yield item

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

pip install scrapy-djangoitem

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

5.pipelines.py中调用save()

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

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

  1. class ABCkg(models.Model):
  2. title = models.CharField(max_length=30,verbose_name='标题')
  3. url = models.CharField(max_length=100,verbose_name='网址')
  4. content = models.CharField(max_length=200,verbose_name='内容')
  5. class Meta:
  6. verbose_name_plural = '爬虫ABCkg'
  7. def __str__(self):
  8. 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. NuGet修改默认包保存的位置

    NuGet默认的全局包下载地址一般为:C:\Users\{username}\.nuget\packages 修改方法: <?xml version="1.0" encodi ...

  2. Linux tree

    tree命令,是大小写敏感的.常用的是:1.tree -C 颜色显示 2.tree -f 显示文件全路径ls -R也可以显示树结构,但没上面 清晰 3.tree -L n n 是数字,表示显示几层 4 ...

  3. JS表单内容垂直循环滚动

    参考博客:https://blog.csdn.net/yubo_725/article/details/52839493  大佬是真的厉害,保存一下,以方便后续使用 效果: 源码: <!DOCT ...

  4. C语言中,关于相除的问题

    若定义的类型是 整数型:int a,b ;则a/b的值为整数的,不会带着小数点的..... 若定义的数据类型是 浮点型的 :double a,b; 则这种情况下,得到的结果与数学结果无异

  5. Node.js module export async function

    一.Demo 1.首先定义 module 文件:bbb.js const fs = require("fs"); function readFileSync() { let res ...

  6. mybatis无效比较:invalid comparison:java.util.data and java.lang.string

    原因: 时间与空字符串比较是无效的,如果拿传入的时间类型参数与空字符串''进行对比则会引发invalid comparison:java.util.data and java.lang.string异 ...

  7. ASP.NET Core Web 应用程序系列(四)- ASP.NET Core 异步编程之async await

    PS:异步编程的本质就是新开任务线程来处理. 约定:异步的方法名均以Async结尾. 实际上呢,异步编程就是通过Task.Run()来实现的. 了解线程的人都知道,新开一个线程来处理事务这个很常见,但 ...

  8. Java - 变量常量数据类型

    标识符命名规范 可以有字母数字下划线和美元符组成, hello abc 不能以数字开头 123abc 严格区分大小写 void Void 不能是java的关键字和保留字 class 标识符必须是见名知 ...

  9. Pandas:DataFrame数据选择方法(索引)

    #首先创建我们的Series对象,然后合并到dataframe对象里面去 import pandas as pd import numpy as np area=pd.Series({,,,}) po ...

  10. 从0系统学Android-2.6Activity间数据传递

    本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 2.3.4 向下一个 Activity 传递数据 前面学习了使用 Intent 来启动一个 Activity ,其 ...