Python學習第140課——通過findall方法找到網頁原始碼中的聯繫方式

2021-01-11 石問新

【每天幾分鐘,從零入門python編程的世界!】

之前我們介紹過正則表達式對象的findall方法,它是找到所有匹配的字符串。這節我們介紹findall方法的另外的用法。

我們在360瀏覽器通過360搜索「360聯繫方式」,我們會看到搜索結果頁中,聯繫方式是下面的這種:

我們點擊上圖所示頁面的「奇虎360 客服電話」,打開360公司的「聯繫我們」頁面,

然後右鍵點擊「查看原始碼」:

打開的頁面上的原始碼是這樣:

我們把原始碼複製到我們的Spyder中,用一個變量text來保存,原始碼前後各用3個引號包裹,這樣就相當於把這個原始碼作為一個很長的字符串。

假設我們面前有這麼一個很長的字符串,我們靠肉眼去查找裡面的聯繫方式是比較累眼睛的,那麼我們用Python以及正則表達式的findall方法,在這些原始碼字符串中尋找360的聯繫方式,讓程序來幫我們做事情就更方便省勁還很準確。

我們剛才搜索到的360聯繫方式的結果頁面,看到聯繫方式都是用兩個橫槓連接,橫槓前後都是3個或者4個數字這樣的規律的電話號碼。

那麼我們的正則表達式就可以寫作:r"\d{3,4}-\d{3,4}-\d{3,4}"。

因為我們搜索看到的網頁上,360的聯繫方式有多個電話號碼,所以我們複製的網頁原始碼中也自然會有很多聯繫電話,所以我們就用findall這個函數來尋找這些電話號碼。因為search函數和match函數都只能找到一個匹配的結果,所以我們用findall方法尋找。

代碼如下:

如上圖所示,由於網頁原始碼的字符串太長了,第20行到673行的部分都是網頁原始碼字符串,就省略不截取出來了。

運行結果:

我們看到通過正則表達式尋找並列印出來的360聯繫方式,是一個列表的形式。因為findall函數的返回結果就是列表。

我們還可以在正則表達式中再加上括號,這樣返回的結果就是一個以元組為元素的列表。

代碼如下:

運行結果:

因為findall的返回結果是一個列表,列表是可迭代對象,它的元素是按順序的排列的,這就方便我們再去找到這個列表的元素,然後對找到的元素進行操作。這就是一個很有用的特性。

findall還有其他的用法,以後遇到再去學習。

我是時問新,歡迎關注我。跟我一起從零開始學習Python,每天花一點時間,開啟python編程新世界的大門,領略新的風光,讓人生多一種可能!

