最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django結(jié)合使用Scrapy爬取數(shù)據(jù)入庫的方法示例

 更新時間:2021年03月23日 10:47:19   作者:shiguanggege  
這篇文章主要介紹了Django結(jié)合使用Scrapy爬取數(shù)據(jù)入庫的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在django項目根目錄位置創(chuàng)建scrapy項目,django_12是django項目,ABCkg是scrapy爬蟲項目,app1是django的子應(yīng)用

在這里插入圖片描述

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('返回內(nèi)容:{}'.format(response))
    """
    解析函數(shù)
    :param response: 響應(yīng)內(nèi)容
    :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('內(nèi)容為:{}'.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中調(diào)用save()

import json
from pymongo import MongoClient
# 用于接收parse函數(shù)發(fā)過來的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傳給下一個管道執(zhí)行
  def close_spider(self,spider):
    # print('關(guān)閉文件')
    self.f.close()

6.在django中models.py中一個模型類,字段對應(yīng)爬取到的數(shù)據(jù),選擇適當(dāng)?shù)念愋团c長度

class ABCkg(models.Model):
  title = models.CharField(max_length=30,verbose_name='標題')
  url = models.CharField(max_length=100,verbose_name='網(wǎng)址')
  content = models.CharField(max_length=200,verbose_name='內(nèi)容')
  class Meta:
    verbose_name_plural = '爬蟲ABCkg'
  def __str__(self):
    return self.title

7.通過命令啟動爬蟲:scrapy crawl 爬蟲名稱

8.django進入admin后臺即可看到爬取到的數(shù)據(jù)。

到此這篇關(guān)于Django結(jié)合使用Scrapy爬取數(shù)據(jù)入庫的方法示例的文章就介紹到這了,更多相關(guān)Django Scrapy爬取數(shù)據(jù)入庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • YOLOv5車牌識別實戰(zhàn)教程(一)引言與準備工作

    YOLOv5車牌識別實戰(zhàn)教程(一)引言與準備工作

    這篇文章主要介紹了YOLOv5車牌識別實戰(zhàn)教程(一)引言與準備工作,在這個教程中,我們將一步步教你如何使用YOLOv5進行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下
    2023-04-04
  • Python實現(xiàn)聚類K-means算法詳解

    Python實現(xiàn)聚類K-means算法詳解

    這篇文章主要介紹了Python實現(xiàn)聚類K-means算法詳解,K-means(K均值)算法是最簡單的一種聚類算法,它期望最小化平方誤差,具體詳解需要的朋友可以參考一下
    2022-07-07
  • python PIL Image 圖像處理基本操作實例

    python PIL Image 圖像處理基本操作實例

    這篇文章主要介紹了python PIL Image 圖像處理基本操作實例包括圖片加載、灰度圖,圖像通道分離和合并,在圖像上輸出文字,圖像縮放,圖像閾值分割、 二值化,圖像裁剪需要的朋友可以參考下
    2022-04-04
  • Django用戶登錄與注冊系統(tǒng)的實現(xiàn)示例

    Django用戶登錄與注冊系統(tǒng)的實現(xiàn)示例

    這篇文章主要介紹了Django用戶登錄與注冊系統(tǒng)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python數(shù)字圖像處理之圖像的批量處理

    python數(shù)字圖像處理之圖像的批量處理

    這篇文章主要為大家介紹了python數(shù)字圖像處理之圖像的批量處理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • python獲取當(dāng)前文件和目錄路徑的方法詳解

    python獲取當(dāng)前文件和目錄路徑的方法詳解

    這篇文章主要介紹了Python中獲取當(dāng)前文件路徑和目錄的方法,包括使用__file__關(guān)鍵字、os.path.abspath、os.path.realpath以及sys.path,文中還介紹了在使用這些函數(shù)時需要注意的事項,需要的朋友可以參考下
    2025-01-01
  • Python使用cn2an實現(xiàn)中文數(shù)字與阿拉伯?dāng)?shù)字的相互轉(zhuǎn)換

    Python使用cn2an實現(xiàn)中文數(shù)字與阿拉伯?dāng)?shù)字的相互轉(zhuǎn)換

    這篇文章主要介紹了Python使用cn2an實現(xiàn)中文數(shù)字與阿拉伯?dāng)?shù)字的相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python使用future處理并發(fā)問題方案詳解

    Python使用future處理并發(fā)問題方案詳解

    從Python3.2引入的concurrent.futures模塊,Python2.5以上需要在pypi中安裝futures包。future指一種對象,表示異步執(zhí)行的操作。這個概念的作用很大,是concurrent.futures模塊和asyncio包的基礎(chǔ)
    2023-02-02
  • python數(shù)字圖像處理之骨架提取與分水嶺算法

    python數(shù)字圖像處理之骨架提取與分水嶺算法

    這篇文章主要介紹了python數(shù)字圖像處理之骨架提取與分水嶺算法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • python教程命名元組示例分析

    python教程命名元組示例分析

    這篇文章是python教程篇,主要為大家介紹了Python中命名元組的示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-09-09

最新評論

濉溪县| 绿春县| 桐梓县| 舞钢市| 潍坊市| 曲麻莱县| 三原县| 宜昌市| 扎兰屯市| 岳阳市| 宜兴市| 萝北县| 木里| 泸西县| 彝良县| 黑龙江省| 浮梁县| 广平县| 平果县| 景谷| 苍山县| 五原县| 工布江达县| 特克斯县| 涿州市| 祁阳县| 微博| 渝中区| 瑞昌市| 微山县| 博爱县| 平山县| 云安县| 安仁县| 嘉祥县| 连云港市| 开封县| 渝中区| 高安市| 即墨市| 上饶市|