Python大神利用正規表示式教你搞定京東商品資訊

程式設計師啟航發表於2019-06-24

京東(JD.com)是中國最大的自營式電商企業,2015年第一季度在中國自營式B2C電商市場的佔有率為56.3%。如此龐大的一個電商網站,上面的商品資訊是海量的,小編今天就帶小夥伴利用正規表示式,並且基於輸入的關鍵詞來實現主題爬蟲。

首先進去京東網,輸入自己想要查詢的商品,小編在這裡以關鍵詞“狗。糧”作為搜尋物件,之後得到後面這一串網址: https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8 ,其實引數%E7%8B%97%E7%B2%AE解碼之後就是“狗。糧”的意思。那麼非常明顯,只要輸入keyword這個引數之後,將其進行編碼,就可以獲取到我們的目標網址了,請求網頁,得到響應,爾後利用選擇器便可以進行下一步的精準採集了。

在京東網上,狗。糧資訊在京東官網上的網頁原始碼如下圖所示:

Python大神利用正規表示式教你搞定京東商品資訊

狗。糧資訊在京東官網上的網頁原始碼

話不多說,直接擼程式碼,如下圖所示。小編用的是py3,也建議大家以後多用py3版本。通常URL編碼的方式是把需要編碼的字元轉化為%xx的形式,一般來說URL的編碼是基於UTF-8的,當然也有的於瀏覽器平臺有關。在Python的urllib庫中提供了quote方法,可以實現對URL的字串進行編碼,從而可以進入到對應的網頁中去。

正規表示式,又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),是一種可以用於模式匹配和替換的強有力的工具。找到目標網頁之後,呼叫urllib中的urlopen函式開啟網頁並獲取原始碼,之後利用正規表示式實現對目標資訊的精準採集。

Python大神利用正規表示式教你搞定京東商品資訊

利用正規表示式實現對目標資訊的精準採集

正規表示式寫在這個程式中確實蠻複雜的,也佔據了多行,但是主要用到的正規表示式是[wW]+?和[sS]+?。

[sS]或者[wW]是完全通配的意思,s是指空白,包括空格、換行、tab縮排等所有的空白,而S剛好相反。這樣一正一反下來,就表示所有的字元,完全的,一字不漏的。另外,[]這個符號,表示在它裡面包含的單個字元不限順序的出現,比如下面的正則:[ace]*,這表示,只要出現a/c/e這三個任意的字母,都會被匹配。

此外,[s]表示,只要出現空白就匹配;[S]表示,非空白就匹配。那麼它們的組合,表示所有的都匹配,與它相對應的,有[wW]等,意義完全相同。其實,[sS] 和 [wW]這樣的用法,比"."所匹配的還要多,因為"."是不會匹配換行的,所有出現有換行匹配的時候,人們就習慣 使用[sS]或者[wW]這樣的完全通配模式。

最後得到的輸出效果圖如下所示:

Python大神利用正規表示式教你搞定京東商品資訊

輸出效果圖

這樣小夥伴們就可以獲取到狗。糧的商品資訊了,當然,小編在這裡只是拋磚引玉,只匹配了四個資訊,而且只是做了個單頁的獲取。需要更多資料的小夥伴們可以自行去更改正規表示式和設定多頁,達到你想要的效果。下篇文章小編將利用美麗的湯BeautifulSoup來進行匹配目標資料,實現目標資訊的精準獲取。

最後給大家簡單介紹一下正規表示式。正規表示式使用單個字串來描述、匹配一系列匹配某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索、替換那些匹配某個模式的文字。

正規表示式對於初學者確實晦澀難懂,不過慢慢學習還是可以掌握的,並不一定要完全記下來,但是你要知道什麼時候需要什麼引數,能做到順利使用它就可以了。

如果您對python感興趣,有對新技術的追求與渴望,這裡推薦一下我們的Python學習扣qun:784758214,這裡是python學習者聚集地!!同時,自己是一名高階python開發工程師,從基礎的python指令碼到web開發、爬蟲、django、資料探勘,人工智慧等,零基礎到專案實戰的資料都有整理。送給每一位python的小夥伴!每日分享一些學習的方法和需要注意的小細節


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913713/viewspace-2648618/,如需轉載,請註明出處,否則將追究法律責任。

相關文章