相關焦點

  • Python網絡爬蟲——爬取小視頻網站源視頻!自己偷偷看哦!
    學習前提1、了解python基礎語法2、了解re、selenium、BeautifulSoup、os、requests等python第三方庫
  • Python學習第141課——Python爬蟲簡介
    【每天幾分鐘,從零入門python編程的世界!】今天我們簡單的了解下網絡爬蟲,網絡爬蟲其實就是一個自動獲取網頁內容的程序。Python的爬蟲需要用到一個第三方的庫requests。requests庫可以在git bash中使用命令pip install requests進行安裝。
  • 用人話教你入門Python[簡單爬取網頁內容]
    心軟善良純真熱心的Cosmo還是擔心有些同學沒找到,看coursera之類的響應速度慢成狗,因此而放棄學習就不太好了,所以在下一次推送中會教大家上網的正確姿勢,而我們今天爬取的這個網站正是為下一次做準備的(Cosmo在下一盤很大的棋)打開這個網站拉到最下面我們會看到
  • Python學習第94課-通過第三方接口獲得數據並導入Python繪圖
    【每天幾分鐘,從零入門python編程的世界!】上節課我們學習了導入外部文件數據並繪圖。這節課我們學習通過第三方接口獲得數據並導入Python進行繪圖。我們的數據接口使用Tushare,Tushare是一個免費、開源的python財經數據接口包。
  • python數據抓取3種方法總結
    這篇文章主要給大家介紹了關於python數據抓取的3種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值
  • 爬取《The Hitchhiker's Guide to Python!》python進階書並製成pdf
    /en/latest/這本書適合於一切有python的學習者,不管你是初入python的小白,還是熟練使用python的老手,都適用。但是不看也沒有影響你學習爬蟲哈,這個只是說些python的奇淫技巧。由於這本書在網上只有英語的電子版,可我英語渣渣,所以爬個中文版的網頁然後把他弄成電子版。若想直接獲取該書電子版,可以在公眾號「日常學python」後臺回復『進階』直接獲取。
  • Python學習第119課——numpy中的broadcasting
    【每天幾分鐘,從零入門python編程的世界!】這節課我們學習numpy中的數據的一個多變的特性--broadcasting,broadcasting的官方的說明比較麻煩,我們這裡把它簡化一下,就把它當做「腦補」的意思。
  • 網頁禁止複製粘貼內容怎麼辦?通過查看原始碼複製粘貼
    但是有些小夥伴還是不太會搞,所以準備一個系列教程,教大家用各種方法進行破解禁止複製,從而複製網頁內容。通過原始碼複製因為這是最簡單的方法,也不需要用到各種各樣的插件或工具,所以第一個推薦它。打開無法複製的網頁,點擊快捷鍵Ctrl+U(或者滑鼠右鍵,點擊查看網頁原始碼)進入原始碼頁面,找到你要複製的內容,即可進行複製。那麼,像常見的代碼(<p>標籤、<ul>標籤、<li>標籤、<h*>標籤……),少的話就自己手動刪一下,多的話可以記事本直接替換即可。
  • 計算機畢業設計中用HTML網頁調用本地Python程序
    代碼完整代碼在後面,這裡是方法介紹。同理你把python文件打包成exe文件也是可以直接採用這種方法的。測試1完整代碼在這裡,新建一個html文件,命名test1.html:<!      ④點擊網頁界面中的運行代碼的button,還會彈出一個警告,你也需要點「是」
  • 學習Python正則表達式
    李丹剛在一家經銷店找到了新工作,他的工作是給那些在評論頁留下電話號碼的客戶打電話。然而,讓李丹煩惱的是,評論是以自由文本的形式展現,電話號碼就在這些評論中。如何不需要一個接一個地複製和粘貼,就可以輕鬆地找到這些電話號碼?Python中的正則表達式(re)就可以解決這個問題!正則表達式正則表達式是一個具有特殊字符的序列。
  • python爬蟲入門實戰!爬取博客文章標題和連結!
    最近有小夥伴和我留言想學python爬蟲,那麼就搞起來吧。準備階段爬蟲有什麼用呢?舉個最簡單的小例子,你需要《戰狼2》的所有豆瓣影評。最先想的做法可能是打開瀏覽器,進入該網站,找到評論,一個一個複製到文本中,保存,翻頁,接著複製,直到翻到最後一頁。
  • python正則表達式使用方法說明
    曾光紅/文 (同步發布豆瓜網)一、導入re庫python使用正則表達式要導入re庫。import re在re庫中。正則表達式通常被用來檢索查找、替換那些符合某個模式(規則)的文本。《Python核心編程》裡面是這樣解釋的:使用預編譯的代碼對象比直接使用字符串要快,因為解釋器在執行字符串形式的代碼前都必須把字符串編譯成代碼對象。
  • Python爬蟲:抓取One網頁上的每日一話和圖
    網址:http://wufazhuce.com/one/1293谷歌瀏覽器,右鍵->顯示網頁原始碼,然後就會彈出一堆HTML的東西了。這樣的:網頁源文件我想要的內容是這段話:「即使熱戀者的情感是錯覺、幻象或自戀行為,那又何妨,所謂人生就是一段不斷追求情愛的路程。 by 森山大道」。它在圖中畫紅線的地方。在標籤裡的中,之後會用到,先往下看。
  • 使用Python爬取妹子圖高清圖片
    自己想像吧,貼出來會誤判為圖片低俗項目分析函數編寫梳理過程編寫原始碼總結項目項目分析通過分析整個網站,分為性感、臺灣、清純、妹子、街拍、每日更新等項目,發現通過每日更新這個項目,可以找到從2015到2019
  • 搜狗高速瀏覽器官方版怎麼查看網頁原始碼?
    有一些專業做網站的人士可能需要查看網頁原始碼,但是很多人都不知道搜狗高速瀏覽器怎麼查看網頁原始碼,其實方法很簡單哦,只要在需要查看的網頁上右鍵就可以看到查看原始碼選項,那麼網頁原始碼是什麼東西呢?下面就和小編一起來看看吧!
  • Python+AI+選修課第5課:我的第二個AI程序人臉大挪移誕生記
    在csdn上發現了《Python實現AI換臉》這篇文章,因源程序省略了很多細節,在使用上也很不方便,於是在其基礎上做了完善,形成了一個能夠選擇文件進行換臉的exe文件。趁熱打鐵,本周的選修課就將第七周的內容前置了。怎麼樣,有沒有被我大挪移後的臉噁心到?
  • Python re模塊常見函數
    該函數與re.match()函數最大的不同是,re.match()函數從源字符串的開頭進行匹配,而re.search()函數會在全文中進行檢索匹配。<_sre.SRE_Match object; span=(4, 10), match='python'>pythonre.compile()在以上兩個函數中,即便源字符串中有多個結果符合模式,也只會匹配一個結果,那麼我們如何將符合模式的內容全部都匹配出來呢?
  • Python學習第113課——numpy中用條件判斷去篩選數組中的元素
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了如何在numpy中查找數組元素的方法和技巧,現在我們學習如何用條件判斷的方式篩選數組的元素。●numpy中的數組可以直接進行比較直接上代碼:運行結果:我們看到,condition列印出來,它的結構和h的結構一樣。
  • 在Rust 代碼中編寫 Python 是種怎樣的體驗?
    因為它的工作原理是處理單詞(token),不再是原始碼裡面的:a,123,b等。Rustc編譯器做的第一件事就是將原始碼分為單詞,這使得解析後的工作更容易進行,不必處理諸如1,2,3,這樣的個別字符,只需處理諸如「integer literal 123」這樣的單詞。另外,空白和注釋在分詞之後就消失了,因為它們對編譯器來說沒有意義。
  • 代碼詳解:Python正則表達式的終極使用指南
    全文共8032字,預計學習時長16分鐘處理文本數據的一個主要任務就是創建許多以文本為基礎的特性。人們可能想要在文本中找出特定格式的內容,比如找出存在於文本中的電子郵件,或者大型文本中的電話號碼。這個模式可找出想要的4個字符中的任何一個。regex101是一個用於測試模式的工具。將模式應用到目標字符串時,呈現出以下界面。如圖所示,可以在目標字符串中根據需要找到,;.,–。每當需要測試正則表達式時,都會用到上面的工具。這比一次又一次運行python要快得多,調試也容易得多。