爬虫基本原理讲解
(一)簡(jiǎn)介
今天,我們將對(duì)爬蟲的基礎(chǔ)知識(shí)做一個(gè)基本的梳理,以便大家掌握爬蟲的基本思路,爬蟲即為網(wǎng)絡(luò)資源數(shù)據(jù)獲取,用一句話概括就是:
請(qǐng)求網(wǎng)站并提取數(shù)據(jù)的自動(dòng)化程序
爬蟲的基本流程分為四步:
在第一二步Request和Response是爬蟲的獲取階段比較重要的兩個(gè)概念,我們來(lái)仔細(xì)看一下:
?
(二)Request是什么
request包含四個(gè)部分,如下圖所示:
?
1.首先,請(qǐng)求方式中Get和Post是比較常用的兩種類型,我們打開(kāi)百度圖片網(wǎng)頁(yè)查看后臺(tái)可找到:
?
2.其次,URL是什么呢:
介于上面已經(jīng)展示了全部頁(yè)面,接下來(lái)我們將視野縮小:
?
? 3.再接下來(lái),請(qǐng)求頭也就是我們所說(shuō)的Headers:
? ? ?其中,所有信息以鍵值對(duì)的形式出現(xiàn)
?
4.請(qǐng)求體即是包含在其中的內(nèi)容
? (三)Response包含什么:
這三個(gè)東西在網(wǎng)頁(yè)后臺(tái)也很好找到:
接下來(lái),我們用一個(gè)小小的代碼演示如何在py中獲取這些信息:
1 import requests 2 3 response = requests.get('https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=%E5%9B%BE%E7%89%87&rsv_pq=fe75916b0003c82f&rsv_t=8a18mej7NYPhMUacBIRKs36oA1Uxi8xZHEZEdSJdlRUPXjHxAnwVX7%2BuE5g&rqlang=cn&rsv_enter=1&rsv_sug2=0&inputT=996&rsv_sug4=1770') 4 5 print(response.text) 6 print('-----華麗的分割線-----') 7 print(response.status_code) 8 9 》》》輸出: 10 <html> 11 <head> 12 <script> 13 location.replace(location.href.replace("https://","http://")); 14 </script> 15 </head> 16 <body> 17 <noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript> 18 </body> 19 </html> 20 -----華麗的分割線----- 21 200?
?
那我們能抓取一些怎樣的數(shù)據(jù)呢?其實(shí)只要能請(qǐng)求到的,我們都能獲取,只是如何去再解析他而已。
像網(wǎng)頁(yè)文本,如HTML文檔,Json格式文本等;
像圖片,我們獲取到的是二進(jìn)制文件,保存為圖片格式;
像視頻,同樣為二進(jìn)制文件,保存為視頻格式即可。
?
那接下來(lái)的問(wèn)題就是怎樣來(lái)進(jìn)行網(wǎng)頁(yè)的解析:
(四)如何解析與保存
我們可以直接處理,也可以Json解析,或者正則表達(dá)式解析HTML標(biāo)簽,或者用一些解析庫(kù)如BeautifulSoup,PyQuery,XPath。
當(dāng)我們獲取數(shù)據(jù)后如何保存呢,我們可以有如下幾種方式保存:
?
以上就是對(duì)爬蟲的一個(gè)基本框架的解釋,感謝閱讀,后續(xù)再見(jiàn)!
?
轉(zhuǎn)載于:https://www.cnblogs.com/boru-computer/p/9692018.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 难缠的this
- 下一篇: Java课堂测试01及感想