苻玲美
摘要:數(shù)據(jù)是新一輪技術(shù)革命最重要的生產(chǎn)資料,爬蟲是獲取數(shù)據(jù)最直接的方式,但爬出來的數(shù)據(jù)代碼夾雜文字,面對大量雜亂的代碼夾雜信息,通過正則表達式檢索匹配出有用的信息,過濾無用的數(shù)據(jù)。本文介紹正則表達式在python爬蟲中的應用,總結(jié)python爬蟲中正則表達式的應用技巧。
關(guān)鍵詞:爬蟲;python;正則表達式;數(shù)據(jù)
中圖分類號:TP311? ? 文獻標識碼:A
文章編號:1009-3044(2019)25-0253-02
網(wǎng)絡爬蟲是一個非常注重實踐性而且實用性很強的編程技能,寫爬蟲分析股票走勢,上鏈家爬房源分析房價趨勢,爬知乎、爬豆瓣、爬新浪微博、爬影評,等等。人工智能時代,對數(shù)據(jù)的依賴越來越重要,數(shù)據(jù)主要的來源就是通過爬蟲獲取,通過爬取獲取數(shù)據(jù)可以進行市場調(diào)研和數(shù)據(jù)分析。但爬蟲時收集回來的一般是字符流,我們需要從中篩選有用的信息,而用正則表達式可以輕松地完成這一任務。
1正則表達式與爬蟲
爬蟲四個主要步驟:
· 明確目標 (要知道你準備在哪個范圍或者網(wǎng)站去搜索)
· 爬 (將所有的網(wǎng)站的內(nèi)容全部爬下來)
· 取 (獲取有用信息、去掉沒用的數(shù)據(jù))
· 處理數(shù)據(jù)(按照我們想要的方式存儲和使用)
那么在?。ㄎ谋具^濾這塊)最強大的就是正則表達式,更是python爬蟲世界必不可少利器。
什么是正則表達式,python爬蟲使用正則表達式的方法。
正則表達式(Regular Expression,簡稱Regex或RE)又稱為正規(guī)表示法或常規(guī)表示法,常常用來檢索、替換那些符合某個模式的文本,它首先設定好了一些特殊的字及字符組合,通過組合的“規(guī)則字符串”來對表達式進行過濾,從而獲取或匹配我們想要的特定內(nèi)容。它具有靈活、邏輯性和功能性非常的強,能迅速地通過表達式從字符串中找到所需信息的優(yōu)點。
正則表達式的常見語法格式:
在 Python 中,我們可以使用內(nèi)置的 re 模塊來使用正則表達式。re模塊提供了3個方法對輸入的字符串進行確切的不同要求查詢。每一個方法都接收一個正則表達式和一個待查找匹配的字符串。
(1)match()方法- 從頭匹配:
match()方法的工作方式是只有當被搜索字符串的開頭匹配模式的時候它才能查找到匹配對象。
(2)使用re.search查找 – 匹配任意位置:
search()方法和match()類似,不過search()方法不會限制我們只從字符串的開頭查找匹配。search()方法會在它查找到一個匹配項之后停止繼續(xù)查找。
(3)使用 re.findall – 所有匹配對象:
在Python中我使用的最多的查找方法是findall()方法。當我們調(diào)用findall()方法,我們可以非常簡單地得到一個所有匹配模式的列表,
2 正則表達式抓取網(wǎng)絡數(shù)據(jù)常見方法
在 HTML 中, 基本上所有的實體內(nèi)容, 都會有個成對的 tag 來框住它。 而這個被 tag 住的內(nèi)容, 就可以被展示成不同的形式。header 和 body。 在 header 中, 存放這一些網(wǎng)頁的網(wǎng)頁的元信息, 比如說 title, 這些信息是不會被顯示到你看到的網(wǎng)頁中的. 這些信息大多數(shù)時候是給瀏覽器看, 或者是給搜索引擎的爬蟲看。HTML 的第二大塊是 body, 這個部分才是你看到的網(wǎng)頁信息。網(wǎng)頁中的視頻, 圖片和文字等都存放在這里。
tag 就是主標題, 我們看到呈現(xiàn)出來的效果就是大一號的字。 里面的文字就是一個段落。 里面都是一些鏈接。是層用來存放一塊信息。在html還有很多這樣的tag,信息都是放在這些 tag 中的。爬蟲想要做的就是根據(jù)這些 tag 來找到合適的信息。1)爬取網(wǎng)頁
通過下列操作成功爬取了百度的首頁。
2) 抓取title標簽間的內(nèi)容
Print data打印出來抓取的網(wǎng)頁,這就證明了我們能夠成功讀取這個網(wǎng)頁的所有信息了。但我們還沒有對網(wǎng)頁的信息進行匯總和利用。我們發(fā)現(xiàn)想要提取一些形式的信息,合理的利用 tag 的名字十分重要。我們想用代碼找到這個網(wǎng)頁的 title,選好要使用的 tag 名稱
title=re.findall(r"
print(title[0])
3)抓取
標簽間的內(nèi)容
想要找到中間的那個段落
的內(nèi)容跟
4)爬取所有的連接的網(wǎng)址。
有些時候,我們需要獲取網(wǎng)站中所有的超鏈接并保存在文檔里進行應用。一個一個獲取是不現(xiàn)實的,我們把網(wǎng)頁爬取出來后,用正則表達式去在索出來。超鏈接在網(wǎng)頁中的格式是:你好,請登錄。網(wǎng)址以href=“開頭,以”結(jié)束。因此正則表達p=re.findall(rhref=”(.*?)”),data),其中data存放抓取的網(wǎng)頁信息,r進行轉(zhuǎn)義。
3 總結(jié)
大數(shù)據(jù)時代,我們需要海量的信息去分析市場、分析客戶。而爬蟲獲取的數(shù)據(jù)摻雜著大量的代碼和沒用的數(shù)據(jù)。通過 正則表達式篩選有用的信息,過濾無用的數(shù)據(jù)。本文介紹爬蟲與正則表達式的關(guān)系,正則表達式的語法,re模塊的幾種應用正則表達式方法的區(qū)別。最后通過案例總結(jié)了python爬蟲中正則表達式的使用技巧。
參考文獻:
[1]熊暢.基于Python爬蟲技術(shù)的網(wǎng)頁數(shù)據(jù)抓取與分析研究[J]. 數(shù)字技術(shù)與應用,2017(9):45-46.
[2]魏冬梅,何忠秀,唐建梅.基于Python的Web信息獲取方法研究[J].軟件導刊,2018, 17(1):41-43.
[3]萬磊,嚴道波,楊勇,等.基于文本挖掘的95598投訴工單關(guān)鍵信息提取分析[J].電力與能源,2019,40(01):76-78.
[4]Jeffrey E.F.Friedl(著).精通正則表達式[M].余晟,譯.北京:電子工業(yè)出版社,2008.
【通聯(lián)編輯:聞翔軍】