主頁 > 後端開發 > 不踩坑的Python爬蟲:如何在一個月內學會爬取大規模資料?新手必學

不踩坑的Python爬蟲:如何在一個月內學會爬取大規模資料?新手必學

2020-10-04 08:03:25 後端開發

 

 

Python爬蟲為什么受歡迎

如果你仔細觀察,就不難發現,懂爬蟲、學習爬蟲的人越來越多,一方面,互聯網可以獲取的資料越來越多,另一方面,像 Python這樣的編程語言提供越來越多的優秀工具,讓爬蟲變得簡單、容易上手,

利用爬蟲我們可以獲取大量的價值資料,從而獲得感性認識中不能得到的資訊,
這里要注意:不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新python教程專案,還可以跟老司機交流討教!

比如:

知乎:爬取優質答案,為你篩選出各話題下最優質的內容, 淘寶、京東:抓取商品、評論及銷量資料,對各種商品及用戶的消費場景進行分析, 安居客、鏈家:抓取房產買賣及租售資訊,分析房價變化趨勢、做不同區域的房價分析, 拉勾網、智聯:爬取各類職位資訊,分析各行業人才需求情況及薪資水平, 雪球網:抓取雪球高回報用戶的行為,對股票市場進行分析和預測,

爬蟲是入門Python最好的方式,沒有之一,Python有很多應用的方向,比如后臺開發、web開發、科學計算等等,但爬蟲對于初學者而言更友好,原理簡單,幾行代碼就能實作基本的爬蟲,學習的程序更加平滑,你能體會更大的成就感,

掌味訓本的爬蟲后,你再去學習Python資料分析、web開發甚至機器學習,都會更得心應手,因為這個程序中,Python基本語法、庫的使用,以及如何查找檔案你都非常熟悉了,

對于小白來說,爬蟲可能是一件非常復雜、技術門檻很高的事情,比如有人認為學爬蟲必須精通 Python,然后哼哧哼哧系統學習 Python 的每個知識點,很久之后發現仍然爬不了資料;有的人則認為先要掌握網頁的知識,遂開始 HTML\CSS,結果入了前端的坑,瘁……

但掌握正確的方法,在短時間內做到能夠爬取主流網站的資料,其實非常容易實作,但建議你從一開始就要有一個具體的目標,

在目標的驅動下,你的學習才會更加精準和高效,那些所有你認為必須的前置知識,都是可以在完成目標的程序中學到的,這里給你一條平滑的、零基礎快速入門的學習路徑,

1.學習 Python 包并實作基本的爬蟲程序 2.了解非結構化資料的存盤 3.學習scrapy,搭建工程化爬蟲 4.學習資料庫知識,應對大規模資料存盤與提取 5.掌握各種技巧,應對特殊網站的反爬措施 6.分布式爬蟲,實作大規模并發采集,提升效率

- ? -

學習 Python 包并實作基本的爬蟲程序

大部分爬蟲都是按“發送請求——獲得頁面——決議頁面——抽取并儲存內容”這樣的流程來進行,這其實也是模擬了我們使用瀏覽器獲取網頁資訊的程序,

Python中爬蟲相關的包很多:urllib、requests、bs4、scrapy、pyspider 等,建議從requests+Xpath 開始,requests 負責連接網站,回傳網頁,Xpath 用于決議網頁,便于抽取資料,

如果你用過 BeautifulSoup,會發現 Xpath 要省事不少,一層一層檢查元素代碼的作業,全都省略了,這樣下來基本套路都差不多,一般的靜態網站根本不在話下,豆瓣、糗事百科、騰訊新聞等基本上都可以上手了

當然如果你需要爬取異步加載的網站,可以學習瀏覽器抓包分析真實請求或者學習Selenium來實作自動化,這樣,知乎、時光網、貓途鷹這些動態的網站也可以迎刃而解

- ? -

了解非結構化資料的存盤

爬回來的資料可以直接用檔案形式存在本地,也可以存入資料庫中,

開始資料量不大的時候,你可以直接通過 Python 的語法或 pandas 的方法將資料存為csv這樣的檔案

當然你可能發現爬回來的資料并不是干凈的,可能會有缺失、錯誤等等,你還需要對資料進行清洗,可以學習 pandas 包的基本用法來做資料的預處理,得到更干凈的資料,

