




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、初中信息技術(shù)Python【網(wǎng)絡(luò)爬蟲爬數(shù)據(jù)】隨著信息化社會(huì)的到來,萬維網(wǎng)已經(jīng)堆積了大量信息,這就需要我們尋找一種方 式來幫助我們過濾掉無用的信息,并且篩選更多有用的信息作為反應(yīng),于是網(wǎng)絡(luò)爬蟲 技術(shù)應(yīng)運(yùn)而生。在日常生活中,同學(xué)們可能聽說過網(wǎng)絡(luò)爬蟲這個(gè)詞,但到底什么是爬 蟲,如何利用網(wǎng)絡(luò)爬蟲爬取自己需要的數(shù)據(jù)呢?通過本節(jié)的學(xué)習(xí),你將掌握以下技能:* 了解網(wǎng)絡(luò)爬蟲的工作過程*編寫程序爬取B站彈幕專題一:初識(shí)爬蟲在編寫爬蟲程序之前,我們需要先了解下網(wǎng)絡(luò)爬蟲的概念、爬蟲的基本過程和爬 蟲的基本架構(gòu)。什么是爬蟲網(wǎng)絡(luò)爬蟲,也叫網(wǎng)絡(luò)蜘蛛,它是一段自動(dòng)訪問互聯(lián)網(wǎng)并從中提取數(shù)據(jù)的程序。我 們?yōu)g覽的每一個(gè)網(wǎng)頁都對(duì)應(yīng)著
2、唯一的網(wǎng)頁地址,即URL,而一個(gè)網(wǎng)頁中又包含著指向 其他網(wǎng)頁的URL ,這種URL相互指向的關(guān)系就形成了互聯(lián)網(wǎng)。為了從互聯(lián)網(wǎng)中獲取需 要的信息,以前我們需要人工翻開網(wǎng)頁進(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ò)爬蟲、聚焦網(wǎng)絡(luò)爬蟲、增量式網(wǎng)絡(luò) 爬蟲、深層網(wǎng)絡(luò)爬蟲。D、json 和 xml2、在編寫爬蟲程序爬取數(shù)據(jù)時(shí),以下觀點(diǎn)正確的選項(xiàng)是()A、互聯(lián)網(wǎng)是開放的,所有數(shù)據(jù)都可為我所用B、站點(diǎn)不讓爬取的數(shù)據(jù)偷偷爬取不被發(fā)現(xiàn)就好C、遵守Robots協(xié)議,不做“惡意爬蟲”D、網(wǎng)絡(luò)爬蟲有風(fēng)
3、險(xiǎn),最好不要學(xué)人工URL是統(tǒng)一資源定位符(Uniform Resource Locator )的英文縮寫,也就是我們常 說的網(wǎng)址,比方大家熟悉的百度搜索地址就是一個(gè)URLO互聯(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à)格做比照等等。大數(shù)據(jù)時(shí)代離不開爬蟲,在未來,爬蟲的地位會(huì)越 來越重要。爬蟲的基本過程爬蟲的基本
4、過程分為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è)诘刂窓谳斎刖W(wǎng)址 按下回車鍵后即向服務(wù)器發(fā)起了請(qǐng)求,如輸入后瀏覽器會(huì)先將該URL解析成IP地址14.215.177.39 #然后通過TCP三次握手與百度服務(wù)器建立連接,并發(fā)起 請(qǐng)求,即 Request ;2、獲取響應(yīng)內(nèi)容。服務(wù)器在接收到客戶端發(fā)送來的Request后,會(huì)根據(jù)客戶端的 請(qǐng)求找到客戶端需要的資源文件,然后打包發(fā)送給客戶端,即Response ;3、解析內(nèi)容??蛻舳双@取到服務(wù)器發(fā)來
5、的數(shù)據(jù)后,開始解析內(nèi)容,解析的數(shù)據(jù)可 以是圖片、視頻、html數(shù)據(jù)、json數(shù)據(jù)等;4、保存數(shù)據(jù)。將解析的數(shù)據(jù)以文本或數(shù)據(jù)庫的形式存儲(chǔ)下來。由此我們可以得出一個(gè)簡單爬蟲架構(gòu):其中,爬蟲調(diào)度端主要是負(fù)責(zé)爬蟲的啟動(dòng)、停止以及監(jiān)視爬蟲的調(diào)度情況;在爬 蟲程序中,URL管理器主要負(fù)責(zé)管理未爬取的URL集合和已爬取的URL集合,防止 重復(fù)或循環(huán)爬取;網(wǎng)頁下載器是指將互聯(lián)網(wǎng)上URL對(duì)應(yīng)的網(wǎng)頁下載到本地的工具,在 Python中常用的網(wǎng)頁下載器有Python官方基礎(chǔ)模塊urllib2和第三方庫requests ;網(wǎng)頁 解析器是從網(wǎng)頁中提取有價(jià)值數(shù)據(jù)的工具,主要有re正那么匹配、Python自帶的 html.
6、parser模塊、第三方庫BeautifulSoup、xpath、Ixm庫等;網(wǎng)頁解析器將有價(jià)值的數(shù)據(jù)輸出形成價(jià)值數(shù)據(jù)。爬蟲程序在執(zhí)行時(shí),首先從URL管理器中獲取一個(gè)待爬取的URL ,然后該URL 傳送給網(wǎng)頁下載器,網(wǎng)頁下載器將URL指定的網(wǎng)頁下載下來并存儲(chǔ)成一個(gè)字符串,然 后傳送給網(wǎng)頁解析器解析,網(wǎng)頁解析器一方面將字符串里包含的新的URL傳送給URL 管理器,另一方面字符串里的有價(jià)值的信息形成價(jià)值數(shù)據(jù)并輸出保存。專題二:爬取B站彈幕接下來我們爬取一個(gè)URL中的數(shù)據(jù)。為了爬取B站的彈幕,我們采用的網(wǎng)頁下載 器為Requests庫、網(wǎng)頁解析器為BeautifulSoup庫,BeautifulSo
7、up庫能夠幫助我們?cè)诓?用編寫正那么表達(dá)式情況下也可以方便的實(shí)現(xiàn)網(wǎng)頁信息提取。在使用之前,我們需要先 安裝 Requests 庫和 BeautifulSoup 庫。2.1安裝第三方庫點(diǎn)擊離線版海龜編輯器菜單欄中的庫管理,在彈出的庫管理界面選擇爬蟲,然后 分別點(diǎn)擊Requests庫和BeautifulSoup庫后的安裝即可。未登錄 文件 。設(shè)置,6硬件 。庫管理|。運(yùn)行/發(fā)布舊新的作品庫管理靠常用庫官方游戲爬蟲數(shù)據(jù)處理圖袤爬蟲RequestsRequestsReque比庫可以用來發(fā)送請(qǐng)求、處理響應(yīng)結(jié)果;學(xué)會(huì)Requests庫,我們能輕 易調(diào)用網(wǎng)絡(luò)ap】接口,實(shí)現(xiàn)爬蟲、翻譯、智能機(jī)器人等各種有趣的
8、效果。Beautiful SoupBeautiful Soup是一個(gè)可以從網(wǎng)站抓取數(shù)據(jù)并解析的Python庫。學(xué)會(huì) BeautifiilSoup庫,我們可以用更簡潔、高效的方式編寫爬蟲程序。2.1編寫爬蟲程序第一步:導(dǎo)入 Requests 庫和 BeautifulSoup 庫。1 #爬取B站彈幕數(shù)據(jù) 2 import requests 3 from bs4 import BeautifulSoup在導(dǎo)入庫的時(shí)候,注意requests的大小寫,在導(dǎo)入BeautifulSoup庫時(shí),不能直接 寫成import BeautifulSoup ,這是因?yàn)锽eautifulSoup已經(jīng)被移植到BS4模塊中
9、了,所以 我們?cè)趯?dǎo)入 BeautifulSoup 庫時(shí)還需要導(dǎo)入 bs4 ,即 from bs4 import BeautifulSoupo第二步:找到彈幕的URL地址,這是爬蟲的關(guān)鍵步驟。翻開B站的視頻連接,如 科技類作品110還:上山13山(01111(10/84(4114781;然后按下F12鍵,翻開開發(fā) 者工具欄,選中功能模塊Network下的XHR標(biāo)簽并按下F5鍵刷新頁面(如圖一), 在刷新出的資源信息中找到list.so?oid= 189825423 (如圖二)并雙擊,彈出的窗口中可 以看到視頻中所有彈幕的內(nèi)容(如圖三),這就是我們要找的彈幕信息了。在這一步 中,我們需要保存的是。
10、id后面的編號(hào)189825423 , B站每一個(gè)視頻的彈幕都有著唯一 的編號(hào)。注意圖二中的Requests URL地址并不是彈幕的實(shí)際地址,B站彈幕的實(shí)際地 址為 ,在這里將 oid 替換為 189825423 ,即 這就是我們需要爬取的 URL。QElements Console Sources I Network I Performance X 0, * Q View: = , U Group by frame U Preserve log U Disable cacFilter1 1 Hide data URLsJS CSS Img Media Font Doc WS Manifest
11、Other60000 ms 70000 ms60000 ms 70000 ms10000 ms 20000 ms 30000 ms 40000 ms 50000 ms圖Namei 189825423-l-30280.m4s?expi 人 189825423-l-30280.m4s?expi u 189825423-l-30280.m4s?expi 189825423-l-30032.m4s?expi l_ report?cross_domain=true _ report?cross_domain=true 189825423-l-30280.m4s?expi H0list.so?oid=18
12、9825423X Headers Preview Response Timing GeneralRequest URL: o?oid=189825423Request Method: GETStatus Code: 6 200Remote Address: 120.92.174.135:443Referrer Policy: no-referrer-when-downgrade Response Headersaccess-control-allow-credentials: trueaccess-control-allow-headers: Origin,No-CacheX-Req d-Wi
13、th,If-Modified-Since?Pragma,Last-Modified,Ci Control, Expires, Content-Type Access-Control-Alli edentialsDNTX-CustomHeaderKeep-Alive,User-Agiweb?001111158Q43645Q4801.圖二, U, befl IdU,叉b611NUU391U悅 1 ”外長的再苜落人并吊刖女主燃/dd p=534,19900, 1,25, 16777215, 1589254210, 0, 1c 135477,32564594622332933”薪分作文。d 尸13.0
14、190Q 1,25,167772應(yīng) 1589254370,0,dff0b24,32564678676185093“)汶川親歷,四川成都,永遠(yuǎn)銘記。原一切都好d 尸212.64000,1,25, 16777215,1589254917,0, 8956388,32564965576015875王毅! 想念溫爺爺d 尸98. 65100, 1, 25, 16777215, 1589255077,0, 18f 73e5b, 32565049439551495溫胡十年曬/dd p=M214.29900, 王外長國d 2.69000, 1,25, 16777215, 1589255673, 0, 3b85
15、435d, 32565361871159299說實(shí)話,中國不需要向世界展示什么,如果足夠自信的話點(diǎn)火! ! d 尸3.34300, 1,25, 16777215, 1589256519, 0, 7c373fe8,32565805656309765“我都見證了! d 尸3.71200, 1, 18, 16777215, 1589256991, 0, 6aa41326,32566052977115141進(jìn)來的朋友記得三連,讓更多人看到d 160.66000, 1,25, 16777215, 1589257007, 0, 853do94b, 32566061188513799為什么我的眼里常含淚水,
16、因?yàn)槲覠釔圻@片土地d 尸100.37900, 1,25, 16777215, 1589257085, 0, 2790e3ef, 胡爺爺好d p=75. 92600, 1, 25, 16777215, 1589258512,0,39abac26, 32566850475261957溫爺爺d p= 蒲分Gddp=%46.89400, 1,25, 16777215, 1589261160, 0,40bc2041,32568238572830723??偡种底魑陌?! ! d *102.30500.1.25,16777215.1589262417. 0. 678d74ab. 325688975650979
17、89胡益給胡爺翁圖三第三步:創(chuàng)立requests對(duì)象抓取URL中的信息,并打印。查看步驟2中的圖二可 以發(fā)現(xiàn),彈幕數(shù)據(jù)的請(qǐng)求方式為GET方式,因此程序中借助requests的get函數(shù)對(duì)彈 幕地址 發(fā)起數(shù)據(jù)請(qǐng)求。5 webpage = requests.get( s:)webpage.encoding = utf-8print(webpage.text)程序中,為防止抓取到的彈幕出現(xiàn)亂碼,我們將獲取到的數(shù)據(jù)webpage的編碼格 式設(shè)置為“UTF-8,隨后將數(shù)據(jù)打印出來,為什么不直接打印webpage而是 webpage.text呢?這是因?yàn)槿绻苯哟蛴ebpage的話會(huì)在控制臺(tái)輸出Resp
18、onse 200 請(qǐng)求成功的狀態(tài)碼,而打印webpage.text時(shí)才能將返回?cái)?shù)據(jù)中的網(wǎng)頁數(shù)據(jù)輸出出來。chat .bilibili 1898254230/missionxmaxli rcexd p=497.29500,5,25,16776960,1589206985,0,002245,32539835383676931點(diǎn)火! ! /dxd p=506.52800,1,25,15138834,1589237022,0,bc6ac =210.46900,1,25,16777215,1589247586, 0r長的聲音給人非常的平安感 d p=534.19900, 1,25,16777215,15
19、8925421 1589254370, 0,24,32564678676185093”汶川親歷,四川成都,永遠(yuǎn)銘記。虔一切都好/dxd p=212.64000,1, 25,16777215,1589254917,0, f8956388 68.87400, 1, 25, 16777215, 1589255031,0, 18f73e5b, 32565025336459267”想念溫爺爺 /dXd p=98.65100, 1,25, 16777215, 1589255077, 0, 王外長國士 點(diǎn)火! ! d p=537.09800,1,25,16777215,1589256127,0,adb5de
20、94,325656001 65805656309765”找都見證,! 進(jìn)來的朋友記得三連,讓更多人看到 為什么我的眼里常含淚水,因?yàn)槲要?dú)愛這片土地 溫爺爺 0溫爺爺 /dXd p=531.18000,1,第四步:創(chuàng)立BeautifulSoup對(duì)象,獲取價(jià)值數(shù)據(jù)。因?yàn)閺椖坏奈募4娓袷綖?xml ,而BeautifulSoup可以高效的解析xml文件,所以網(wǎng)站解析器我們才選擇用BeautifulSoupo在步驟三中可以看到獲取的數(shù)據(jù)中有許多我們不需要的信息,因此需 要對(duì)抓取到的網(wǎng)頁數(shù)據(jù)進(jìn)行清洗。danmu = Beautif ulSoup( webpage .text html.parser1)
21、danmu=danmu.find_all(*d *)print(danmu)d p=497.29500,5,25,16776960,1589206985,0,f002f245,32539835383676931。點(diǎn)火! ! 。外長的聲音給人左常的平安感 r d p=534.19900,1,25,16777215,1589254210, 7215,1589254370,0,dff0b24,32564678676185093”汶 jl| 親歷,四 jl| 成物,永遠(yuǎn)銘記。思一切都好 , d p=212 031,0,18f73e5b, 32565025336459267。想念溫爺爺 , d p=98
22、.65100,1,25,16777215,1589255077,0r王外長國士, d p=2.69000, lz 25,16777215,1589255673, 0r 3b8543 89255688,0,6a443ab3,32565369584484419”點(diǎn)火! ! r d p=537.09800,lr25,16777215,1589256127,0radb5 256519,0,7c373e8,32565805656309765”找都見證 / ! , d p=3.71200, lr 18,16777215,1589256991,0, 6aa4程序中在新建BeautifulSoup對(duì)象時(shí),需要
23、傳遞兩個(gè)參數(shù):需要分析的網(wǎng)頁數(shù)據(jù) webpage.text和網(wǎng)頁數(shù)據(jù)的解析器html.parser , html.parser用于解析獲取到的網(wǎng)頁數(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)的局部為屬性,因此我
24、們將內(nèi)容 打印即可。danmu = BeautifulSoup(webpage.text., 1 html.parser)danmu=danmu.find_all(d1)for i in danmu:print(i.string)控制臺(tái)占火IIJ、/、 點(diǎn)火菜長的聲音給人非常的平安感總分值作文。汶川親歷,四川成都,永遠(yuǎn)銘記。堤一切都好 王毅!程序中,借助for循環(huán)遍歷BeautifuISoup對(duì)象danmu中的內(nèi)容,通過觀察步驟四 打印出多的內(nèi)容可以發(fā)現(xiàn),danmu是一個(gè)列表,記下來調(diào)用string方法,將i轉(zhuǎn)換為字 符串格式輸出。第六步:保存彈幕內(nèi)容。將獲取到的彈幕數(shù)據(jù)以txt格式保存在文件
25、中,因?yàn)閺椖?有很多條,因此我們?cè)诜_文件要注意文件翻開的方式。9 danmu_text = open(彈幕內(nèi)容. txt1, ,a encoding= utf-81)for i in danmu:danmu_text.write(i.string)danmu_text.write(1rn1)danmu_text.close()print(,保存成功! ,)文件(B 幅凝回 格式(Q) 查看(V) 幫助(H)愿 么。 什 S 記 示 人為 感錯(cuò) 展 多因 全遠(yuǎn) 界 更, 安永 世 讓水 的, 向 ,淚 常配 要 法等 非成 需 三常 人川 不 得里 給四 國!記眼 音:爺啊土中 !聲文歷爺年國i.文證50詩 1的作親!溫十長話!作番么的 火火長分川望胡外實(shí)火分梨 點(diǎn)點(diǎn)外滿汶王想溫王說占3襄進(jìn)為胡溫溫食愿 么。 什 S 記 示 人為 感錯(cuò) 展 多因 全遠(yuǎn) 界 更, 安永 世 讓水 的, 向 ,淚 常配 要 法等 非成 需 三常 人川 不 得里 給四 國!記眼 音:爺啊土中 !聲文歷爺年國i.文證50詩 1的作親!溫十長話!作番么的 火火長分川望胡外實(shí)火分梨 點(diǎn)點(diǎn)外滿汶王想溫王說占3襄進(jìn)為胡溫溫食程序中新建了一個(gè)名為danmujext的文件對(duì)象,三個(gè)參數(shù)中,第一個(gè)“彈幕內(nèi)容.txt”為保存的文件名,第二個(gè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025青海省建筑安全員考試題庫及答案
- 2025天津市安全員B證考試題庫及答案
- 韶關(guān)醫(yī)院道路標(biāo)線施工方案
- 2025遼寧省建筑安全員C證考試(專職安全員)題庫及答案
- 2025河南省安全員C證考試(專職安全員)題庫附答案
- 卷材防水出售合同范本
- 信用卡放款合同范本
- 二年級(jí)口算練習(xí)冊(cè)100道
- 三年級(jí)口算題目全集1000道
- 二年級(jí)數(shù)學(xué)口算練習(xí)100道
- 中小學(xué)領(lǐng)導(dǎo)班子包級(jí)包組包班制度
- 汽車掛靠經(jīng)營合同協(xié)議書模板
- 基坑土方開挖專項(xiàng)施工方案(完整版)
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)(2024年第四季度)
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 數(shù)據(jù)中心運(yùn)維服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 瑞幸對(duì)賭協(xié)議
- 幼兒園一日活動(dòng)流程教師培訓(xùn)
- 2024-2025學(xué)年山東省濰坊市高一上冊(cè)1月期末考試數(shù)學(xué)檢測試題(附解析)
- 征信入校園教育課件
- 部編人教版四年級(jí)下冊(cè)道德與法治全冊(cè)教案
評(píng)論
0/150
提交評(píng)論