主頁 > 後端開發 > 【??爬蟲必備->Scrapy框架從黑鐵到王者??】初篇——萬字博文詳解(建議收藏)

【??爬蟲必備->Scrapy框架從黑鐵到王者??】初篇——萬字博文詳解(建議收藏)

2021-08-11 07:38:25 後端開發

目錄

  • 🎅第一部分:走近scrapy!
    • 🍏0.簡介及安裝
      • 1??簡介:
      • 2??安裝:
    • 🍒1.scrapy專案開發流程:
    • 🍓2.scrapy框架運行流程:
      • 🍌拓展——scrapy中三個內置物件:
  • 🎍第二部分:創建&&運行你的第一個scrapy專案!
    • 🐱1.創建專案:
    • 🐹2.爬蟲檔案的創建:
    • 🐸3.運行scrapy爬蟲:
    • 🐻4.明確了爬蟲所爬取資料之后,使用管道進行資料持久化操作:
    • 🐮5.管道保存資料
      • ??初級篇:
      • ??進階篇:
    • 🐒6.settings.py配置啟用管道:
    • 🐫7.scrapy資料建模與請求:
      • 💊(1)為什么建模?
      • 💊(2)本專案中實操:
    • 🏃8.設定user-agent:
    • 🔮9.到目前為止,一個入門級別的scrapy爬蟲已經OK了,基操都使用了!
      • 如何run呢?
    • 🐱10.開發流程總結:
    • 結語:
  • 🔆第三部分——In The End!

  1. 👻👻相信不少小伙伴們在經歷過我的上幾篇關于爬蟲技術的萬字博文的輪番轟炸后,已經可以獨立開發出屬于自己的爬蟲專案!!!——爬蟲之路,已然開啟!👻👻
    ?

?💦第一篇之爬蟲入坑文;一篇萬字博文帶你入坑爬蟲這條不歸路(你還在猶豫什么&抓緊上車) 【??熬夜整理&建議收藏??】
?💦第二篇之爬蟲庫requests庫詳解,兩萬字博文教你python爬蟲requests庫,看完還不會我把我女朋友都給你【??熬夜整理&建議收藏??】
?💦第三篇之決議庫Xpath庫詳解,萬字博文教你python爬蟲必備XPath庫,看完還不會我把我女朋友都給你【??建議收藏系列??】
?💦第四篇之決議庫Beautiful Soup庫詳解,Python萬字博文教你玩透Beautiful Soup庫,不信你學不會【??建議收藏系列??】
?💦第五篇之Selenium詳解,【??爬蟲必備->Selenium從黑鐵到王者??】初篇——萬字博文詳解(建議收藏)

  1. 😬😬但是 前幾日有很多粉絲私聊我反饋說:"自己爬蟲基礎庫已經學差不多了,實戰也做了不少,但是好多自己接的爬蟲單或者老板都要求使用scrapy框架來爬取資料,自己沒有接觸過scrapy框架不知道如何下手!"😬😬

? 其實我已經有一個scrapy一條龍教學的分欄,也有不少人訂閱并且反響不錯,【Scrapy框架詳解】,但是呢?我又想了想,確實少了篇總結性的文章——來從總體上介紹Scrapy框架,

  1. ??所以應粉絲們要求,本博主花了假期周六周日兩天時間,肝出本文(共分上中下三篇),目的在于帶領想要學習scrapy的同學走近scrapy的世界!并在文末附帶一整套scrapy框架學習路線,如果你能認認真真看完這三篇文章,在心里對scrapy有個印象,然后潛心研究文末整套學習路線,那么,scrapy框架對你來說——手到擒來!!!??
分欄名稱傳送門
🎐爬蟲難,跟我一起入爬蟲坑,爬蟲一條龍服務!🎐《入坑Python爬蟲》
🐲Django框架難,跟我一起一條龍教學(附帶多個小型專案實戰!)🐲《Django框架一條龍》
🐋Scrapy框架難,跟我一起一條龍教學(附帶多個小型專案實戰!)🐋《Scrapy框架一條龍》
🐠Tornado框架難,跟我一起一條龍教學(附帶一個完整專案!)🐠《Tornado框架一條龍》
🐝爬蟲——JS滲透;三大驗證碼(滑塊,點觸,圖形);字體反爬;移動端!🐝《爬蟲高級一條龍》
  1. 🔩🔩我會盡量把技術文寫的通俗易懂/生動有趣,保證每一個想要學習知識&&認認真真讀完本文的讀者們能夠有所獲,有所得,當然,如果你讀完感覺本文寫的還可以,真正學習到了東西,希望給我個「 贊 」「 收藏 」,這個對我很重要,謝謝了!🔩🔩