- ? -

學習 scrapy,搭建工程化的爬蟲

掌握前面的技術一般量級的資料和代碼基本沒有問題了,但是在遇到非常復雜的情況,可能仍然會力不從心,這個時候,強大的 scrapy 框架就非常有用了,

scrapy 是一個功能非常強大的爬蟲框架,它不僅能便捷地構建request,還有強大的 selector 能夠方便地決議 response,然而它最讓人驚喜的還是它超高的性能,讓你可以將爬蟲工程化、模塊化,

學會 scrapy,你可以自己去搭建一些爬蟲框架,你就基本具備爬蟲工程師的思維了,

- ? -

學習資料庫基礎,應對大規模資料存盤

爬回來的資料量小的時候,你可以用檔案的形式來存盤,一旦資料量大了,這就有點行不通了,所以掌握一種資料庫是必須的,學習目前比較主流的 MongoDB 就OK,

MongoDB 可以方便你去存盤一些非結構化的資料,比如各種評論的文本,圖片的鏈接等等,你也可以利用PyMongo,更方便地在Python中操作MongoDB,

因為這里要用到的資料庫知識其實非常簡單,主要是資料如何入庫、如何進行提取,在需要的時候再學習就行,

- ? -

掌握各種技巧,應對特殊網站的反爬措施

當然,爬蟲程序中也會經歷一些絕望啊,比如被網站封IP、比如各種奇怪的驗證碼、userAgent訪問限制、各種動態加載等等,

遇到這些反爬蟲的手段,當然還需要一些高級的技巧來應對,常規的比如訪問頻率控制、使用代理IP池、抓包、驗證碼的OCR處理等等

往往網站在高效開發和反爬蟲之間會偏向前者,這也為爬蟲提供了空間,掌握這些應對反爬蟲的技巧,絕大部分的網站已經難不到你了

- ? -

分布式爬蟲,實作大規模并發采集

爬取基本資料已經不是問題了,你的瓶頸會集中到爬取海量資料的效率,這個時候,相信你會很自然地接觸到一個很厲害的名字:分布式爬蟲

分布式這個東西,聽起來很恐怖,但其實就是利用多執行緒的原理讓多個爬蟲同時作業,需要你掌握 Scrapy + MongoDB + Redis 這三種工具

Scrapy 前面我們說過了,用于做基本的頁面爬取,MongoDB 用于存盤爬取的資料,Redis 則用來存盤要爬取的網頁佇列,也就是任務佇列,

所以有些東西看起來很嚇人,但其實分解開來,也不過如此,當你能夠寫分布式的爬蟲的時候,那么你可以去嘗試打造一些基本的爬蟲架構了,實作一些更加自動化的資料獲取,

你看,這一條學習路徑下來,你已然可以成為老司機了,非常的順暢,所以在一開始的時候,盡量不要系統地去啃一些東西,找一個實際的專案(開始可以從豆瓣、小豬這種簡單的入手),直接開始就好

因為爬蟲這種技術,既不需要你系統地精通一門語言,也不需要多么高深的資料庫技術,高效的姿勢就是從實際的專案中去學習這些零散的知識點,你能保證每次學到的都是最需要的那部分,

當然唯一麻煩的是,在具體的問題中,如何找到具體需要的那部分學習資源、如何篩選和甄別,是很多初學者面臨的一個大問題,

不過不用擔心,我們準備了一門非常系統的爬蟲課程,除了為你提供一條清晰的學習路徑,我們甄選了最實用的學習資源以及龐大的主流爬蟲案例庫,短時間的學習,你就能夠很好地掌握爬蟲這個技能,獲取你想得到的資料,

經過短時間的學習,不少同學都取得了從0到1的進步,能夠寫出自己的爬蟲,爬取大規模資料,下面是幾位同學的作業合集分享

爬LOL英雄皮膚高清圖片

@沉默小熊貓

爬取了當前比較火的游戲壁紙,MOBA游戲《英雄聯盟》,手游《王者榮耀》、《陰陽師》,FPS游戲《絕地求生》,其中《英雄聯盟》的壁紙最難爬取,這里展示爬取《英雄聯盟》全部英雄壁紙的程序,

先看一下最終爬取的效果,每個英雄的壁紙都被爬取下來了:

