Python版本3.8.0龄章,開發(fā)工具:Pycharm
爬蟲流程:
1. 獲取網(wǎng)頁url(網(wǎng)址)
url:統(tǒng)一資源定位符鳞疲,是要爬取目標(biāo)網(wǎng)頁的地址约啊,例如豆瓣電影:https://movie.douban.com/
2. 發(fā)出請(qǐng)求哑梳,獲得響應(yīng)
用戶在瀏覽器輸入網(wǎng)址之后荣月,經(jīng)過DNS 服務(wù)器,找到服務(wù)器主機(jī)袭蝗,向服務(wù)器發(fā)出訪問請(qǐng)求唤殴,服務(wù)器經(jīng)過解析之后,發(fā)送給用戶的瀏覽器HTML到腥、JS朵逝、CSS等文件,瀏覽器解析出來呈現(xiàn)給用戶乡范。
瀏覽器沒有信息配名,只負(fù)責(zé)發(fā)送請(qǐng)求和得到響應(yīng)。服務(wù)器中存儲(chǔ)大量信息晋辆,通過響應(yīng)請(qǐng)求將數(shù)據(jù)返回給瀏覽器進(jìn)行顯示渠脉。
大部分服務(wù)器只能響應(yīng)瀏覽器的請(qǐng)求,所以通過 Python 編寫的爬蟲腳本瓶佳,如果沒有偽裝成瀏覽器芋膘,是請(qǐng)求不到數(shù)據(jù)的。
3. 提取所需數(shù)據(jù)
服務(wù)器返回給瀏覽器的數(shù)據(jù)包括HTML 片段霸饲、XML 文檔为朋、JSON 文件等數(shù)據(jù)。針對(duì)不同數(shù)據(jù)選擇不同的方式進(jìn)行數(shù)據(jù)提取厚脉。
常用解析方式有:
re 正則表達(dá)式习寸;
? ? ?html.parser;
? ? ?BeautifulSoup傻工;
? ? ?lxml(xpath技術(shù))霞溪;
? ? ?ElementTree(解析xml)孵滞;?
4. 保存數(shù)據(jù)
一般對(duì)規(guī)整化的數(shù)據(jù)直接保存成文件,放在本地鸯匹。當(dāng)然坊饶,也可以通過連接數(shù)據(jù)庫保存在數(shù)據(jù)庫中
你還需要了解
1. 爬蟲是什么?
爬蟲忽你,即網(wǎng)絡(luò)爬蟲幼东。當(dāng)你輸入網(wǎng)址或者程序解析到新的網(wǎng)址,這個(gè)網(wǎng)址就是一個(gè)通道科雳,爬蟲通過這個(gè)通道到達(dá)新的地址根蟹,并通過編程獲取新地址的數(shù)據(jù)。說直接點(diǎn):爬蟲就是通過編程從網(wǎng)上獲取數(shù)據(jù)糟秘。
2. 什么是瀏覽器請(qǐng)求简逮?
例如,當(dāng)你在登錄一個(gè)網(wǎng)站時(shí)尿赚,需要輸入用戶名和密碼散庶,此時(shí)會(huì)有兩種數(shù)據(jù)請(qǐng)求方式:GET 方式和POST 方式。
GET方式:
直接將參數(shù)寫在網(wǎng)址中凌净,構(gòu)建一個(gè)帶參數(shù)的url悲龟。例如 https://www.wz.com?username='zhiqiuxiaomeng'&passwd='123456',將 username 和 passwd 直接帶入?yún)?shù)中冰寻。
POST方式:
將參數(shù)保存成一個(gè)變量须教,在請(qǐng)求過程中將變量發(fā)送給服務(wù)器。例如 values = {"username":"zhiqiuxiaomeng","passwd":"123456"}斩芭,在發(fā)送請(qǐng)求的時(shí)候?qū)?values 一起發(fā)送給服務(wù)器轻腺。
3. 什么是服務(wù)器響應(yīng)?
服務(wù)器在接收到瀏覽器請(qǐng)求后划乖,對(duì)請(qǐng)求進(jìn)行驗(yàn)證贬养,并返回相應(yīng)的驗(yàn)證結(jié)果給瀏覽器,瀏覽器對(duì)返回結(jié)果解析琴庵,呈現(xiàn)給用戶误算。
服務(wù)器返回結(jié)果包括兩種:一種是返回?cái)?shù)據(jù),在瀏覽器端進(jìn)行刷新填充细卧;一種是返回一個(gè)新的頁面尉桩,在瀏覽器端進(jìn)行跳轉(zhuǎn)。數(shù)據(jù)類型包括 html贪庙、css、json 等翰苫。
4. 什么是html止邮、CSS这橙、jsp、xml导披?
html 是超文本標(biāo)記語言屈扎,通俗的說就是你現(xiàn)在看到的這個(gè)網(wǎng)頁的源代碼,不同的瀏覽器都會(huì)對(duì)這個(gè) html 文本解析撩匕,得到一個(gè)網(wǎng)頁呈現(xiàn)在瀏覽器中鹰晨。
css 叫層疊樣式表,就來美化 html 頁面的止毕,現(xiàn)在主流的是配合 DIV 一起排版模蜡。
jsp 是一種服務(wù)器編程技術(shù),主要用 java 寫服務(wù)器頁面扁凛,這些頁面支持 java 語義的標(biāo)記忍疾,到時(shí)候都會(huì)通過http傳輸?shù)接脩舻臑g覽器解析為標(biāo)準(zhǔn)的 html 頁面。
xml 為可擴(kuò)展的標(biāo)記語言谨朝,就是可以自定義 DOM 節(jié)點(diǎn)卤妒,現(xiàn)在用 XML 用來支持異步數(shù)據(jù)傳輸較多,比如JSON字币,很多原生的 API 也都是 XML 格式的
在瀏覽器解析的網(wǎng)頁中则披,雖然用戶看到的都是中文(或英文),但實(shí)際編碼不盡相同洗出,有utf-8編碼士复,有g(shù)bk編碼,可能還會(huì)有?iso8859-1 編碼共苛。
5. 什么是ascll判没、unicode?
ascll 編碼:使用一個(gè)字節(jié)進(jìn)行編碼(因?yàn)橛⑽暮蛿?shù)字一個(gè)字節(jié)足夠)
unicode 編碼:使用兩個(gè)字節(jié)進(jìn)行編碼(因?yàn)橹形闹辽傩枰獌蓚€(gè)字節(jié))
utf-8 編碼:可變長編碼隅茎,英文通常是1個(gè)字節(jié)澄峰,漢字是三個(gè)及以上(生僻字)字節(jié)(節(jié)省存儲(chǔ)空間)
注:utf-8 編碼是unicode 編碼的實(shí)現(xiàn)方式之一
6. 什么是 utf-8、gb2312辟犀、gbk俏竞、iso8859-1 ?
GB2312 是國家制定的漢字編碼標(biāo)準(zhǔn)堂竟,使用雙子節(jié)進(jìn)行編碼魂毁,共收入6763個(gè)漢字和682個(gè)非漢字圖形字符。
GBK 即對(duì)國標(biāo)編碼的擴(kuò)展出嘹,在GB2312 的基礎(chǔ)上進(jìn)行擴(kuò)展形成的席楚,使用雙子節(jié)編碼方式,共收入21003個(gè)漢字税稼,從而大大滿足了漢字使用的需要烦秩。
ISO-8859-1 編碼是單字節(jié)編碼?垮斯,向下兼容ASCII,是許多歐洲國家使用的編碼標(biāo)準(zhǔn)
準(zhǔn)備工作大概就這么些只祠,你們準(zhǔn)備好了嗎兜蠕?