?


?????重點來啦!重點來啦!! 💗💗💗
下面就讓我們一同走入scrapy的神奇世界!

?

🎅第一部分:走近scrapy!

?

🍏0.簡介及安裝

1??簡介:

scrapy設計目的:用于爬取網路資料,提取結構性資料的框架,其中,scrapy使用了Twisted異步網路框架,大大加快了下載速度!

官方檔案地址!!!

在這里插入圖片描述

2??安裝:

直接pip安裝(一句命令&&一步到位):

pip install scrapy

?

🍒1.scrapy專案開發流程:

  1. 創建專案:scrapy startproject mySpider
  2. 生成一個爬蟲:scrapy genspider baidu baidu.com
  3. 提取資料:根據網站結構在spider中實作資料采集相關內容
  4. 保存資料:使用pipeline進行資料后續處理和保存
    ?

🍓2.scrapy框架運行流程:

在這里插入圖片描述

說明——scrapy中每個模塊的具體作用!

在這里插入圖片描述
原理描述:

  1. 爬蟲中起始的url構造的url物件–>爬蟲中間件–>引擎–>調度器
  2. 調度器把request–>引擎–>下載中間件–>下載器
  3. 下載器發送請求,獲取response回應—>下載中間件—>引擎–>爬蟲中間件—>爬蟲
  4. 爬蟲提取url地址,組裝成request物件—>爬蟲中間件—>引擎—>調度器,重復步驟2
  5. 爬蟲提取資料—>引擎—>管道處理和保存資料
注意:爬蟲中間件和下載中間件只是運行的邏輯的位置不同,作用是重復的:如替換UA等!

?

🍌拓展——scrapy中三個內置物件:

三個內置物件:(scrapy框架中只有三種資料型別)

   request請求物件:由url,method,post_data,headers等構成;
   response回應物件:由url,body,status,headers等構成;
   item資料物件:本質是一個字典,

?

🎍第二部分:創建&&運行你的第一個scrapy專案!

?

🐱1.創建專案:

創建scrapy專案的命令:scrapy startproject <專案名字>
示例:
scrapy startproject myspider

生成的目錄和檔案結果如下:

在這里插入圖片描述

?

🐹2.爬蟲檔案的創建:

在專案根路徑下執行:

 scrapy genspider <爬蟲名字> <允許爬取的域名>

示例:

cd myspider
scrapy genspider itcast itcast.cn

講解:

  • 爬蟲名字:作為爬蟲運行時的引數;
  • 允許爬的域名:為對于爬蟲設定的爬取范圍,設定之后用于過濾要爬取的url,如果爬取的url與允許的域名不同,則被過濾掉,
    ?

🐸3.運行scrapy爬蟲:

命令:在專案目錄下執行:
scrapy crawl <爬蟲名字>

示例:

scrapy crawl itcast

不過,在運行之前,我們先要撰寫itcast.py爬蟲檔案:

# -*- coding: utf-8 -*-
import scrapy


class ItcastSpider(scrapy.Spider):
    # 爬蟲運行時的引數
    name = 'itcast'
    # 檢查允許爬的域名
    allowed_domains = ['itcast.cn']
    # 1.修改設定起始的url
    start_urls = ['http://www.itcast.cn/channel/teacher.shtml#ajacaee']

    # 資料提取的方法:接收下載中間件傳過來的response,定義對于網站相關的操作
    def parse(self, response):
        # 獲取所有的教師節點
        t_list = response.xpath('//div[@class="li_txt"]')
        print(t_list)
        # 遍歷教師節點串列
        tea_dist = {}
        for teacher in t_list:
            # xpath方法回傳的是選擇器物件串列     extract()方法可以提取到selector物件中data對應的資料,
            tea_dist['name'] = teacher.xpath('./h3/text()').extract_first()
            tea_dist['title'] = teacher.xpath('./h4/text()').extract_first()
            tea_dist['desc'] = teacher.xpath('./p/text()').extract_first()
            yield teacher

然后再運行,會發現已經可以正常運行!
在這里插入圖片描述?