139個英雄壁紙檔案夾

“黑暗之女 安妮”的12張壁紙:

小紅帽 安妮 高清大圖

1.爬蟲流程圖

至此對我要爬取的物件已經有了一定的了解,對于具體爬取方法也有了想法,可以設計如下爬蟲流程圖:

2.設計代碼整體框架

根據爬蟲流程圖,我設計了如下代碼框架:

這個代碼框架非常容易讀懂,主要就是run()函式,run()函式完成了這樣一套作業:創建LOL檔案夾——獲得鍵盤輸入的資訊——若資訊為“All”則爬取全部英雄壁紙,否則爬取單個英雄壁紙,

3.爬取所有英雄資訊

首先我們要決議champion.js檔案,得到英雄英文名與id的一一對應關系,

對于官網網站上的所有英雄資訊頁面,由于是用 JavaScript 加載出來的,普通方法并不好爬取,我使用了 Selenium+PhantomJS 的方法來動態加載英雄資訊,

決議的英雄資訊

4.爬取英雄壁紙

得到每一個英雄的資訊后,我們就可以開始愉快的爬取它們的壁紙啦~定義get_image(heroid,heroframe) 函式,用于爬取單個英雄的全部壁紙,

運行代碼時注意保持網路暢通,如果網速太慢可能會爬取失敗,在3兆有線網的網速下爬取全部139個英雄的全部高清壁紙(約一千張圖)大概要3-4分鐘,

《王者榮耀》、《陰陽師》、《絕地求生》等其他游戲的壁紙也是同樣道理就可以爬取了,據我實踐,《英雄聯盟》的爬取難度是最高的,因此將上述程序弄懂了,自己再撰寫代碼爬其他游戲就易如反掌了,

卡片里面內容可以滑動

美團網餐飲商家的資訊爬取

@Chenchen

本次對【常州美食】全部美食推薦 進行一次爬蟲實踐,主要想爬取的資訊有:餐廳的名稱、餐廳的評分、餐廳評論數、餐廳的地址、人均消費價格……

最終爬下來的資料保存為CSV如下:

美團使用了反爬蟲機制,要模擬瀏覽器來進行爬取,經過幾次嘗試,發現只對 Cookie 和 User-Agent 進行校驗,

爬到第一組資料

爬到第一組資料之后,接著就是想翻頁的事情,翻頁特別簡單,于是又爬取了商家電話、營業時間等資訊,

打包寫個函式

成功地爬到了相應的資訊

但好景不長,爬到一半的時候被403了,

因為被封了,我們只能用無痕方式來訪問了?,看了下,決定采用多個 Cookie 然后隨機呼叫的方式來避免被封了,最終使用了17個cookie,經過測驗,可以高速爬取不被封,

這次的爬取在這里結束了,但是爬回來的資料可以做很多分析,比如在不同的地段外賣的情況,商家的分布等等,

爬當當網各分類所有五星圖書

@ZhuNewNew

這次作業選擇爬取的網站是當當網,當當有比較多的圖書資料,特別是五星圖書,包含了各個領域最受歡迎的圖書資訊,對于尋找有價值的圖書、分析好書的銷售情況具有一定的價值,

最終爬取的資料如下,總共10000+行資料:

我想爬取的資料是各分類(小說、中小學教輔、文學、成功/勵志……)下面的五星圖書資訊(書名、評論數、作者、出版社、出版時間、五星評分次數、價格、電子書價格等等),

為了抓各分類下的圖書資訊,首先看看點擊各分類的時候,鏈接是否發生變化,經過測驗,在不同的分類,鏈接都是不一樣的,事實證明不是JS加載,

列印之后正常回傳資料

到這里基本可以知道,當當網的反爬確實不嚴格,我甚至還沒有設定Headers的資訊,竟然也可以爬取到想要的資料,但最后在完整的代碼中,還是把headers加上了,保險起見吧,

接下來就是分別爬取每個分類下的圖書資訊,以“小說”為例,其實翻頁特別簡單,給幾個比較如下:

翻頁也非常簡單,只不過有一點點坑的是,爬回來的鏈接在代碼中,需要對其翻頁,就需要把鏈接構造出來,對回傳來的鏈接進行分析,發現僅僅是中間有四個數字不一樣,于是我把這幾個資料取出來,在連接中傳進去,這樣可以構造通用的鏈接,

