不管你是待業(yè)還是失業(yè),在這個(gè)被互聯(lián)網(wǎng)圍繞的時(shí)代里,選擇python寫一個(gè)爬蟲,就多了一項(xiàng)技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個(gè)專業(yè)的優(yōu)勢到底體現(xiàn)在哪里:學(xué)習(xí)python網(wǎng)絡(luò)爬蟲的一點(diǎn)心得??。
網(wǎng)絡(luò)爬蟲(英語:web crawler),也叫網(wǎng)絡(luò)蜘蛛(spider),是一種用來自動(dòng)瀏覽萬維網(wǎng)的網(wǎng)絡(luò)機(jī)器人。簡單來說就是你寫個(gè)腳本去抓別人網(wǎng)頁上的內(nèi)容。舉個(gè)例子,上面這張圖片是前程無憂招聘網(wǎng)站上關(guān)于python招聘的一些信息,找工作的時(shí)候你想把這些數(shù)據(jù)抓下來放進(jìn)一個(gè)excel表格里面方便你篩選排序?qū)Ρ冗x擇,這時(shí)你一個(gè)一個(gè)鏈接點(diǎn)開去復(fù)制里面的對(duì)應(yīng)條目內(nèi)容,顯然這個(gè)簡單重復(fù)的操作做多了會(huì)讓你抓狂,這時(shí)你寫個(gè)爬蟲去幫你機(jī)械的抓取,比人工一個(gè)個(gè)復(fù)制來的輕松。(文末贈(zèng)送我練習(xí)時(shí)寫的前程無憂爬蟲)當(dāng)然,如果你只是想簡單的復(fù)制某一個(gè)網(wǎng)站上的某張圖片或者某段話,寫個(gè)爬蟲就顯得多此一舉了,畢竟寫個(gè)小腳本還是要點(diǎn)時(shí)間的。寫這篇文章的初衷是想介紹一下爬蟲的大概樣貌和爬蟲學(xué)習(xí)中兩個(gè)重要的點(diǎn),畢竟當(dāng)初自己學(xué)的時(shí)候找不到重點(diǎn),有些視頻半天不知道他在干啥。先說說爬蟲大概是怎么玩的。文章開頭的引用維基百科對(duì)爬蟲的解釋,說它是網(wǎng)絡(luò)機(jī)器人,其實(shí)具體的就是寫一段代碼,向某一網(wǎng)址(URL)發(fā)送訪問請(qǐng)求,這個(gè)動(dòng)作對(duì)應(yīng)的是我們?nèi)斯ぴL問網(wǎng)站時(shí)把網(wǎng)址輸進(jìn)去或者百度搜索找到網(wǎng)頁之后點(diǎn)擊進(jìn)入。網(wǎng)站服務(wù)器接收到訪問請(qǐng)求后,返回響應(yīng)文件,對(duì)應(yīng)的就是我們看到的頁面,只是爬蟲拿到的是一個(gè)網(wǎng)頁文本,而我們看到的是經(jīng)過瀏覽器排版的的網(wǎng)頁。拿到響應(yīng)文件之后,寫一些限制性的語句,告訴程序我要哪塊內(nèi)容,拿到內(nèi)容后以自己想要的方式保存就行了。爬蟲的流程:構(gòu)建URL-發(fā)送請(qǐng)求-獲取響應(yīng)-提取內(nèi)容-保存。來說說*個(gè)重要工作:構(gòu)建URL。探索要爬的網(wǎng)站的URL規(guī)律,按規(guī)律構(gòu)建URL。下面是前程無憂搜索昆明的“python”相關(guān)職位彈出來的網(wǎng)頁的URL。 = " # 昆明 url_wei = ".html?lang=c&stype=&=0000&workyear=99&cotype=99&" "=99&jobterm=99&=99&=99&" "lonlat=0%2C0&radius=-1&ord_field=0&=9&fromType=&dibiaoid=" "0&address=&line=&=00&from=&welfare="像這樣把URL前后端不變的東西挑出來。key_word = input("你要爬取的職位名稱:") zwmc = urllib.parse.quote(key_word) start_page = int(input("你要爬取的起始頁:")) end_page = int(input("你要爬取的結(jié)束頁:")) for page in range(start_page,end_page+1): page_url = self.url_tou + zwmc + ",2," + str(page) + self.url_wei上面是構(gòu)建URL的語句,其中根據(jù)用戶需求不同而改變的就是“zwmc”和“page”,把各條字符串連起來就是一個(gè)完整的URL了。 有了URL用python的一些第三方庫模擬用戶發(fā)送請(qǐng)求,得到響應(yīng),接下來就是第二個(gè)重要工作:解析網(wǎng)頁。網(wǎng)頁拿回來了,要搞清楚別人的網(wǎng)頁文檔類型是什么,你需要的數(shù)據(jù)放在哪個(gè)位置,才能準(zhǔn)確的定位自己需要的內(nèi)容。上圖是一個(gè)網(wǎng)頁文檔的部分截圖,網(wǎng)頁的內(nèi)容都是用前標(biāo)簽和后標(biāo)簽卡住的,比如我需要這個(gè)崗位的薪資信息,我就寫一條語句告訴程序,我要前標(biāo)簽<span class="t4">和后標(biāo)簽</span>中間卡住那個(gè)東西,提取內(nèi)容的方法和途徑很多,比如用正則表達(dá)式、、x-path、json-path等等。順便說個(gè)相關(guān)的小tricks:不知道你有沒有遇到過那種不讓復(fù)制內(nèi)容的網(wǎng)站,如果遇到了想要其中的某段內(nèi)容,可以試試在網(wǎng)頁上右鍵選擇“查看網(wǎng)頁源代碼”,ctrl+F搜索到你要的內(nèi)容復(fù)制就行了。以上只是簡單說了一下我個(gè)人覺得寫爬蟲過程中比較重要的兩個(gè)環(huán)節(jié),其他的還有很多細(xì)節(jié)和坑要填,如果真的想學(xué)一個(gè)東西,填坑是必然的。簡單列一下我學(xué)習(xí)過程中遇到的坑:首先是抓包,一次請(qǐng)求會(huì)返回很多響應(yīng),哪個(gè)才是你需要的?然后是構(gòu)建請(qǐng)求頭的問題,很多網(wǎng)站都有反爬蟲機(jī)制,怎么才能偽裝的更像用戶在用瀏覽器上網(wǎng)?再然后是有些網(wǎng)站直接加密自己的數(shù)據(jù),你響應(yīng)拿回的關(guān)鍵數(shù)據(jù)是一串亂碼,腫么破?再再然后是一些細(xì)小的坑,如get請(qǐng)求和post請(qǐng)求是什么?Ajax異步加載的網(wǎng)頁怎么搞?返回的響應(yīng)是json格式怎么辦?有的網(wǎng)頁有壓縮怎么辦?*就是各種python庫的選擇,關(guān)于請(qǐng)求網(wǎng)頁的工具,我只用過urllib和requests,推薦人性化點(diǎn)的requests,解析網(wǎng)頁的庫,推薦和x-path,正則表達(dá)式可以學(xué)學(xué),有用。本文只是涉及到爬蟲的一點(diǎn)皮毛,實(shí)際爬蟲的體系很龐大,用處也很多,內(nèi)容復(fù)雜,有興趣的請(qǐng)自行探索。我學(xué)爬蟲前后大概用了一個(gè)月時(shí)間,大的爬蟲框架不行,小的實(shí)用型的爬蟲還是沒問題的(對(duì)大多數(shù)普通網(wǎng)頁而言),所以想入門并不難,加油吧騷年。*把文中舉例的這個(gè)前程無憂的爬蟲分享出來,只要你會(huì)下載個(gè)python安裝配置好,把代碼貼進(jìn)去就能跑。這是運(yùn)行時(shí)需要輸入的3個(gè)參數(shù)。這是爬完的效果圖。有興趣的朋友可以關(guān)注我的微信公眾號(hào)“凌云水手記”回復(fù)“前程無憂爬蟲”即可下載。附上我覺得將爬蟲講的比較好的一個(gè)B站資源,真心剛學(xué)的時(shí)候看了好多視頻,有些人是咋咋呼呼的,不知所云,確實(shí)他會(huì),但是他講不出來啊。
就拿大數(shù)據(jù)說話,優(yōu)勢一目了然,從事IT行業(yè),打開IT行業(yè)的新大門,找到適合自己的培訓(xùn)機(jī)構(gòu),進(jìn)行專業(yè)和系統(tǒng)的學(xué)習(xí)。
只要一個(gè)電話
我們免費(fèi)為您回電