初中信息技術(shù)-編程-第七單元-【用Python讓生活更美好】_第1頁(yè)
初中信息技術(shù)-編程-第七單元-【用Python讓生活更美好】_第2頁(yè)
初中信息技術(shù)-編程-第七單元-【用Python讓生活更美好】_第3頁(yè)
初中信息技術(shù)-編程-第七單元-【用Python讓生活更美好】_第4頁(yè)
初中信息技術(shù)-編程-第七單元-【用Python讓生活更美好】_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論