構造的翻頁鏈接

接下來就是去抓取不同頁面的資訊,沒有異步加載,所以直接用xpath定位就OK,當然中間有一些小地方需要注意的是,每本書所包含的資訊是不一樣的,所以用xpath去獲取的時候不一定能獲取到,就會出錯,于是用到try……except陳述句,

最后總共爬到10000多行資料,對應不同領域的10000多本高評分的書籍,當然會有一些重復計算,比如小說和文學,就有不少書是同時在這兩個類目的,

當當網本身沒有什么反爬機制,所以爬取也比較順利,唯一的小麻煩就是抓回來的鏈接繼續翻頁和其中一些書籍中部分資訊缺失的處理,

爬拉勾網職位資訊

@楠生

本來就想從事“資料分析師”這個崗位,所以就想了解這個崗位的薪資、要求、以及在我所生活城市的主要分布點,而拉勾網是權威的互聯網行業招聘平臺,所以爬取拉勾網上的“資料分析師”職位資訊有很好的代表性,

最終爬到的資料存在MongoDB中如下:

學習翻頁的時候把引號添上運行時報了JSONDecodeError的錯,本人被引號折騰了許久,分享出來希望大家引以為戒,

踩了兩個坑之后,就開始做課后作業了,沒想到對于一個新手來說困難一茬茬,開始我的思路是找連接,但是采集的資料里沒有連接,所以就點擊進入詳情頁面,看有什么規律沒?然后就嘗試著多次點擊各詳情頁面,發現頁面的數字和采集的某個資料能匹配,例如:

某個詳情頁面

找到突破口就開始行動:

DOC

request url\request method

多次嘗試(還是費了一些時間):request url和網址是一樣的,那突破口就算找到,資料是DOC格式,request method :get,那就是又回到了熟悉的戰場了,

思路:遍歷positionId,用format,如:

詳情網頁

xpath方法獲取資料

部分資料:

一次次嘗試,優化后的代碼,這個主要是學習和創作的程序(爬取詳情頁面是我的杰作),

- 高效的學習路徑 -

一上來就講理論、語法、編程語言是非常不合理的,我們會直接從具體的案例入手,通過實際的操作,學習具體的知識點,我們為你規劃了一條系統的學習路徑,讓你不再面對零散的知識點,

說點具體的,比如我們會直接用 lxml+Xpath取代 BeautifulSoup 來進行網頁決議,減少你不必要的檢查網頁元素的操作,多種工具都能完成的,我們會給你最簡單的方法,這些看似細節,但可能是很多人都會踩的坑,

《Python爬蟲:入門+進階》大綱

第一章:Python 爬蟲入門

1、什么是爬蟲

網址構成和翻頁機制

網頁原始碼結構及網頁請求程序

爬蟲的應用及基本原理

2、初識Python爬蟲

Python爬蟲環境搭建

創建第一個爬蟲:爬取百度首頁

爬蟲三步驟:獲取資料、決議資料、保存資料

3、使用Requests爬取豆瓣短評

Requests的安裝和基本用法

用Requests 爬取豆瓣短評資訊

一定要知道的爬蟲協議

4、使用Xpath決議豆瓣短評

決議神器Xpath的安裝及介紹

Xpath的使用:瀏覽器復制和手寫

實戰:用 Xpath 決議豆瓣短評資訊

5、使用pandas保存豆瓣短評資料

pandas 的基本用法介紹

pandas檔案保存、資料處理

實戰:使用pandas保存豆瓣短評資料

6、瀏覽器抓包及headers設定(案例一:爬取知乎)

爬蟲的一般思路:抓取、決議、存盤

瀏覽器抓包獲取Ajax加載的資料

設定headers 突破反爬蟲限制

實戰:爬取知乎用戶資料

7、資料入庫之MongoDB(案例二:爬取拉勾)

MongoDB及RoboMongo的安裝和使用

設定等待時間和修改資訊頭

實戰:爬取拉勾職位資料

將資料存盤在MongoDB中

補充實戰:爬取微博移動端資料

8、Selenium爬取動態網頁(案例三:爬取淘寶)

動態網頁爬取神器Selenium搭建與使用

分析淘寶商品頁面動態資訊

