iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Django结合使用Scrapy爬取数据入库的方法示例
  • 621
分享到

Django结合使用Scrapy爬取数据入库的方法示例

2024-04-02 19:04:59 621人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

在Django项目根目录位置创建scrapy项目,djanGo_12是django项目,ABCkg是scrapy爬虫项目,app1是django的子应用 2.在Scrapy的set

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后台即可看到爬取到的数据。

到此这篇关于Django结合使用Scrapy爬取数据入库的方法示例的文章就介绍到这了,更多相关Django Scrapy爬取数据入库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Django结合使用Scrapy爬取数据入库的方法示例

本文链接: https://www.lsjlt.com/news/122230.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Django结合使用Scrapy爬取数据入库的方法示例
    在django项目根目录位置创建scrapy项目,django_12是django项目,ABCkg是scrapy爬虫项目,app1是django的子应用 2.在Scrapy的set...
    99+
    2024-04-02
  • 怎么在Django中使用Scrapy爬取数据
    怎么在Django中使用Scrapy爬取数据?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在django项目根目录位置创建scrapy项目,django_12是django...
    99+
    2023-06-14
  • 怎么用Scrapy爬虫框架爬取食品论坛数据并存入数据库
    这篇文章主要介绍“怎么用Scrapy爬虫框架爬取食品论坛数据并存入数据库”,在日常操作中,相信很多人在怎么用Scrapy爬虫框架爬取食品论坛数据并存入数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用...
    99+
    2023-06-17
  • SpringBoot+WebMagic+MyBaties实现爬虫和数据入库的示例
    目录创建数据库: 新建SpringBoot项目: 1、配置依赖pom.xml 2、创建CmsContentPO.java 3、创建CrawlerMapper.java 4、配置映射文...
    99+
    2024-04-02
  • Python爬取数据存入MySQL的方法是什么
    Python爬取数据存入MySQL的方法有以下几种: 使用Python的MySQLdb模块:MySQLdb是Python与MySQ...
    99+
    2024-02-29
    Python MySQL
  • 网络爬虫结合ip代理的使用方法
    这篇文章主要讲解了“网络爬虫结合ip代理的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“网络爬虫结合ip代理的使用方法”吧!说到网络爬虫,大家都会很熟悉,因为网络爬虫实际上一直在我们...
    99+
    2023-06-20
  • Python爬虫数据的分类及json数据用法示例
    小编给大家分享一下Python爬虫数据的分类及json数据用法示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!数据的结构化分类       一般来讲对...
    99+
    2023-06-14
  • 如何使用python实现简单爬取网页数据并导入MySQL中的数据库
    前言:要使用 Python 爬取网页数据并将数据导入 MySQL 数据库,您需要使用 Requests 库进行网页抓取,使用 BeautifulSoup 库对抓取到的 HTML 进行解析,并使用 PyMySQL 库与 MySQL 进行交互。...
    99+
    2023-10-18
    python 数据库 爬虫
  • 使用Navicat导入数据库备份的方法
    这篇文章主要介绍使用Navicat导入数据库备份的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!我们在开发网站,或者运营网站的时候,要养成经常备份数据库的习惯,因为这样可以预防数...
    99+
    2024-04-02
  • golang中set数据结构的使用示例
    目录借助map实现算法应用借助map实现 golang中没有set数据结构,一般是通过map实现,因为map的key值是不能重复的 示例 type empty struct { } ...
    99+
    2023-03-08
    golang set数据结构 golang set
  • SpringBoot结合Mybatis实现创建数据库表的方法
    目录前言为什么要通过应用实现创建表的功能准备创建表的 SQL 语句实现通过 MyBatis 创建数据库表示例在 Maven 中引入相关依赖在 SpringBoot 配置文件中添加数据...
    99+
    2024-04-02
  • Python爬取腾讯疫情实时数据并存储到mysql数据库的示例代码
    思路: 在腾讯疫情数据网站F12解析网站结构,使用Python爬取当日疫情数据和历史疫情数据,分别存储到details和history两个mysql表。 ①此方法用于爬取每日详细...
    99+
    2024-04-02
  • Django框架ORM操作数据库不生效问题示例解决方法
    目录问题描述定位过程 首先,我们怀疑是SQL语句拼装错误(比如ID不对),导致了删除不生效解决方案总结本文详细描述使用Django 的ORM框架操作PostgreSQL数据库删除不生...
    99+
    2023-01-07
    django orm操作数据库不生效 django orm框架操作
  • Java使用Math.random()结合蒙特卡洛方法计算pi值示例
    本文实例讲述了Java使用Math.random()结合蒙特卡洛方法计算pi值。分享给大家供大家参考,具体如下:一、概述蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子...
    99+
    2023-05-31
    java random 计算
  • 使用mysql数据库的方法
    小编给大家分享一下使用mysql数据库的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、MySQL服务器的启动与关闭1、启...
    99+
    2024-04-02
  • Flutter数据库的使用方法
    说明 Flutter原生是没有支持数据库操作的,它使用SQLlit插件来使应用具有使用数据库的能力。其实就是Flutter通过插件来与原生系统沟通,来进行数据库操作。 平台支持 ...
    99+
    2024-04-02
  • MongoDB数据库的使用方法
    这篇文章主要介绍“MongoDB数据库的使用方法”,在日常操作中,相信很多人在MongoDB数据库的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MongoDB数据库...
    99+
    2024-04-02
  • MySQL数据库结构和数据的导出和导入方法介绍
    这篇文章主要讲解了“MySQL数据库结构和数据的导出和导入方法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库结构和数据的导出和导入方法介...
    99+
    2024-04-02
  • 使用springboot整合mybatis-plus实现数据库的增删查改示例
    1、准备数据库中的表及表中的数据 ; ; ; ; ; ; CREATE DATABASE `mp` ; USE `mp`; DROP TABLE IF ...
    99+
    2024-04-02
  • Pandas数据处理库画图与文件读取使用示例
    目录Pandas画图文件读取与存储read_csv读取文件Pandas画图 注意:本案例使用 Jupyter Notebook 进行案例演示 pandas库中集成...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作