tft每日頭條

 > 科技

 > 開發正則表達式引擎

開發正則表達式引擎

科技 更新时间:2025-01-31 07:51:21

今天2022年8月15日是紀念日本投降的日子,也是我寫學習筆記的第一天,可謂是喜上加囍。我想和大家分享一下我今天學習python網絡爬蟲的囧事以及從中得到的一些感悟,也算是對自己學習曆程的一個記錄吧。

今天,我試着用正則表達式解析網頁源碼,獲取、清洗和打印數據,這個過程看似簡單卻不那麼順利。今天我主要爬取的是中國證券報網上的一些網站、标題和時間。跟着書依葫蘆畫瓢,在寫好程序後,我就“shift enter”了一下,顯示結果報錯。一看錯誤提示是“IndexError: list index out of range”,索引超出了範圍,如下圖所示。

開發正則表達式引擎(學用正則表達解析網頁源碼)1

于是,跟着提示的指引,我回到程序去分析和查找原因,但奈何經驗與能力有限,花了我半個多小時也沒解決得了錯誤,其間還上網查了一下,也無濟于事。心态逐漸開始炸裂了。但是,我也不是遇到點問題就輕言放棄的人,心裡那股不解決問題、絕不罷休的勁兒,促使着我又去找方法解決。

隻要思想不滑坡,方法總比困難多。我又回到了那本學習參考書,仔仔細細地與其比對看看哪裡不一樣,功夫不負有心人,我還真找到了一個差異點。這個差異點就是在用正則表達式來表示時間時少寫了一個“.*?”,如下圖所示。果然,該錯誤成功解除啦。但很不幸,又出現了一個新錯誤。

開發正則表達式引擎(學用正則表達解析網頁源碼)2

為什麼這裡需要寫上“.*?”?我認為主要是“ ” 與“ ”之間存在空行(如下圖所示),不加上“.*?”将空行忽略掉的話,re.findall()匹配的時候就會提取不到時間,從而導緻時間列表為空,出現程序錯誤。這一問題實際上是暴露了我對正則表達的學習理解還不太好,需要多做練習來進一步加強認知、積累經驗。

開發正則表達式引擎(學用正則表達解析網頁源碼)3

再來說一下這個新錯誤,錯誤如下圖所示。該錯誤主要是split()函數的一個誤用。誤用在分割符裡多加了一個空字符串,不符合split函數的語法使用要求而引起的報錯。不過我很好奇,我參考的這本書也是這樣寫的,居然沒有報錯。看來知識掌握的不透,很容易就會被書誤導呀。

開發正則表達式引擎(學用正則表達解析網頁源碼)4

split()函數的誤用,暴露了我對該知識點的欠缺。非常感謝這次報錯,讓我發現了知識盲點,有機會重新去加深學習、理解和應用。我重新把split()函數這個知識點總結在下面,加深理解和方便查看。

split():拆分字符串。通過指定分隔符對字符串進行切片,并返回分割後的字符串列表(list)

語法:str.split(str="",num=string.count(str))[n]

參數說明:

str:表示為分隔符,默認為空格,但是不能為空(’’)。若字符串中沒有分隔符,則把整個字符串作為列表的一個元素

num:表示分割次數。如果存在參數num,則僅分隔成 num 1 個子字符串,并且每一個子字符串可以賦給新的變量

[n]:表示選取第n個分片

總結:

1、遇到問題不要退縮,方法總比困難多,堅持去尋找和思考,問題總會被解決,也終會有所收獲。

2、知識是否學會,應用一下便見分曉。

3、實踐才能出真知。唯有多動手操作和勤練習,才能發現自己的不足、加深對知識的理解與應用,進而提高解決問題的能力。

4、盡信書不如無書。不能無腦接受,盲目相信,需要有批判精神,多自我思考總結,才會有所進步。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved