




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七單元用Python讓生活更美好
作為“膠水語(yǔ)言''的Python以簡(jiǎn)單易學(xué)、免費(fèi)開源、可移植性強(qiáng)等特點(diǎn)成為
了人類工作和生活中的好幫手,并在Web開發(fā)、大數(shù)據(jù)開發(fā)、人工智能開發(fā)和
嵌入式開發(fā)等領(lǐng)域均有廣泛的使用。由于Python語(yǔ)言自身的語(yǔ)法結(jié)構(gòu)比較簡(jiǎn)單
易學(xué),而且有豐富的開發(fā)庫(kù)支撐,所以未來(lái)Python的應(yīng)用前景還是非常廣闊的,
接下來(lái)我們就認(rèn)識(shí)下Python語(yǔ)言在數(shù)據(jù)爬取、數(shù)據(jù)可視化、人工智能等方面的
應(yīng)用吧。
通過(guò)本章的學(xué)習(xí),你將掌握以下技能:
*爬取網(wǎng)絡(luò)數(shù)據(jù)
*制作二維碼名片
*創(chuàng)作Python彈球游戲
*考試成績(jī)可視化
*識(shí)別圖片中的數(shù)字
*用microbit識(shí)別姿勢(shì)
微項(xiàng)目1網(wǎng)絡(luò)爬蟲爬數(shù)據(jù)
隨著信息化社會(huì)的到來(lái),萬(wàn)維網(wǎng)已經(jīng)堆積了大量信息,這就需要我們尋找一
種方式來(lái)幫助我們過(guò)濾掉無(wú)用的信息,并且篩選更多有用的信息作為反饋,于是
網(wǎng)絡(luò)爬蟲技術(shù)應(yīng)運(yùn)而生。在日常生活中,同學(xué)們可能聽說(shuō)過(guò)網(wǎng)絡(luò)爬蟲這個(gè)詞,但
到底什么是爬蟲,如何利用網(wǎng)絡(luò)爬蟲爬取自己需要的數(shù)據(jù)呢?
通過(guò)本節(jié)的學(xué)習(xí),你將掌握以下技能:
*了解網(wǎng)絡(luò)爬蟲的工作過(guò)程
*編寫程序爬取B站彈幕
專題一:初識(shí)爬蟲
在編寫爬蟲程序之前,我們需要先了解下網(wǎng)絡(luò)爬蟲的概念、爬蟲的基本過(guò)程
和爬蟲的基本架構(gòu)。
1.1什么是爬蟲
網(wǎng)絡(luò)爬蟲,也叫網(wǎng)絡(luò)蜘蛛,它是一段自動(dòng)訪問(wèn)互聯(lián)網(wǎng)并從中提取數(shù)據(jù)的程序。
我們?yōu)g覽的每一個(gè)網(wǎng)頁(yè)都對(duì)應(yīng)著唯一的網(wǎng)頁(yè)地址,即URL,而一個(gè)網(wǎng)頁(yè)中又包
含著指向其他網(wǎng)頁(yè)的URL,這種URL相互指向的關(guān)系就形成了互聯(lián)網(wǎng)。為了從
互聯(lián)網(wǎng)中獲取需要的信息,以前我們需要人工打開網(wǎng)頁(yè)進(jìn)行檢索,但是有了爬蟲
后,我們就可以借助網(wǎng)絡(luò)爬蟲自動(dòng)獲取網(wǎng)絡(luò)上的信息并從中提取有價(jià)值的數(shù)據(jù)。
網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù),大致可以分為以下幾種類型:通用網(wǎng)絡(luò)爬蟲、
URL是統(tǒng)一資源定位符(UniformResourceLocator)的英文縮寫,也就是我
們常說(shuō)的網(wǎng)址,比如大家熟悉的百度搜索地址/就是一個(gè)
URL。互聯(lián)網(wǎng)上的每一個(gè)URL都是唯一的,URL指出了資源的具體位置以及瀏
覽器如何處理這些資源。
在大數(shù)據(jù)時(shí)代,信息的采集是一項(xiàng)重要的工作,因此我們可以使用網(wǎng)絡(luò)爬蟲
對(duì)數(shù)據(jù)信息進(jìn)行自動(dòng)采集并合理處理這些信息以方便我們的工作和生活,比如我
們可以爬取熱門新聞形成一個(gè)新聞聚合閱讀器、爬取好笑的故事制作一款爆笑故
事APP、爬取不同網(wǎng)站的圖書價(jià)格做對(duì)比等等。大數(shù)據(jù)時(shí)代離不開爬蟲,在未來(lái),
爬蟲的地位會(huì)越來(lái)越重要。
1.2爬蟲的基本過(guò)程
爬蟲的基本過(guò)程分為4個(gè)步驟,即向服務(wù)器發(fā)起請(qǐng)求、獲取響應(yīng)內(nèi)容、解析
內(nèi)容和保存數(shù)據(jù)。
1、向服務(wù)器發(fā)起請(qǐng)求。服務(wù)器是提供數(shù)據(jù)的設(shè)備,而發(fā)起數(shù)據(jù)請(qǐng)求的設(shè)備
叫做客戶端。在客戶端獲取服務(wù)資源前需要先和服務(wù)器建立連接。當(dāng)我們?cè)诘刂?/p>
欄輸入網(wǎng)址按下回車鍵后即向服務(wù)器發(fā)起了請(qǐng)求,如輸入后瀏
覽器會(huì)先將該URL解析成IP地址9,然后通過(guò)TCP三次握手與百
度服務(wù)器建立連接,并發(fā)起HTTP請(qǐng)求,即Request;
2、獲取響應(yīng)內(nèi)容。服務(wù)器在接收到客戶端發(fā)送來(lái)的Request后,會(huì)根據(jù)客
戶端的請(qǐng)求找到客戶端需要的資源文件,然后打包發(fā)送給客戶端,即Response;
3、解析內(nèi)容??蛻舳双@取到服務(wù)器發(fā)來(lái)的數(shù)據(jù)后,開始解析內(nèi)容,解析的
數(shù)據(jù)可以是圖片、視頻、html數(shù)據(jù)、json數(shù)據(jù)等;
4、保存數(shù)據(jù)。將解析的數(shù)據(jù)以文本或數(shù)據(jù)庫(kù)的形式存儲(chǔ)下來(lái)。
由此我們可以得出一個(gè)簡(jiǎn)單爬蟲架構(gòu):
其中,爬蟲調(diào)度端主要是負(fù)責(zé)爬蟲的啟動(dòng)、停止以及監(jiān)視爬蟲的調(diào)度情況;
在爬蟲程序中,URL管理器主要負(fù)責(zé)管理未爬取的URL集合和已爬取的URL
集合,防止重復(fù)或循環(huán)爬??;網(wǎng)頁(yè)下載器是指將互聯(lián)網(wǎng)上URL對(duì)應(yīng)的網(wǎng)頁(yè)下載
到本地的工具,在Python中常用的網(wǎng)頁(yè)下載器有Python官方基礎(chǔ)模塊urllib2和
第三方庫(kù)requests;網(wǎng)頁(yè)解析器是從網(wǎng)頁(yè)中提取有價(jià)值數(shù)據(jù)的工具,主要有re正
則匹配、Python自帶的html.parser模塊、第三方庫(kù)BeautifulSoup、xpath^Ixm
庫(kù)等;網(wǎng)頁(yè)解析器將有價(jià)值的數(shù)據(jù)輸出形成價(jià)值數(shù)據(jù)。
爬蟲程序在執(zhí)行時(shí),首先從URL管理器中獲取一個(gè)待爬取的URL,然后該
URL傳送給網(wǎng)頁(yè)下載器,網(wǎng)頁(yè)下載器將URL指定的網(wǎng)頁(yè)下載下來(lái)并存儲(chǔ)成一個(gè)
字符串,然后傳送給網(wǎng)頁(yè)解析器解析,網(wǎng)頁(yè)解析器一方面將字符串里包含的新的
URL傳送給URL管理器,另一方面字符串里的有價(jià)值的信息形成價(jià)值數(shù)據(jù)并輸
出保存。
專題二:爬取B站彈幕
接下來(lái)我們爬取一個(gè)URL中的數(shù)據(jù)。為了爬取B站的彈幕,我們采用的網(wǎng)
頁(yè)下載器為Requests庫(kù)、網(wǎng)頁(yè)解析器為BeautifulSoup庫(kù),BeautifulSoup庫(kù)能夠
幫助我們?cè)诓挥镁帉懻齽t表達(dá)式情況下也可以方便的實(shí)現(xiàn)網(wǎng)頁(yè)信息提取。在使用
之前,我們需要先安裝Requests庫(kù)和BeautifulSoup庫(kù)。
2.1安裝第三方庫(kù)
點(diǎn)擊離線版海龜編輯器菜單欄中的庫(kù)管理,在彈出的庫(kù)管理界面選擇爬蟲,
然后分別點(diǎn)擊Requests庫(kù)和BeautifulSoup庫(kù)后的安裝即可。
未登錄-?文件-。設(shè)置-6硬件-量管理|O運(yùn)行力發(fā)布“■
新的作品
庫(kù)管理QQx
念宦用住
官方Requests
Rcque土庫(kù)可以用來(lái)發(fā)送請(qǐng)求,處理響應(yīng)結(jié)果?學(xué)會(huì)Requests庫(kù),我們糧輕
布豉
易調(diào)用網(wǎng)絡(luò)邛接口,實(shí)現(xiàn)肥生、物法、智能機(jī)器人等谷種有趣的效果。
□
BeautifulSoup
數(shù)據(jù)處理BeamifolSoup是一個(gè)可以從網(wǎng)站抓取數(shù)據(jù)并解析的Python庫(kù)。學(xué)會(huì)
Beam向1Soup庫(kù),我們可以用更簡(jiǎn)潔、高效的方式編寫爬蟲程序。
圖表
2.1編寫爬蟲程序
第一步:導(dǎo)入Requests庫(kù)和BeautifulSoup庫(kù)。
1#爬取B站彈幕數(shù)據(jù)
2importrequests
3frombs4importBeautifulSoup
在導(dǎo)入庫(kù)的時(shí)候,注意requests的大小寫,在導(dǎo)入BeautifulSoup庫(kù)時(shí),不能
直接寫成importBeautifulSoup,這是因?yàn)锽eautifulSoup已經(jīng)被移植到BS4模塊
中了,所以我們?cè)趯?dǎo)入BeautifulSoup庫(kù)時(shí)還需要導(dǎo)入bs4,即frombs4import
BeautifulSoupo
第二步:找到彈幕的URL地址,這是爬蟲的關(guān)鍵步驟。打開B站的視頻連
接,如科技類作品/video/BVlQA41147gJ,然后按下F12
鍵,打開開發(fā)者工具欄,選中功能模塊Network下的XHR標(biāo)簽并按下F5鍵刷
新頁(yè)面(如圖一),在刷新出的資源信息中找到list.so?oid=189825423(如圖二)
并雙擊,彈出的窗口中可以看到視頻中所有彈幕的內(nèi)容(如圖三),這就是我們
要找的彈幕信息了。在這一步中,我們需要保存的是oid后面的編號(hào)189825423,
B站每一個(gè)視頻的彈幕都有著唯一的編號(hào)。注意圖二中的RequestsURL地址并
不是彈幕的實(shí)際地址,B站彈幕的實(shí)際地址為/oid.xml,
在這里將oid替換為189825423,即/I89825423.xml0
這就是我們需要爬取的URL。
G(5JElementsConsoleSourcesINetworkIPerformance?:X
圖一
NamexHeadersPreviewResponseTiming
|ni89825423-l-30280.m4s?expi▲
▼General
□189825423-l-30280.m4s?expi
RequestURL:https://api.bilibili.com/x/vl/dm/li
|J189825423-l-30280.m4s?expi
o?oid=189825423
□189825423-l-30032.m4s?expi
RequestMethod:GET
Ireport?cross_domain=true
StatusCode:-200
||report?cross_domain=tnje
□189825423-l-30280.m4s?expiRemoteAddress:35:443
pagelist?bvid=BVlQA41147gJReferrerPolicy:no-referrer-when-downgrade
□web?00111115894364589881.▼ResponseHeaders
rIdata?r=loader&cid=18982542
access-control-allow-credentials:true
HIplayer.so?id=cid%3A1898254i
access-control-allow-headers:Origin,No-Cache,X-Req
[Iservers?platform=web
d-WithjI-F-Modified-Since,Pragma^Last-Modified^C.
□web?00111115894364591631.
Control,Expires,Content-Type,Access-Control-Allil
ILQlists。?6d=189825423"I
edentials,DNT,X-CustomHeaderJKeep-Alive,User-Agi
wph?nni1111SR(U^fi4SQ4Hni
圖二
<d產(chǎn):一21114第叩,1,2616777211b,U,bet1IdU,義%】】22叩39網(wǎng)/「〉外長(zhǎng)刖用苜密人非鬲?jiǎng)┲е岭奦d>
<d戶"534.19900,1,2&16777215,1589254210,0,1535477,32564594622332933"》薪分作文。</d>
<dp="l&01900,1,25,16777215,1589254370,0,dff0b24,325例67867618509T〉汶川親歷,四川成都,永恒銘記。原一切都好</d>
<dp="212.64000,l,2&16TH215,1589254917,0,€8956388,3250%5576015875“》王益!</d>
<d尸’6&87400,1,25,16777215,1589255031,0,18f73e5b,3256502533645926T》理念溫爺爺</d〉
<d產(chǎn)"9865100,1,25,16777215,1589255077,0,18f73e5b,32565O4M39551495D溫胡+年明〈/d〉
<d尸"21429900,1,25,151388%,1589255329,0,d9da8eb0,32565181711122439")王外長(zhǎng)國(guó)士<7d>
<d尸"2.69000,1,25,16777215,1589255673,0,3b85435d,32565361871159299D說(shuō)實(shí)話,中國(guó)不需要向世界展示什么,如果是弱自信的話。d>
<d26000,1,25,16777215,1589255688,0,68443ab3,3256536958448M19'》點(diǎn)火!!</d>
<d09800,1,25,16TH215,1589256127,0,adb5de%,32565600108150791"》篇分作文?d>
<d尸"3.34300,1,2316777215,1589256519,Q,7c373fe8,325658O5656309765D我都見證了!</d>
<d71200,1,18,16X7215,1589256991,0,6aMi326,32566062977115141")迸來(lái)的朋友記得三連,讓更多人看到Gd>
<dp=<160.66000,1,25,16777215,1589257007,0,853d094b,32566061188513799"》為什么我的限里常含淚水,因?yàn)槲覠釔圻@片土地</d>
<d100.37900,1,25,16777215,1589257085,0,2790e3ef,32566K)2046277636"胡爺爺好</d>
<dp="8546500,1,25,16777215,1589251726,0,443396f,32566438400098307A>1^^0</d>
<d尸"75.92600,1,25,16777215,1589258512,0,39abac26,32566850475261957')盜號(hào)書</d>
<dF*462.79800,1,25,16777215,1589259859,0,a67367d9,32567556810211331"〉漪分</d>
<dp=N46.89400,1,2覆16TH215,1689261160,0,40bc2041,32568238572830723”》罰分作文!U!!!!!!!!Gd>
<du=<102.30600.1.25.16777215.1589262417.0.678d74ab.32568897565097989”)胡居翁承造空</d>
圖三
第三步:創(chuàng)建requests對(duì)象抓取URL中的信息,并打印。查看步驟2中的
圖二可以發(fā)現(xiàn),彈幕數(shù)據(jù)的請(qǐng)求方式為GET方式,因此程序中借助requests的
get函數(shù)對(duì)彈幕地址/189825423.xml發(fā)起數(shù)據(jù)請(qǐng)求。
5webpage=requests.get('/189825423.xml')
6webpage.encoding=*utf-8'
7print(webpage.text)
程序中,為防止抓取到的彈幕出現(xiàn)亂碼,我們將獲取到的數(shù)據(jù)webpage的編
碼格式設(shè)置為“UTF-8",隨后將數(shù)據(jù)打印出來(lái),為什么不直接打印webpage而是
webpage.text呢?這是因?yàn)槿绻苯哟蛴ebpage的話會(huì)在控制臺(tái)輸出
<Response[200]>請(qǐng)求成功的狀態(tài)碼,而打印webpage.text時(shí)才能將返回?cái)?shù)據(jù)中
的網(wǎng)頁(yè)數(shù)據(jù)輸出出來(lái)。
<?xadv?rsion="l.0"encoding="UTF-8"?xixchatserver>chat.bilibili.cott</chats?rverXchatid>189825423</chatidXini8sion>0</nu.s8ionXmaxli
rceXdp="497.29500,5,25,16776960,1589206985,0,f002f24S,3253983538367€931->^.>^!!</d><dp="50S.52800,1,25,15138834,15B9237022,0,bcGac
n-210.46900,l,25,16777215,15B9247586,0,beflldO,32561122003910661->外長(zhǎng)的聲音給人非常的安全^</dxdp?-534.19900,1,25,16777215,158925421
1389234370,0,d££0b24,32564678676185093f汶川親歷,四川成都,永遠(yuǎn)格記。也一切都好v/dxdp="212.64000,1,25,1€777215,1589254917,0,£8956380
"68.87400,1,25,16777215,1589255031,0,18f73e5b,32565025336459267->想念溫爺爺</d><dp="98.65100,1,25,16777215,1589255077,0,18f73e5b,32565
8.b0,32565181711122439”〉王外長(zhǎng)國(guó)士</dxdp?-2.69000,1,25,16777215,1589255673,0,3b85435d.32565361871159299”猊實(shí)話,中IS不需要問(wèn)世界展示
.26000,1,25,16777215,1589235688,0,60443ab3,32S63369S84484419->點(diǎn)火??!v/dxdp="S37.09800,1,25,16777215,1589256127,0,adb5de94,325656001
65805656309765-〉找都見證/!</d><dp="3.71200.1,18,16777215.1589256991,0,6aa41326,32566052977115141”進(jìn)來(lái)的朋友記得三連,讓更多人U到</
9257007,0,853d094b,32566061288513799->為什么我的眼里常含淚水,因?yàn)槲要?dú)愛這片土地</dxdp?"100.37900,1,25,16777215,1589257085,0,2790e3ef
43396f,32566438400090307->溫冷笥0</dXdp="7,.92600,1,25,16777215,1S89238512,0,39abac26,32566850”526巨57->溫冷爺v/dxdp="531.18000,1,
第四步:創(chuàng)建BeautifulSoup對(duì)象,獲取價(jià)值數(shù)據(jù)。因?yàn)閺椖坏奈募4娓?/p>
式為.xml,而BeautifulSoup可以高效的解析xml文件,所以網(wǎng)站解析器我們才
選擇用BeautifulSoup。在步驟三中可以看到獲取的數(shù)據(jù)中有許多我們不需要的信
息,因此需要對(duì)抓取到的網(wǎng)頁(yè)數(shù)據(jù)進(jìn)行清洗。
7danmu=BeautifulSoup(webpage.text,'html.parser')
8danmu=danmu.find_all('d')
9print(danmu)
控制臺(tái)
[<dp="497.29500,5,25,16776960,1589206985,0,f002£245,32539835383676931?>點(diǎn)火!!</d>,<dp="506.528C
beflldO,32561122003910661”>外長(zhǎng)的聲音給人非常的安全邀</d>,<dp="534.19900,1,25,16777215,1589254210,
7215,1589254370,0,df£0b24,32564678676185093->汶jl|親歷,四川成都,永遠(yuǎn)銘記。原一切都好</d>,<dp="212
031,0,18f73e5b,32565025336459267”〉想念溫爺爺</d>,<dp="98.65100,1,25,16777215,1589255077,0,18f73e5k
255329,0,d9da8eb0,32565181711122439">£外長(zhǎng)國(guó)士</d>,<dp="2.69000,1,25,16777215,1589255673,0,3b8543
89255688,0,6a443ab3,32565369584484419->點(diǎn)火?。?lt;/d>,<dp="537.09800,1,25,16777215,1589256127,0,adb^
256519,0,7c373fe8,32565805656309765->找都見證了!</d>,<dp="3.71200,1,18,16777215,1589256991,0,6aa4
94b.32566061168513799”為什么找的眼里常豈淚水,因?yàn)橹釔坌缙?lt;/d>.<dt>="100.37900.1.25.1677721E
程序中在新建BeautifulSoup對(duì)象時(shí),需要傳遞兩個(gè)參數(shù):需要分析的網(wǎng)頁(yè)
數(shù)據(jù)webpage.text和網(wǎng)頁(yè)數(shù)據(jù)的解析器html.parser,html.parser用于解析獲取到
的網(wǎng)頁(yè)數(shù)據(jù)。再次查看彈幕文件中的留言可以看到,每條留言的頭尾標(biāo)簽為“d”,
因此我們調(diào)用BeautifulSoup的find_all函數(shù)提取所有以“d”為標(biāo)簽的數(shù)據(jù),再次
打印后發(fā)現(xiàn)提取的數(shù)據(jù)內(nèi)容只剩下以“d”為標(biāo)簽的部分。
第五步:保存彈幕內(nèi)容。雖然步驟四中的信息已經(jīng)得到了進(jìn)一步的篩選,但
是仍然存在一些我們不需要的信息,因?yàn)锽eautifulSoup對(duì)象中的信息是被明確
區(qū)分為標(biāo)簽、屬性、內(nèi)容的,其中“d”對(duì)應(yīng)的部分為標(biāo)簽,“p”對(duì)應(yīng)的部分為屬性,
因此我們將內(nèi)容打印即可。
7danmu=BeautifulSoupCwebpage.text,'html.parser')
8danmu=danmu.find_all('d')
9foriindanmu:
10print(i.string)
控制臺(tái)
點(diǎn)火??!
點(diǎn)火
靠長(zhǎng)的聲音給人非常的安全感
滿分作文。
汶川親歷,四川成都,永遠(yuǎn)銘記。熄一切都好
王毅!
程序中,借助for循環(huán)遍歷BeautifulSoup對(duì)象danmu中的內(nèi)容,通過(guò)觀察
步驟四打印出多的內(nèi)容可以發(fā)現(xiàn),danmu是一個(gè)列表,記下來(lái)調(diào)用string方法,
將i轉(zhuǎn)換為字符串格式輸出。
第六步:保存彈幕內(nèi)容。將獲取到的彈幕數(shù)據(jù)以txt格式保存在文件中,因
為彈幕有很多條,因此我們?cè)诖蜷_文件要注意文件打開的方式。
9danmu_text=open('彈幕內(nèi)容.txt','a]encoding='utf-8')
10foriindanmu:
11danmu_text.write(i.string)
12danmu__text.write(ArXn1)
13danmu_text.close()
14print「保存成功!,)
點(diǎn)
火1!
點(diǎn)
火■
外
聲
音
合
非
孫
的
人
常安
長(zhǎng)
滿
作
四
分
成
若
川
瓠永
。
汶
親
川
,
王
爺
!
攀
想
爺
溫
年
溫
胡
啊
十
王
士
長(zhǎng)
國(guó)
外
說(shuō)
句世
中
不
需要
話S
實(shí)
,
占
!
!
8火
文
作
襄
分7
番
進(jìn)
翼
柒
多人
蠢到
得
器
己
三
為
證
么S
里
因
:
為
熱
等
艮
常
w目
胡^
溫m
^詩(shī)
溫e
食
的
程序中新建了一個(gè)名為danmujext的文件對(duì)象,三個(gè)參數(shù)中,第一個(gè)“彈幕
內(nèi)容.txt”為保存的文件名,第二個(gè)參數(shù)“a”是以追加寫入的形式打開文件,第三個(gè)
參數(shù)encoding為文件的編碼格式,注意在文件寫入完成后需要關(guān)閉文件,最后
打印保存成功的提示信息即可。此外,在運(yùn)行程序之前,需要先將該爬蟲程序保
存起來(lái),這樣才會(huì)在爬蟲程序的當(dāng)前目錄下自動(dòng)生成“彈幕內(nèi)容.txt”文檔。
牛刀小試
為了讓爬蟲代碼重復(fù)使用,我們可以將爬蟲過(guò)程定義為一個(gè)函數(shù),你能試一
試嗎?
拓展閱讀
I1
網(wǎng)絡(luò)爬蟲的“盜亦有道”
網(wǎng)絡(luò)爬蟲是一門計(jì)算機(jī)技術(shù),技術(shù)本身是不違法的,但是如果出現(xiàn)違反
網(wǎng)站意愿爬取數(shù)據(jù)、干擾被爬網(wǎng)站的正常運(yùn)營(yíng)或爬取了受到法律保護(hù)的特定
II
i類型的數(shù)據(jù)或信息時(shí)就成了“惡意爬蟲”,是需要承擔(dān)法律責(zé)任的,因此誕
,生了Robots協(xié)議。Robots協(xié)議是國(guó)際互聯(lián)網(wǎng)界通行的道德規(guī)范,是基于維
護(hù)信息提供者隱私權(quán)、保護(hù)網(wǎng)站使用者個(gè)人隱私不被侵犯而建立的。
Robots協(xié)議是網(wǎng)站跟爬蟲間的協(xié)議,robots,txt是一種存放于網(wǎng)站根目
II
:錄下的ASCII編碼的文本文件,它通常告訴網(wǎng)絡(luò)搜索引擎的漫游器(又稱網(wǎng)
絡(luò)蜘蛛)此網(wǎng)站中的哪些內(nèi)容是不應(yīng)被搜索引擎的漫游器獲取的、哪些是可
以被漫游器獲取的。如果將網(wǎng)站視為酒店里的一個(gè)房間,robots,txt就是主
II
!人在房間門口懸掛的“請(qǐng)勿打擾"或“歡迎打掃”的提示牌。這個(gè)文件告訴
II
來(lái)訪的搜索引擎哪些房間可以進(jìn)入和參觀、哪些房間因?yàn)榇娣刨F重物品或可
能涉及住戶及訪客的隱私而不對(duì)搜索引擎開放。但robots.txt不是命令,也
:不是防火墻,如同守門人無(wú)法阻止竊賊等惡意闖入者。
II
那么如何查看網(wǎng)站的robots.txt文件呢?查看的格式為:https:〃查看
II
的網(wǎng)址/robots.txt,比如你想查看百度的robots.txt文件,則只需要在瀏
;覽器中輸入https://www.baidu.com/robots,txt即可。
??
_?_________________________________________________________________________?*
鞏固與提高
1、在使用Python編寫爬蟲程序時(shí),可以選擇的網(wǎng)頁(yè)下載器有()
A、urllib2和requests
B、BeautifulSouphtml.parser
C>xpath和Ixm
D、json和xml
2、在編寫爬蟲程序爬取數(shù)據(jù)時(shí),以下觀點(diǎn)正確的是()
A、互聯(lián)網(wǎng)是開放的,所有數(shù)據(jù)都可為我所用
B、站點(diǎn)不讓爬取的數(shù)據(jù)偷偷爬取不被發(fā)現(xiàn)就好
C、遵守Robots協(xié)議,不做“惡意爬蟲”
D、網(wǎng)絡(luò)爬蟲有風(fēng)險(xiǎn),最好不要學(xué)
微項(xiàng)目2二維碼名片自己做
二維碼這個(gè)由黑白小方塊組成的圖案已經(jīng)成為了我們生活當(dāng)中很重要的一
部分,付款的時(shí)候我們可以掃它、聊天軟件相互加好友也可以掃它、登錄網(wǎng)站時(shí)
也提供了二維碼登錄功能……,總而言之,二維碼無(wú)處不在,通過(guò)掃描二維碼總能
得到你想要的東西,那么二維碼的工作原理是什么呢?如何制作屬于自己的二維
碼名牌呢?
通過(guò)本章的學(xué)習(xí),你將掌握以下技能:
*明確二維碼的工作原理
*制作自己的二維碼名片
專題一:初識(shí)二維碼
對(duì)于二維碼我們已經(jīng)很熟悉了,那么二維碼中的黑白小方塊兒究竟奇妙在哪
里,為什么隨便一掃總能給你帶來(lái)你所需要的東西?
1.1二維碼的誕生
提起二維碼(QRCode)的誕生就不得
不提到一維碼(BarCode),也就是大家熟
悉的條形碼。一維碼誕生于上個(gè)世紀(jì)60年
S/N3350106
代至70年代,條形碼聯(lián)合發(fā)明人諾曼?約
瑟夫?伍德蘭德發(fā)明了一維碼,該技術(shù)的誕生幾乎改變了全球的商業(yè)活動(dòng)形式,
使得收銀員的工作效率變得更高效,顧客也可以節(jié)省更多時(shí)間。
二維碼的誕生可以追溯到上個(gè)世紀(jì)60年代之后的日本,首個(gè)公開發(fā)布的二
維碼是1994年日本電裝公司公布的QRCode,QR的全
稱就是“QuickResponse”,翻譯過(guò)來(lái)就是快速響應(yīng),意味
著追求高速讀取能力的研發(fā)概念,相較于一維碼數(shù)據(jù)容
量較小、只能包含字母和數(shù)字、條形碼尺寸相對(duì)較大、
條形碼遭到損壞后便不能閱讀等缺點(diǎn),二維碼具有數(shù)據(jù)
容量更大、超越了字母數(shù)字的限制、條形碼相對(duì)尺寸小、
具有抗損毀能力等優(yōu)勢(shì)。其實(shí)在發(fā)布二維碼之初,日本電裝公司并沒(méi)有很大的把
握可以讓二維碼完全取代傳統(tǒng)的條形碼,真正讓二維碼發(fā)揚(yáng)光大的是兩個(gè)第三方
支付公司:支付寶和微信,這種新型的支付方式支付寶是第一個(gè)吃螃蟹的人,并
且讓二維碼支付正式步入了普通人的視野并被人們所熟知。
1.2二維碼的工作原理
二維碼是一種矩陣式二維條碼(又稱棋盤式二維條碼),它是在一個(gè)矩形空
間通過(guò)黑、白像素在矩陣中的不同分布而進(jìn)行編碼的。在矩陣相應(yīng)元素位置上,
用點(diǎn)(方點(diǎn)、圓點(diǎn)或其他形狀)的出現(xiàn)表示二進(jìn)制“1”,點(diǎn)的不出現(xiàn)表示二進(jìn)制
的“0”,點(diǎn)的排列組合確定了矩陣式二維條碼所代表的意義。它邊上有三個(gè)起到
定位作用的大方塊,這能保證我們?cè)趻叽a時(shí)不管手機(jī)怎樣放置都能得到信息。
簡(jiǎn)單來(lái)說(shuō),二維碼其實(shí)是一種開放性的信息存儲(chǔ)器,它能將固定的信息存儲(chǔ)
在自己的黑白小方塊之間。而且它可以無(wú)限使用,并且對(duì)識(shí)別器沒(méi)有任何要求,
任何設(shè)備只要帶掃一掃的功能,都可以將它所存儲(chǔ)的信息讀取出來(lái)。二維碼可以
存儲(chǔ)各種信息,主要包括網(wǎng)址、名片、文本信息、特定代碼等。
二維碼一共有40個(gè)尺寸,官方叫版本VersionoVersion1是21X21的矩陣,
Version2是25X25的矩陣,Version3是29X29的矩陣,每增加一個(gè)Version,
就會(huì)增加4的尺寸,公式是:(V-1)X4+21(V是版本號(hào)),最高Version是40,
尺寸為(40-1)X4+21=177,所以最高是177X177的正方形。這里說(shuō)的尺寸大小
不是指生成圖片的大小,而是指二維碼的長(zhǎng)寬被平均分成多少份
1.3二維碼應(yīng)用場(chǎng)景
二維條碼具有儲(chǔ)存量大、保密性高、追蹤性高、抗損性強(qiáng)、備援性大、成本
便宜等特性,這些特性特別適用于表單、安全保密、追蹤、證照、存貨盤點(diǎn)、資
料備援等方面,總得來(lái)說(shuō),二維碼在生活中主要應(yīng)用于以下場(chǎng)景:
1)電子名片
傳統(tǒng)的紙質(zhì)名片能囊括的信息非常有限,很多商務(wù)人士都開始將個(gè)人信息做
成電子名片二維碼,打印在自己的紙質(zhì)名片上,不僅可以比傳統(tǒng)紙質(zhì)名片囊括更
多的信息,而且掃描電子名片二維碼即可保存聯(lián)系人信息到手機(jī)通訊錄,提供了
非常大的便利性。止匕外,二維碼名片對(duì)于信息的維護(hù)非常方便,當(dāng)個(gè)人信息發(fā)生
變化時(shí),只需在后臺(tái)修改即可。
2)產(chǎn)品包裝
將有關(guān)產(chǎn)品的品牌故事、使用方法、制作過(guò)程做成一個(gè)視頻、音頻或者圖文
二維碼,顧客掃描二維碼即可觀看,在讓顧客更了解產(chǎn)品的同時(shí)也增加了顧客的
粘性。止匕外,使用動(dòng)態(tài)二維碼還可以在后臺(tái)看到這個(gè)二維碼被掃描了多少次,在
什么地點(diǎn),什么時(shí)間被掃描的等市場(chǎng)詳細(xì)信息。
3)食品二維碼溯源
將食品的生產(chǎn)和物流信息加載在二維碼里,可實(shí)現(xiàn)對(duì)食品追蹤溯源,消費(fèi)者
只需用手機(jī)一掃,就能查詢食品從生產(chǎn)到銷售的所有流程。通過(guò)為每件產(chǎn)品建立
唯一的“身份證條碼“,可以實(shí)現(xiàn)對(duì)每件產(chǎn)品的物流、信息流的監(jiān)管和控制,具備
了強(qiáng)大的原材料采購(gòu)追溯、生產(chǎn)環(huán)節(jié)追溯與銷售流向追溯等功能,實(shí)現(xiàn)從產(chǎn)品生
產(chǎn)到消費(fèi)終端的全程監(jiān)控和管理。
4)餐廳的應(yīng)用
通過(guò)二維碼為商家建立一個(gè)手機(jī)電子菜單,餐飲店可以很輕松的將餐飲文化、
菜品介紹等信息按照相關(guān)的指引錄入。用戶通過(guò)掃碼獲得該手機(jī)網(wǎng)站的跳轉(zhuǎn)鏈接
獲取商家相關(guān)信息。
5)手機(jī)購(gòu)物
“以二維碼為入口的移動(dòng)超市”是移動(dòng)終端普遍應(yīng)用和電子商務(wù)模式趨向成
熟的標(biāo)志和產(chǎn)物?!耙苿?dòng)超市”將移動(dòng)電子商務(wù)推向一個(gè)新臺(tái)階,它主要研究開發(fā)
基于移動(dòng)終端的移動(dòng)交易和商家營(yíng)銷的應(yīng)用,以二維碼為通道,實(shí)現(xiàn)了消費(fèi)者隨
時(shí)隨地快速瀏覽真實(shí)商品,快速購(gòu)物的過(guò)程。
止匕外,二維碼還被廣泛應(yīng)用于二維碼印章、票務(wù)銷售、證照應(yīng)用、產(chǎn)品溯源、
會(huì)議服務(wù)等方面,隨著物聯(lián)網(wǎng)產(chǎn)業(yè)的蓬勃發(fā)展,相信更多的二維碼技術(shù)應(yīng)用解決
方案被開發(fā)出來(lái),應(yīng)用到各行各業(yè)的日常經(jīng)營(yíng)生活中來(lái),屆時(shí),二維碼成為移動(dòng)
互聯(lián)網(wǎng)入口真正成為現(xiàn)實(shí)。
專題二:制作二維碼名片
我們?nèi)粘=佑|到的二維碼以支付二維碼和網(wǎng)站、公眾號(hào)二維碼為主,其實(shí)利
用二維碼我們也可以制作個(gè)人名片,讓我們借助QRCode庫(kù)制作屬于自己的二維
碼名片吧。
2.1安裝第三方庫(kù)
在編寫程序前,我們需要先安裝QRCode庫(kù)。找到QRCcode庫(kù)的方法有兩
1、點(diǎn)擊離線版海龜編輯器菜單欄中的庫(kù)管理,在彈出的庫(kù)管理界面選擇數(shù)
據(jù)處理,下拉找到qrcode庫(kù);
2、在搜索框內(nèi)輸入“qrcode”點(diǎn)擊搜索即可找到qrcode庫(kù)。
然后點(diǎn)擊安裝即可。
Pandas庫(kù)經(jīng)常被用于熱據(jù)讀取與處理。強(qiáng)大易用的幼糖分析方法,以及優(yōu)
化的數(shù)據(jù)處理速度,使得Pi成為數(shù)據(jù)科學(xué)家最神愛的后之一。
jieba
是一個(gè)中文分詞再,它可以把中義句子劃分成i或且,以便進(jìn)一步進(jìn)行
自然語(yǔ)言處理。
wordcloud
0midood意為一詞云”,它可以生成詞云圖,對(duì)文本中出現(xiàn)頻率較高的-關(guān)速
i可'予以夠化的展現(xiàn),直現(xiàn)展示文本關(guān)鍵內(nèi)容及主旨。
qrcode
%code是一個(gè)二維碼摩,它可以生成二維碼。支持設(shè)法二維碼圖像的尺寸
等信息。
2.2制作二維碼名片
第一步:導(dǎo)入qrcode庫(kù),并編寫生成第一個(gè)帶有文字的二維碼圖片。注意,
在運(yùn)行程序前,需要將代碼文件先保存起來(lái)。
1#制作二維碼名片
2importqrcode
3
4img=qrcode.make('Hello,Python!')
5img.save('我的名片.png')
6img.show()
程序中調(diào)用了qrcode的make函數(shù)生成了一張包含了“Hello,Python!”的二
維碼圖像,然后通過(guò)save函數(shù)將圖像以“我的名片.png”的形式保存了下來(lái)。當(dāng)運(yùn)
行程序時(shí),就會(huì)在程序文件保存的目錄下生成一張二維碼圖片,該圖片是qrcode
以默認(rèn)方式生成的二維碼,qrcode.make。是qrcode提供簡(jiǎn)單調(diào)用接口,其生成的
二維碼圖片尺寸為21X21。最后調(diào)用show函數(shù)自動(dòng)打開圖片。注意,在生成二
維碼前,一定要將程序文件先保存到計(jì)算機(jī)。
我的名片.png制作二雒碼名片.py
第二步:生成更復(fù)雜的二維碼圖片。在第一步中生成的二維碼尺寸太小,那
么如何生成不同尺寸的二維碼呢?接下來(lái)我們一起學(xué)習(xí)qrcode的高級(jí)應(yīng)用
qrcode類。正常生成二維碼的步驟為創(chuàng)建QRCode對(duì)象、add_data()添加數(shù)
據(jù)、make_image()創(chuàng)建二維碼圖像、保存或自動(dòng)打開圖片。
1#制作二維碼名片
2importqrcode
3
4qr=qrcode.QRCode(
5version=5,
6error_correction=qrcode.constants.ERROR_CORRECT_L,
7box_size=10,
8border=4
9)
10qr.add_data('Hello,Python!')
11qr.make(fit=True)
12img=qr.make_image()
13img.save('我的名片.png')
14img.show()
程序中生成了一張帶有“Hello,Python!”的二維碼圖片,打開圖片會(huì)發(fā)現(xiàn)圖片
的尺寸比qrcode默認(rèn)的尺寸大了很多。為了創(chuàng)建不同大小的二維碼圖片,在程
序中調(diào)用QRCode函數(shù)定義了一個(gè)qrcode類qr,QRCode類的參數(shù)有6個(gè),可以
根據(jù)需要自行選擇,參數(shù)的具體含義為:
1)version:表示二維碼的版本號(hào),取值范圍為1到40,最小的版本號(hào)是1,
對(duì)應(yīng)的尺寸是21X21;
2)error_correction:二維碼的糾錯(cuò)范圍,糾錯(cuò)范圍有四個(gè)級(jí)別,分別是:
1.ERROR_CORRECT_L級(jí)別:7%以下的錯(cuò)誤會(huì)被糾正;
2.ERROR_CORRECT_M級(jí)別:15%以下的錯(cuò)誤會(huì)被糾正,也是qrcode
的默認(rèn)級(jí)別;
3.ERROR_CORRECT_Q級(jí)別:25%以下的錯(cuò)誤會(huì)被糾正;
4.ERROR_CORRECT_H級(jí)別:30%以下的錯(cuò)誤會(huì)被糾正。
3)boxsize:每個(gè)點(diǎn)(方塊)中的像素個(gè)數(shù);
4)border:二維碼距圖像外圍邊框距離,默認(rèn)為4,而且相關(guān)規(guī)定最小為4;
5)image_factory:選擇生成圖片的形式,默認(rèn)為PIL圖像;
6)mask_pattern:選擇生成圖片的的掩模。
隨后對(duì)象qr調(diào)用add_data函數(shù)傳入數(shù)據(jù),add_data函數(shù)原型為:
add_data(str,optimize=20)
其中str為需要傳入的數(shù)據(jù);optimize為優(yōu)化參數(shù),optimize的值決定了數(shù)據(jù)
將被拆分為多個(gè)塊來(lái)進(jìn)行優(yōu)化,以找到一個(gè)長(zhǎng)度至少為這個(gè)值的足夠簡(jiǎn)潔的方式
來(lái)生成二維碼,默認(rèn)值為0。
傳入數(shù)據(jù)后qr調(diào)用make函數(shù),fit=true的意思是將會(huì)找到適合數(shù)據(jù)的最小
尺寸,隨后調(diào)用make_image函數(shù)創(chuàng)建二維碼圖像,函數(shù)原型為:
make_image(fill_color=None,back_color=None,imagefactory=None)
如果要讓二維碼有顏色,可以在這里設(shè)置filLcolor屬性,filLcolor為像素
點(diǎn)的顏色,back_color為背景色,imagefactory為生成圖像的形式,默認(rèn)為PIL
圖像,三個(gè)參數(shù)可以為空。最后保存圖片并自動(dòng)打開圖片即可。
第三步:生成帶圖片的二維碼名片。通常我們看到的二維碼中間都有一張圖
片或者用戶頭像,如何才能生成這樣的二維碼圖片呢?我們需要利用P
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圍墻工程發(fā)包合同范本
- 同煤集團(tuán)合同范例
- 2025年停車庫(kù)使用權(quán)策劃合同樣本
- 包裝出口合同范本
- 廚房保養(yǎng)合同范本
- 地鐵廣告租賃合同范本
- 簽訂的黃金投資合同
- 啤酒銷售代理合同協(xié)議書
- 度設(shè)備租賃合同
- 化工硫酸采購(gòu)合同范本
- GB 30253-2024永磁同步電動(dòng)機(jī)能效限定值及能效等級(jí)
- 菜地勞務(wù)合同模板
- 二十屆三中全會(huì)精神學(xué)習(xí)題庫(kù)及答案
- 相反國(guó)課件-大班
- 【基于杜邦探析法的湯臣倍健財(cái)務(wù)報(bào)表探析案例(定量論文)11000字】
- 湖北省石首楚源“源網(wǎng)荷儲(chǔ)”一體化項(xiàng)目可研報(bào)告
- 湘美版小學(xué)二年級(jí)下冊(cè)美術(shù)全冊(cè)教案
- 買房送轎車活動(dòng)方案
- 《軟件工程導(dǎo)論》期末復(fù)習(xí)考試題庫(kù)(帶答案)
- 小學(xué)英語(yǔ)名詞單數(shù)變復(fù)數(shù)的語(yǔ)法規(guī)則及練習(xí)題含答案
- 高中英語(yǔ)常考的240個(gè)固定搭配
評(píng)論
0/150
提交評(píng)論