實戰:用Selenium 爬取淘寶網頁資訊

第二章:Python爬蟲之Scrapy框架

1、爬蟲工程化及Scrapy框架初窺

html、css、js、資料庫、http協議、前后臺聯動

爬蟲進階的作業流程

Scrapy組件:引擎、調度器、下載中間件、專案管道等

常用的爬蟲工具:各種資料庫、抓包工具等

2、Scrapy安裝及基本使用

Scrapy安裝

Scrapy的基本方法和屬性

開始第一個Scrapy專案

3、Scrapy選擇器的用法

常用選擇器:css、xpath、re、pyquery

css的使用方法

xpath的使用方法

re的使用方法

pyquery的使用方法

4、Scrapy的專案管道

Item Pipeline的介紹和作用

Item Pipeline的主要函式

實戰舉例:將資料寫入檔案

實戰舉例:在管道里過濾資料

5、Scrapy的中間件

下載中間件和蜘蛛中間件

下載中間件的三大函式

系統默認提供的中間件

6、Scrapy的Request和Response詳解

Request物件基礎引數和高級引數

Request物件方法

Response物件引數和方法

Response物件方法的綜合利用詳解

第三章:Python爬蟲進階操作

1、網路進階之谷歌瀏覽器抓包分析

http請求詳細分析

網路面板結構

過濾請求的關鍵字方法

復制、保存和清除網路資訊

查看資源發起者和依賴關系

2、資料入庫之去重與資料庫

資料去重

資料入庫MongoDB

第四章:分布式爬蟲及實訓專案

1、大規模并發采集——分布式爬蟲的撰寫

分布式爬蟲介紹

Scrapy分布式爬取原理

Scrapy-Redis的使用

Scrapy分布式部署詳解

2、實訓專案(一)——58同城二手房監控

3、實訓專案(二)——去哪兒網模擬登陸

4、實訓專案(三)——京東商品資料抓取

- 每課都有學習資料 -

你可能收集了以G計的的學習資源,但保存后從來沒打開過?我們已經幫你找到了最有用的那部分,并且用最簡單的形式描述出來,幫助你學習,你可以把更多的時間用于練習和實踐,

考慮到各種各樣的問題,我們在每一節都準備了課后資料,包含四個部分:

1.課程重點筆記,詳細闡述重點知識,幫助你理解和后續快速復習;

2.默認你是小白,補充所有基礎知識,哪怕是軟體的安裝與基本操作;

3.課內外案例提供參考代碼學習,讓你輕松應對主流網站爬蟲;

4.超多延伸知識點和更多問題的解決思路,讓你有能力去解決實際中遇到的一些特殊問題,

某節部分課后資料

- 超多案例,覆寫主流網站 -

課程中提供了目前最常見的網站爬蟲案例:豆瓣、百度、知乎、淘寶、京東、微博……每個案例在課程視頻中都有詳細分析,老師帶你完成每一步操作

另外,我們還會補充比如小豬、鏈家、58同城、網易云音樂、微信好友等案例,提供思路與代碼,

多次的模仿和練習之后,你可以很輕松地寫出自己的爬蟲代碼,并能夠輕松爬取這些主流網站的資料,

- 技能拓展:反爬蟲及資料存盤、處理 -

懂得基本的爬蟲是遠遠不夠的,所以我們會用實際的案例,帶你了解一些網站的反爬蟲措施,并且用具體的技術繞過限制,比如異步加載、IP限制、headers限制、驗證碼等等,這些比較常見的反爬蟲手段,你都可以很好地規避,

工程化的爬蟲、及分布式爬蟲技術,讓你有獲取大規模資料的可能,除了爬蟲的內容,你還將了解資料庫(Mongodb)、pandas 的基本知識,幫你存盤爬取的資料,同時可以對資料進行管理和清洗,你可以獲得更干凈的資料,以便后續的分析和處理,

用 Scrapy 爬取租房資訊

爬取拉勾招聘資料并用 MongoDB 存盤  最后注意不管你是為了Python就業還是興趣愛好,記住:專案開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,里面很多新python教程專案,還可以跟老司機交流討教!

本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,

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

標籤:Python

上一篇:第一章 編程語言及計算機介紹

下一篇:第二章 python入門介紹

標籤雲
其他(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