老方學(xué)python | 能通過(guò)登錄認(rèn)證的爬蟲(chóng)

老方最近有個(gè)任務(wù)涕刚,是抓取某網(wǎng)站內(nèi)容嗡综。網(wǎng)絡(luò)爬蟲(chóng)是python的拿手好戲,scrapy項(xiàng)目廣為流傳就是明證杜漠。


大王讓我來(lái)上網(wǎng)极景,我把路線想一想

因?yàn)樵撊蝿?wù)只分析一個(gè)特定的網(wǎng)頁(yè)察净,所以選擇自已碼,碼完對(duì)過(guò)程中的一些要點(diǎn)記個(gè)筆記盼樟,主要包括:

  • 通過(guò)圖形驗(yàn)證碼氢卡,OCR不花錢(qián)
  • 正則表達(dá)式解析網(wǎng)頁(yè),多行晨缴、多分組
  • 依賴(lài)包安裝避坑
    以下筆記展開(kāi)

1. 不花錢(qián)的OCR如何選擇

也看了百度的paddle-ocr译秦,最終還是選了pytesseract。

  • 識(shí)別率基本過(guò)關(guān):對(duì)于簡(jiǎn)單的圖形驗(yàn)證碼击碗,略做變換處理筑悴,識(shí)別率可以達(dá)到80%。20%會(huì)出錯(cuò)稍途,通過(guò)多取幾次圖片阁吝,總歸能蒙混過(guò)關(guān)。
  • 依賴(lài)多晰房,但尚可搞定:pytesseract本身是個(gè)挺大的安裝包求摇,再加圖片處理用的opencv、顯示圖片做調(diào)試的matplotlib殊者,各自又帶了一串依賴(lài)与境,整個(gè)site-packages目錄看起來(lái)臃腫不堪。好在網(wǎng)上各類(lèi)教程詳盡猖吴,安裝過(guò)程還算順利摔刁。相比之下,paddle-ocr的宣傳資料各種炫酷海蔽,但教程看得人望而卻步


    一堆的依賴(lài)

2. 正則表達(dá)式解析網(wǎng)頁(yè)的坑

爬下來(lái)的網(wǎng)頁(yè)要提取內(nèi)容共屈,這算是爬蟲(chóng)的基本操作吧。
一開(kāi)始我用的是BeautifulSoup党窜,可以直接在文本中按照標(biāo)簽拗引、class等檢索元素,然后再做屬性的提取幌衣。但發(fā)現(xiàn)這貨不支持xpath矾削,所以要直接取特定的對(duì)象并不方便,往往要分成好幾步豁护。
改用lxml哼凯,xpath定位提取指哪打哪兒,得心應(yīng)手楚里。不過(guò)剛巧標(biāo)簽里面有個(gè)內(nèi)容是/分隔的數(shù)字断部,還得再寫(xiě)代碼拆分一下。
因?yàn)樘崛〉膬?nèi)容不算復(fù)雜班缎,re又是python的內(nèi)置庫(kù)蝴光,所以想想就干脆棄了兩個(gè)成熟的三方庫(kù)她渴,自己用正則表達(dá)式來(lái)試試。下面是取表格行的代碼:

re.findall('<TR.*?>(.*?<td.*?)</TR>', html, flags=re.MULTILINE|re.DOTALL)

貌似有點(diǎn)復(fù)雜虱疏。python官網(wǎng)關(guān)于正則的howto文檔還是很詳盡的惹骂,主要有幾個(gè)問(wèn)題要注意:

  • 換行處理:正則默認(rèn)處理單行文本,而html里面的一對(duì)標(biāo)簽之間的內(nèi)容往往有換行做瞪,比如<tr></tr>之間有好幾個(gè)單元格对粪,一般都會(huì)有好幾個(gè)換行(newline),查找函數(shù)末尾要加上一個(gè)MULTILINE装蓬。"."這個(gè)符號(hào)能夠匹配所有的字符著拭,但默認(rèn)不包括換行符,所以要加一個(gè)DOTALL牍帚。
  • 防止貪婪匹配:比如<TR.?>儡遮,在通配符后加上?暗赶,不然會(huì)一口氣找到最后一個(gè)>符號(hào)為止鄙币。

??正則表達(dá)式,老方個(gè)人比較偏愛(ài)蹂随,因?yàn)樵诤芏鄨?chǎng)合下十嘿,語(yǔ)法都是兼容的,可謂:學(xué)習(xí)一次岳锁、走遍天下绩衷。比如word辦公軟件可以拿來(lái)查找替換、前端可以拿來(lái)校驗(yàn)手機(jī)號(hào)碼激率、寫(xiě)代碼的IDE中也可以精確替換咳燕。

依賴(lài)包安裝

首先要升級(jí)pip。

比如pytesseract的python庫(kù)最少得pip9.3乒躺,而python3.8自帶的版本低了招盲,直接安裝會(huì)拋出一堆的錯(cuò)誤。
升級(jí)pip嘉冒,得用easy_install -U pip宪肖,通過(guò)pip自已來(lái)升級(jí)總是報(bào)錯(cuò)。

用國(guó)內(nèi)的鏡像

這一點(diǎn)我每次都會(huì)忘記健爬,國(guó)內(nèi)的鏡像速度快很多,畢竟這些依賴(lài)包有幾百M(fèi)么介。

pip install pytesseract       -i https://mirrors.aliyun.com/pypi/simple/

娜遵。。壤短。

opencv有四個(gè)版本设拟,我不需要GUI的功能慨仿,所以選了headless的版本,尺寸小一點(diǎn)纳胧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镰吆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跑慕,更是在濱河造成了極大的恐慌万皿,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件核行,死亡現(xiàn)場(chǎng)離奇詭異牢硅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)芝雪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)减余,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人惩系,你說(shuō)我怎么就攤上這事位岔。” “怎么了堡牡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵抒抬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我悴侵,道長(zhǎng)瞧剖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任可免,我火速辦了婚禮抓于,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浇借。我一直安慰自己捉撮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布妇垢。 她就那樣靜靜地躺著巾遭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闯估。 梳的紋絲不亂的頭發(fā)上灼舍,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音涨薪,去河邊找鬼骑素。 笑死,一個(gè)胖子當(dāng)著我的面吹牛刚夺,可吹牛的內(nèi)容都是我干的献丑。 我是一名探鬼主播末捣,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼创橄!你這毒婦竟也來(lái)了箩做?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤妥畏,失蹤者是張志新(化名)和其女友劉穎邦邦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體咖熟,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圃酵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了馍管。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郭赐。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖确沸,靈堂內(nèi)的尸體忽然破棺而出捌锭,到底是詐尸還是另有隱情,我是刑警寧澤罗捎,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布观谦,位于F島的核電站,受9級(jí)特大地震影響桨菜,放射性物質(zhì)發(fā)生泄漏豁状。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一倒得、第九天 我趴在偏房一處隱蔽的房頂上張望泻红。 院中可真熱鬧,春花似錦霞掺、人聲如沸谊路。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缠劝。三九已至,卻和暖如春骗灶,著一層夾襖步出監(jiān)牢的瞬間惨恭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工耙旦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脱羡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像轻黑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子琴昆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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