🐻4.明確了爬蟲所爬取資料之后,使用管道進行資料持久化操作:

修改itcast.py爬蟲檔案:

# -*- coding: utf-8 -*-
import scrapy
from ..items import UbuntuItem


class ItcastSpider(scrapy.Spider):
    # 爬蟲運行時的引數
    name = 'itcast'
    # 檢查允許爬的域名
    allowed_domains = ['itcast.cn']
    # 1.修改設定起始的url
    start_urls = ['http://www.itcast.cn/channel/teacher.shtml#ajacaee']

    # 資料提取的方法:接收下載中間件傳過來的response,定義對于網站相關的操作
    def parse(self, response):
        # 獲取所有的教師節點
        t_list = response.xpath('//div[@class="li_txt"]')
        print(t_list)
        # 遍歷教師節點串列
        item = UbuntuItem()
        for teacher in t_list:
            # xpath方法回傳的是選擇器物件串列     extract()方法可以提取到selector物件中data對應的資料,
            item['name'] = teacher.xpath('./h3/text()').extract_first()
            item['title'] = teacher.xpath('./h4/text()').extract_first()
            item['desc'] = teacher.xpath('./p/text()').extract_first()
            yield item

注意:

  • scrapy.Spider爬蟲類中必須有名為parse的決議;
  • 如果網站結構層次比較復雜,也可以自定義其他決議函式;
  • 在決議函式中提取的url地址如果要發送請求,則必須屬于allowed_domains范圍內,但是start_urls中的url地址不受這個限制;
  • 啟動爬蟲的時候注意啟動的位置,是在專案路徑下啟動;
  • parse()函式中使用yield回傳資料,注意:決議函式中的yield能夠傳遞的物件只能是:BaseItem, Request, dict, None,

小知識點1——定位元素以及提取資料、屬性值的方法:
(決議并獲取scrapy爬蟲中的資料: 利用xpath規則字串進行定位和提取)

  • response.xpath方法的回傳結果是一個類似list的型別,其中包含的是selector物件,操作和串列一樣,但是有一些額外的方法;
  • 額外方法extract():回傳一個包含有字串的串列;
  • 額外方法extract_first():回傳串列中的第一個字串,串列為空沒有回傳None,

小知識點2——response回應物件的常用屬性:

  • response.url:當前回應的url地址
  • response.request.url:當前回應對應的請求的url地址
  • response.headers:回應頭
  • response.requests.headers:當前回應的請求頭
  • response.body:回應體,也就是html代碼,byte型別
  • response.status:回應狀態碼

?

🐮5.管道保存資料

在pipelines.py檔案中定義對資料的操作!

  1. 定義一個管道類;
  2. 重寫管道類的process_item方法;
  3. process-item方法處理完item之后必須回傳給引擎,

??初級篇:

在這里插入圖片描述

??進階篇:

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
import json


class UbuntuPipeline(object):

    def __init__(self):
        self.file = open('itcast.json', 'w', encoding='utf-8')

    def process_item(self, item, spider):
        # 將item物件強制轉為字典,該操作只能在scrapy中使用
        item = dict(item)
        # 爬蟲檔案中提取資料的方法每yield一次,就會運行一次
        # 該方法為固定名稱函式
        # 默認使用完管道,需要將資料回傳給引擎
        # 1.將字典資料序列化
        '''ensure_ascii=False 將unicode型別轉化為str型別,默認為True'''
        json_data = json.dumps(item, ensure_ascii=False, indent=2) + ',\n'

        # 2.將資料寫入檔案
        self.file.write(json_data)

        return item

    def __del__(self):
        self.file.close()

?

🐒6.settings.py配置啟用管道:

在settings檔案中,解封代碼,說明如下:

在這里插入圖片描述
?

🐫7.scrapy資料建模與請求:

(通常在做專案的程序中,在items.py中進行資料建模!)

💊(1)為什么建模?

  1. 定義item即提前規劃好哪些欄位需要抓,防止手誤,因為定義好之后,在運行程序中,系統會自動檢查,值不相同會報錯;
  2. 配合注釋一起可以清晰的知道要抓取哪些欄位,沒有定義的欄位不能抓取,在目標欄位少的時候可以使用字典代替;
  3. 使用scrapy的一些特定組件需要Item做支持,如scrapy的ImagesPipeline管道類,

💊(2)本專案中實操:

在items.py檔案中操作:

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class UbuntuItem(scrapy.Item):
    # 講師名字
    name = scrapy.Field()
    # 講師職稱
    title = scrapy.Field()
    # 講師座右銘
    desc = scrapy.Field()

注意:

  1. from …items import UbuntuItem這一行代碼中 注意item的正確匯入路徑,忽略pycharm標記的錯誤;
  2. python中的匯入路徑要訣:從哪里開始運行,就從哪里開始匯入,
    ?

🏃8.設定user-agent:

# settings.py檔案中找到如下代碼解封,并加入UA:
# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36',
}

?

🔮9.到目前為止,一個入門級別的scrapy爬蟲已經OK了,基操都使用了!

如何run呢?

現在cd到專案目錄下,輸入

scrapy crawl itcast

即可運行scrapy!

在這里插入圖片描述?

🐱10.開發流程總結:

  1. 創建專案:
    scrapy startproject 專案名

  2. 明確目標:
    在items.py檔案中進行建模!

  3. 創建爬蟲:

    創建爬蟲:
    ??scrapy genspider 爬蟲名 允許的域名
    完成爬蟲:
    ??修改start_urls; 檢查修改allowed_domains; 撰寫決議方法!

  4. 保存資料:
    在pipelines.py檔案中定義對資料處理的管道
    在settings.py檔案中注冊啟用管道

結語:

??通過上面的學習,你已經可以獨立創建一個scrapy專案并使用此框架進行簡單的爬蟲專案撰寫,但是!任何一種功夫都不是一下就能學好學會學精的!所以下面分享一波scrapy學習路線,只要你跟著潛心學完,那么!恭喜你!你已經是名優秀的scrapy框架使用者了!!!

下面是整套scrapy學習路線,其實就是我開篇說到的那個專欄,想要好好學習的可以去好好看看哦!

  1. 學習爬蟲之Scrapy框架學習(1)—Scrapy框架初學習及豆瓣top250電影資訊獲取的實戰!
  2. 學習爬蟲之Scrapy框架學習(2)—豆瓣top250電影更加詳細的資訊獲取及txt文本存盤外加settings.py組態檔的學習!
  3. 學習爬蟲之Scrapy框架學習(3)—豆瓣top250電影完整版資訊獲取及如何存盤到mysql資料庫;Scrapy shell和Scrapy選擇器;使用到日志的學習!
  4. 學習爬蟲之Scrapy框架學習(4)–CrawlSpider的學習及實戰縱橫小說資訊獲取并儲存mysql;LinkExtractor類和Rule類;Response和Request
  5. 學習爬蟲之Scrapy框架學習(五)–中間件的學習及使用
  6. 學習爬蟲之Scrapy框架學習(六)–1.直接使用scrapy;使用scrapy管道;使用scrapy的媒體管道類進行貓咪圖片存盤,媒體管道類學習,自建媒體管道類存盤圖片
  7. 學習爬蟲之Scrapy框架學習(七)—Scrapy框架里使用分布式爬蟲(Scrapy_redis),分布式實戰豆瓣電影資訊爬取;使用scrapyd實作專案部署
  8. 學習爬蟲之Scrapy框架學習(八)—Scrapy框架里使用分布式爬蟲;分布式實戰縱橫小說爬取+專案完整原始碼!
  9. scrapy-redis分布式總結及升華(基礎知識;原理分析;第三方組件講解;實戰[普通爬蟲改造為分布式爬蟲為例];scrapy_splash組件的使用;日志資訊與配置;scrapyd部署專案)
  10. Scrapy中selenium的應用-----并通過京東圖書書籍資訊爬取專案進行實操!

🔆第三部分——In The End!

請添加圖片描述

從現在做起,堅持下去,一天進步一小點,不久的將來,你會感謝曾經努力的你!

?本博主會持續更新爬蟲基礎分欄及爬蟲實戰分欄,認真仔細看完本文的小伙伴們,可以點贊收藏并評論出你們的讀后感,并可關注本博主,在今后的日子里閱讀更多爬蟲文!

如有錯誤或者言語不恰當的地方可在評論區指出,謝謝!
如轉載此文請聯系我征得本人同意,并標注出處及本博主名,謝謝 !

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/292966.html

標籤:python

上一篇:Python攻防-FTP服務與SSH登錄暴力破解

下一篇:基于javaweb(springboot+mybatis)寵物醫院預約管理系統設計和實作

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more