Python如何使用正則表達(dá)式爬取京東商品信息
京東(JD.com)是中國最大的自營式電商企業(yè),2015年第一季度在中國自營式B2C電商市場的占有率為56.3%。如此龐大的一個(gè)電商網(wǎng)站,上面的商品信息是海量的,小編今天就帶小伙伴利用正則表達(dá)式,并且基于輸入的關(guān)鍵詞來實(shí)現(xiàn)主題爬蟲。
首先進(jìn)去京東網(wǎng),輸入自己想要查詢的商品,小編在這里以關(guān)鍵詞“狗糧”作為搜索對象,之后得到后面這一串網(wǎng)址:
https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,其實(shí)參數(shù)%E7%8B%97%E7%B2%AE解碼之后就是“狗糧”的意思。那么非常明顯,只要輸入keyword這個(gè)參數(shù)之后,將其進(jìn)行編碼,就可以獲取到我們的目標(biāo)網(wǎng)址了,請求網(wǎng)頁,得到響應(yīng),爾后利用選擇器便可以進(jìn)行下一步的精準(zhǔn)采集了。
在京東網(wǎng)上,狗糧信息在京東官網(wǎng)上的網(wǎng)頁源碼如下圖所示:
狗糧信息在京東官網(wǎng)上的網(wǎng)頁源碼
話不多說,直接擼代碼,如下圖所示。小編用的是py3,也建議大家以后多用py3版本。通常URL編碼的方式是把需要編碼的字符轉(zhuǎn)化為%xx的形式,一般來說URL的編碼是基于UTF-8的,當(dāng)然也有的于瀏覽器平臺有關(guān)。在Python的urllib庫中提供了quote方法,可以實(shí)現(xiàn)對URL的字符串進(jìn)行編碼,從而可以進(jìn)入到對應(yīng)的網(wǎng)頁中去。
正則表達(dá)式,又稱正規(guī)表示式、正規(guī)表示法、正規(guī)表達(dá)式、規(guī)則表達(dá)式、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),是一種可以用于模式匹配和替換的強(qiáng)有力的工具。找到目標(biāo)網(wǎng)頁之后,調(diào)用urllib中的urlopen函數(shù)打開網(wǎng)頁并獲取源碼,之后利用正則表達(dá)式實(shí)現(xiàn)對目標(biāo)信息的精準(zhǔn)采集。
利用正則表達(dá)式實(shí)現(xiàn)對目標(biāo)信息的精準(zhǔn)采集
正則表達(dá)式寫在這個(gè)程序中確實(shí)蠻復(fù)雜的,也占據(jù)了多行,但是主要用到的正則表達(dá)式是[\w\W]+?和[\s\S]+?。
[\s\S]或者[\w\W]是完全通配的意思,\s是指空白,包括空格、換行、tab縮進(jìn)等所有的空白,而\S剛好相反。這樣一正一反下來,就表示所有的字符,完全的,一字不漏的。另外,[]這個(gè)符號,表示在它里面包含的單個(gè)字符不限順序的出現(xiàn),比如下面的正則:[ace]*,這表示,只要出現(xiàn)a/c/e這三個(gè)任意的字母,都會被匹配。
此外,[\s]表示,只要出現(xiàn)空白就匹配;[\S]表示,非空白就匹配。那么它們的組合,表示所有的都匹配,與它相對應(yīng)的,有[\w\W]等,意義完全相同。其實(shí),[\s\S] 和 [\w\W]這樣的用法,比"."所匹配的還要多,因?yàn)?."是不會匹配換行的,所有出現(xiàn)有換行匹配的時(shí)候,人們就習(xí)慣 使用[\s\S]或者[\w\W]這樣的完全通配模式。
最后得到的輸出效果圖如下所示:
輸出效果圖
這樣小伙伴們就可以獲取到狗糧的商品信息了,當(dāng)然,小編在這里只是拋磚引玉,只匹配了四個(gè)信息,而且只是做了個(gè)單頁的獲取。需要更多數(shù)據(jù)的小伙伴們可以自行去更改正則表達(dá)式和設(shè)置多頁,達(dá)到你想要的效果。下篇文章小編將利用美麗的湯BeautifulSoup來進(jìn)行匹配目標(biāo)數(shù)據(jù),實(shí)現(xiàn)目標(biāo)信息的精準(zhǔn)獲取。
最后給大家簡單介紹一下正則表達(dá)式。正則表達(dá)式使用單個(gè)字符串來描述、匹配一系列匹配某個(gè)句法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來檢索、替換那些匹配某個(gè)模式的文本。
正則表達(dá)式對于初學(xué)者確實(shí)晦澀難懂,不過慢慢學(xué)習(xí)還是可以掌握的,并不一定要完全記下來,但是你要知道什么時(shí)候需要什么參數(shù),能做到順利使用它就可以了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python網(wǎng)絡(luò)爬蟲精解之正則表達(dá)式的使用說明
- python正則表達(dá)式re.search()的基本使用教程
- Python中正則表達(dá)式對單個(gè)字符,多個(gè)字符和匹配邊界等使用
- python使用正則表達(dá)式匹配txt特定字符串(有換行)
- python中使用正則表達(dá)式將所有符合條件的字段全部提取出來
- Python使用正則表達(dá)式實(shí)現(xiàn)爬蟲數(shù)據(jù)抽取
- Python正則表達(dá)式高級使用方法匯總
- python使用正則表達(dá)式去除中文文本多余空格,保留英文之間空格方法詳解
- python使用正則表達(dá)式(Regular Expression)方法超詳細(xì)
- python 正則表達(dá)式的使用
相關(guān)文章
python 實(shí)現(xiàn)12bit灰度圖像映射到8bit顯示的方法
這篇文章主要介紹了python 實(shí)現(xiàn)12bit灰度圖像映射到8bit顯示的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python3通過字符串訪問和修改局部變量的方法實(shí)例
最近在看python中nonlocal和global的使用,參考網(wǎng)上的大作,寫了點(diǎn)自己的心得,下面這篇文章主要給大家介紹了關(guān)于Python3通過字符串訪問和修改局部變量的相關(guān)資料,需要的朋友可以參考下2022-04-04Python中xml和dict格式轉(zhuǎn)換的示例代碼
最近在做APP的接口,遇到XML格式的請求數(shù)據(jù),費(fèi)了很大勁來解決,下面小編給大家分享下Python中xml和dict格式轉(zhuǎn)換問題,感興趣的朋友跟隨小編一起看看吧2019-11-11Python中l(wèi)ogging日志模塊代碼調(diào)試過程詳解
這篇文章主要介紹了Python中l(wèi)ogging日志模塊代碼調(diào)試,今天來看看如何在代碼中定義日志,并探討日志的權(quán)限,需要的朋友可以參考下2023-04-04python中matplotlib調(diào)整圖例位置的方法實(shí)例
在matplotlib中,一般圖例默認(rèn)是在圖表內(nèi)部的,如果要放置到圖例外面,需要對坐標(biāo)進(jìn)行指定,下面這篇文章主要給大家介紹了關(guān)于python中matplotlib調(diào)整圖例位置的相關(guān)資料,需要的朋友可以參考下2022-06-06Python實(shí)現(xiàn)爬取知乎神回復(fù)簡單爬蟲代碼分享
這篇文章主要介紹了Python實(shí)現(xiàn)爬取知乎神回復(fù)簡單爬蟲代碼分享,本文實(shí)現(xiàn)了爬取知乎的“如何正確地吐槽”收藏夾,是對個(gè)人的一個(gè)興趣實(shí)現(xiàn),需要的朋友可以參考下2015-01-01小白教你PyCharm從下載到安裝再到科學(xué)使用PyCharm2020最新激活碼
這篇文章主要介紹了PyCharm最新版從下載到安裝再到科學(xué)使用PyCharm2020最新激活碼,需要的朋友可以參考下2020-09-09Python數(shù)據(jù)結(jié)構(gòu)隊(duì)列解決約瑟夫斯問題
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)隊(duì)列解決約瑟夫斯問題2023-02-02