何为爬虫技术
一、什么是爬蟲
 ??????? 所謂爬蟲,其本質(zhì)是一種計(jì)算機(jī)程序,它的行為看起來就像是蜘蛛在網(wǎng)上面爬行一樣,順著互聯(lián)網(wǎng)這個(gè)“網(wǎng)”,一條線一條線地“爬行”。所以爬蟲在英文中又叫作“Spider”,正是蜘蛛這個(gè)單詞。
??????? 由于傳統(tǒng)低效率的數(shù)據(jù)收集手段越來越不能滿足當(dāng)今日益增長的數(shù)據(jù)需求,但是面對(duì)互聯(lián)網(wǎng)這樣一個(gè)由數(shù)據(jù)構(gòu)建而成的海洋,如何有效獲取數(shù)據(jù),如何獲取有效數(shù)據(jù)都是極其勞神費(fèi)力、浪費(fèi)成本、制約效率的事情。很多時(shí)候,按照傳統(tǒng)手段完成一個(gè)項(xiàng)目可能80%~90%的時(shí)間用于獲取和處理數(shù)據(jù)。這樣的矛盾沖突,擱在以往,擱在普通的人和普通的公司身上,除了用金錢去填補(bǔ)(直接購買數(shù)據(jù))之外,似乎只有默默認(rèn)命了。
 ??????? 然而現(xiàn)在,終于有了扭轉(zhuǎn)之機(jī),那就是駕馭爬蟲技術(shù)。
 二、爬蟲可以做什么
 
 
2.1 收集數(shù)據(jù)
 ??????? 爬蟲可以用來收集數(shù)據(jù)。這也是爬蟲最直接、最常用的使用方法。由于爬蟲是一種程序,程序的運(yùn)行速度極快,而且不會(huì)因?yàn)樽鲋貜?fù)的事情就感覺到疲勞,因此使用爬蟲來獲取大量的數(shù)據(jù),就變得極其簡(jiǎn)單和快捷了。由于現(xiàn)在99%以上的網(wǎng)站都是基于模板開發(fā)的,使用模板可以快速生成相同版式、不同內(nèi)容的大量頁面。因此,只要針對(duì)一個(gè)頁面開發(fā)出了爬蟲,那么這個(gè)爬蟲也能爬取基于同一個(gè)模板生成的不同頁面。這種爬蟲稱為定向爬蟲。
2.2 信息調(diào)查
 ??????? 數(shù)據(jù)不會(huì)說謊,特別是數(shù)據(jù)量極大的數(shù)據(jù),人工偽造的總會(huì)和自然生成的存在區(qū)別。而在以前,對(duì)于數(shù)據(jù)量極大的數(shù)據(jù)進(jìn)行搜集是一件非常困難的事情,但現(xiàn)在有了爬蟲的幫助,很多欺騙行為(比如,刷單等)都會(huì)赤裸裸地暴露在陽光下。
2.3 刷流量與秒殺活動(dòng)等
 ??????? 刷流量是爬蟲天然自帶的功能。當(dāng)爬蟲訪問了一個(gè)網(wǎng)站時(shí),如果這個(gè)爬蟲隱藏得很好,網(wǎng)站不能識(shí)別這一次訪問來自于爬蟲,那么就會(huì)把它當(dāng)成正常訪問。于是,爬蟲就“不小心”地刷了網(wǎng)站的訪問量。除了刷流量外,爬蟲也可以參與各種秒殺活動(dòng),包括但不限于在各種電商網(wǎng)站上搶商品,搶優(yōu)惠券,搶機(jī)票和火車票。
三、爬蟲開發(fā)技術(shù)
 ??????? 爬蟲的主要目的是獲取網(wǎng)頁內(nèi)容并解析。只要能達(dá)到這個(gè)目的,用什么方法都沒有問題。由于Python具有語法簡(jiǎn)單、入門容易等特點(diǎn),現(xiàn)在已經(jīng)成為眾多領(lǐng)域的首選語言。當(dāng)下在Python這一門語言的幫助下,要入門開發(fā)爬蟲幾乎沒有門檻,幾行代碼就能寫出一個(gè)爬蟲。而爬蟲相關(guān)的框架更是多如牛毛,稍稍配置一下就能實(shí)現(xiàn)非常不錯(cuò)的爬取效果。
??????? 關(guān)于獲取網(wǎng)頁,比如Python的兩個(gè)第三方模塊,一個(gè)是requests,另一個(gè)是爬蟲框架Scrapy。關(guān)于解析網(wǎng)頁內(nèi)容,比如——正則表達(dá)式、XPath和BeautifulSoup。
??????? 這兩種網(wǎng)頁獲取方式和3種網(wǎng)頁解析方式可以自由搭配實(shí)現(xiàn)爬蟲效果,但由于網(wǎng)站必然不會(huì)這么輕易地讓人把數(shù)據(jù)全給拿走,因此很多網(wǎng)站都會(huì)采取各種反爬蟲措施(常規(guī)的反爬蟲措施包括但不限于訪問頻率檢查、驗(yàn)證碼、登錄驗(yàn)證、行為檢測(cè)等)。
 ??????? 所以,根據(jù)實(shí)際情況隨意使用中間人攻擊技術(shù)、自動(dòng)化技術(shù)與爬蟲技術(shù)結(jié)合等手段。實(shí)現(xiàn)自動(dòng)化的重試,自動(dòng)修改爬蟲的頭部信息,自動(dòng)更換IP,自動(dòng)處理異常和批量部署等;以達(dá)到突破了網(wǎng)站的封鎖和提高爬蟲的爬取效率。
--------------------------------------
本篇文章同步發(fā)表在博主微信公眾號(hào):
?
總結(jié)
 
                            
                        - 上一篇: Pydiction : VIM上的PYT
- 下一篇: iisnode默认不支持PUT和DELE
