說(shuō)說(shuō)我在爬蟲(chóng)中常用的8個(gè)技巧蕊爵,最后一個(gè)屢試不爽

今天跟大家分享幾個(gè)

我在爬蟲(chóng)中用到的技巧

技巧Ⅰ

爬取人家網(wǎng)站的時(shí)候頻率不要太高,

有事沒(méi)事睡一會(huì)删铃,睡久了沒(méi)效率

睡短了耳贬,被反爬了,那就尷尬了....

隨機(jī)數(shù)更具有欺騙性

所以睡多久,random決定猎唁!

importtime

importrandom

foriinrange(1,11):

time?=?random.random()*5

print(f'第{i}次睡了:',?time,'s')

'''

第1次睡了:?0.6327309035891232 s

第2次睡了:?0.037961811128097045 s

第3次睡了:?0.7443093721610153 s

第4次睡了:?0.564336149517787 s

第5次睡了:?0.39922345839757245 s

第6次睡了:?0.13724989845026703 s

第7次睡了:?0.7877693301824763 s

第8次睡了:?0.5641490602064826 s

第9次睡了:?0.05517343036931721 s

第10次睡了:?0.3992618299505627 s

'''

所以可以試著在爬蟲(chóng)代碼加入這句代碼

讓子彈飛一會(huì)

time.sleep(random.random()*5)


技巧Ⅱ

User-Agent中文名為用戶代理咒劲,簡(jiǎn)稱 UA,

它是一個(gè)特殊字符串頭诫隅,使得服務(wù)器能夠識(shí)別客戶使用的操作系統(tǒng)及版本腐魂、CPU 類型、瀏覽器及版本逐纬、瀏覽器渲染引擎蛔屹、瀏覽器語(yǔ)言、瀏覽器插件等豁生。

簡(jiǎn)單來(lái)說(shuō)就是模擬瀏覽器去訪問(wèn)頁(yè)面兔毒,

這樣才不會(huì)被網(wǎng)站反爬到。

但是哪里去搞user-agnet呢甸箱?

隨機(jī)數(shù)更具有欺騙性

所以哪里搞育叁?李相赫決定!

fromfake_useragentimportUserAgent

foriinrange(1,11):

ua?=?UserAgent().random

print(f'第{i}次的ua是',?ua)

'''

第1次的ua是?Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/29.0.1547.62?Safari/537.36

第2次的ua是?Mozilla/5.0?(Windows?NT?6.1;?rv:21.0)?Gecko/20130401?Firefox/21.0

第3次的ua是?Mozilla/5.0?(Macintosh;?U;?Intel?Mac?OS?X?10_6_6;?es-es)?AppleWebKit/533.20.25?(KHTML,?like?Gecko)?Version/5.0.4?Safari/533.20.27

第4次的ua是?Mozilla/5.0?(X11;?CrOS?i686?4319.74.0)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/29.0.1547.57?Safari/537.36

第5次的ua是?Mozilla/5.0?(Macintosh;?U;?Intel?Mac?OS?X?10_6_6;?fr-ch)?AppleWebKit/533.19.4?(KHTML,?like?Gecko)?Version/5.0.3?Safari/533.19.4

第6次的ua是?Mozilla/5.0?(X11;?OpenBSD?i386)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/36.0.1985.125?Safari/537.36

第7次的ua是?Mozilla/5.0?(X11;?NetBSD)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/27.0.1453.116?Safari/537.36

第8次的ua是?Mozilla/5.0?(X11;?Linux?i586;?rv:31.0)?Gecko/20100101?Firefox/31.0

第9次的ua是?Mozilla/4.0?(compatible;?MSIE?8.0;?Windows?NT?6.1;?WOW64;?Trident/4.0;?SLCC2;?.NET?CLR?2.0.50727;?.NET?CLR?3.5.30729;?.NET?CLR?3.0.30729;?Media?Center?PC?6.0;?Zune?3.0)

第10次的ua是?Mozilla/5.0?(Windows?NT?5.1)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/31.0.1650.16?Safari/537.36

'''

夠用不芍殖?老板

所以可以試著在爬蟲(chóng)代碼加入這句代碼

讓ua更具有欺騙性

headers= {'User-Agent':str(UserAgent().random)}


技巧Ⅲ

讓你事半功倍的瀏覽器插件

插件使用之前:

插件使用之后:

插件在哪里下載豪嗽?

技巧Ⅳ

巧用pprint

這跟上面那個(gè)效果差不多,只不過(guò)剛才那個(gè)是在瀏覽器中查看的

而這個(gè)我們是在pycharm中查看的

來(lái)看效果吧

print()打印豌骏,不知道你感覺(jué)如何龟梦,我一臉懵逼

importrequests

url?='https://www.douyu.com/gapi/rknc/directory/yzRec/1'

resp?=?requests.get(url).json()

print(resp)

pprint()打印,這種結(jié)構(gòu)看起來(lái)如何呢肯适?

frompprintimportpprint

importrequests

url?='https://www.douyu.com/gapi/rknc/directory/yzRec/1'

resp?=?requests.get(url).json()

pprint(resp)


技巧Ⅴ

對(duì)于頁(yè)面解析最強(qiáng)大的當(dāng)然是正則表達(dá)式变秦,這個(gè)對(duì)于不同網(wǎng)站不同的使用者都不一樣,就不用過(guò)多的說(shuō)明框舔,附兩個(gè)比較好的網(wǎng)址:

正則表達(dá)式入門:

http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

正則表達(dá)式在線測(cè)試:

http://tool.oschina.net/regex/

其次就是解析庫(kù)了蹦玫,常用的有兩個(gè)lxml和BeautifulSoup,對(duì)于這兩個(gè)的使用介紹兩個(gè)比較好的網(wǎng)站:

lxml:http://my.oschina.net/jhao104/blog/639448

BeautifulSoup:http://cuiqingcai.com/1319.html

對(duì)于這兩個(gè)庫(kù)刘绣,我的評(píng)價(jià)是樱溉,都是HTML/XML的處理庫(kù),

Beautifulsoup純python實(shí)現(xiàn)纬凤,效率低福贞,但是功能實(shí)用,

比如能用通過(guò)結(jié)果搜索獲得某個(gè)HTML節(jié)點(diǎn)的源碼停士;

lxml C語(yǔ)言編碼挖帘,高效完丽,支持Xpath。


技巧Ⅵ

在一些網(wǎng)站服務(wù)中拇舀,除了對(duì) user-agent 的身份信息進(jìn)行檢測(cè)逻族、

也對(duì)客戶端的 ip 地址做了限制,

如果是同一個(gè)客戶端訪問(wèn)此網(wǎng)站服務(wù)器的次數(shù)過(guò)多就會(huì)將其識(shí)別為爬蟲(chóng)骄崩,

因而聘鳞,限制其客戶端 ip 的訪問(wèn)。這樣的限制給我們的爬蟲(chóng)帶來(lái)了麻煩要拂,所以使用代理 ip 在爬蟲(chóng)中是非常有必要的抠璃。

這里我給大家提供一下兩個(gè)網(wǎng)站供參考

66代理:http://www.66ip.cn/6.html

快代理:https://www.kuaidaili.com/free/

大家可以將這些ip使用爬蟲(chóng)下載到本地,然后檢查每一個(gè)ip的狀態(tài)碼判斷其是否可用脱惰。

這樣每次使用爬蟲(chóng)下載文件的時(shí)候搏嗡。

只需使用random隨機(jī)使用一個(gè)就可以。

技巧Ⅶ

驗(yàn)證碼我們?cè)诤芏嗑W(wǎng)站會(huì)遇到枪芒,如果請(qǐng)求量大了之后就會(huì)遇到驗(yàn)證碼的情況彻况。

最讓人詬病的12306谁尸,其實(shí)也是一定程度上的防止非正當(dāng)請(qǐng)求的產(chǎn)生舅踪。

對(duì)于驗(yàn)證碼,可以通過(guò)OCR來(lái)識(shí)別圖片良蛮,Github上面有很多大神分享的代碼可以用抽碌,可以去看看。

簡(jiǎn)單的OCR識(shí)別驗(yàn)證碼:

fromPILimportImage

importtesserocr

#tesserocr識(shí)別圖片的2種方法

img?=?Image.open("code.jpg")

verify_code1?=?tesserocr.image_to_text(img)

#print(verify_code1)

verify_code2?=?tesserocr.file_to_text("code.jpg")


技巧Ⅷ

headers這應(yīng)該是最常見(jiàn)的决瞳,最基本的反爬蟲(chóng)手段货徙,主要是初步判斷你是否是真實(shí)的瀏覽器在操作。

遇到這類反爬機(jī)制皮胡,可以直接在自己寫(xiě)的爬蟲(chóng)中添加Headers痴颊,將瀏覽器的User-Agent復(fù)制到爬蟲(chóng)的Headers中。

以edge瀏覽器為例屡贺,瀏覽器中打開(kāi)頁(yè)面蠢棱;

第一步:點(diǎn)擊上圖中“網(wǎng)絡(luò)”標(biāo)簽,然后刷新或載入頁(yè)面

第二步:在右側(cè)“標(biāo)頭”下方的“請(qǐng)求標(biāo)頭”中的所有信息都是headers內(nèi)容甩栈,添加到請(qǐng)求中即可泻仙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市量没,隨后出現(xiàn)的幾起案子玉转,更是在濱河造成了極大的恐慌,老刑警劉巖殴蹄,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件究抓,死亡現(xiàn)場(chǎng)離奇詭異猾担,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)刺下,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門垒探,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人怠李,你說(shuō)我怎么就攤上這事圾叼。” “怎么了捺癞?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵夷蚊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我髓介,道長(zhǎng)惕鼓,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任唐础,我火速辦了婚禮箱歧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘一膨。我一直安慰自己呀邢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布豹绪。 她就那樣靜靜地躺著价淌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞒津。 梳的紋絲不亂的頭發(fā)上蝉衣,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音巷蚪,去河邊找鬼病毡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛屁柏,可吹牛的內(nèi)容都是我干的啦膜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼前联,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼功戚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起似嗤,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啸臀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乘粒,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豌注,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灯萍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轧铁。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旦棉,靈堂內(nèi)的尸體忽然破棺而出齿风,到底是詐尸還是另有隱情,我是刑警寧澤绑洛,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布救斑,位于F島的核電站,受9級(jí)特大地震影響真屯,放射性物質(zhì)發(fā)生泄漏脸候。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一绑蔫、第九天 我趴在偏房一處隱蔽的房頂上張望运沦。 院中可真熱鬧,春花似錦配深、人聲如沸携添。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)薪寓。三九已至,卻和暖如春澜共,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锥腻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工嗦董, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瘦黑。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓京革,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親幸斥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匹摇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容