python項目實戰,我用python爬蟲爬取糗事百科的段子

python項目實戰,我用python爬蟲爬取糗事百科的段子

前面入門已經說了那麼多基礎知識了,下面我們做幾個實戰項目來挑戰一下吧。那麼這次為大家帶來,Python爬取糗事百科的小段子的例子。

首先,糗事百科大家都聽說過吧?糗友們發的搞笑的段子一抓一大把,這次我們嘗試一下用爬蟲把他們抓取下來。

本篇目標

1.抓取糗事百科熱門段子

2.過濾帶有圖片的段子

3.實現每按一次回車顯示一個段子的發佈時間,發佈人,段子內容,點贊數。

糗事百科是不需要登錄的,所以也沒必要用到Cookie,另外糗事百科有的段子是附圖的,我們把圖抓下來圖片不便於顯示,那麼我們就嘗試過濾掉有圖的段子吧。

好,現在我們嘗試抓取一下糗事百科的熱門段子吧,每按下一次回車我們顯示一個段子。

1.確定URL並抓取頁面代碼

首先我們確定好頁面的URL是 http://www.qiushibaike.com/hot/page/1,其中最後一個數字1代表頁數,我們可以傳入不同的值來獲得某一頁的段子內容。

我們初步構建如下的代碼來打印頁面代碼內容試試看,先構造最基本的頁面抓取方式,看看會不會成功

python項目實戰,我用python爬蟲爬取糗事百科的段子

python項目實戰,我用python爬蟲爬取糗事百科的段子

嘿嘿,這次運行終於正常了,打印出了第一頁的HTML代碼,大家可以運行下代碼試試看。在這裡運行結果太長就不貼了。

python項目實戰,我用python爬蟲爬取糗事百科的段子

2.提取某一頁的所有段子

好,獲取了HTML代碼之後,我們開始分析怎樣獲取某一頁的所有段子。

首先我們審查元素看一下,按瀏覽器的F12,截圖如下

python項目實戰,我用python爬蟲爬取糗事百科的段子

我們可以看到,每一個段子都是

包裹的內容。

現在我們想獲取發佈人,發佈日期,段子內容,以及點讚的個數。不過另外注意的是,段子有些是帶圖片的,如果我們想在控制檯顯示圖片是不現實的,所以我們直接把帶有圖片的段子給它剔除掉,只保存僅含文本的段子。

所以我們加入如下正則表達式來匹配一下,用到的方法是 re.findall 是找尋所有匹配的內容。方法的用法詳情可以看前面說的正則表達式的介紹。

好,我們的正則表達式匹配語句書寫如下,在原來的基礎上追加如下代碼

python項目實戰,我用python爬蟲爬取糗事百科的段子

下面就開始介紹一個十分強大的工具,正則表達式

1.瞭解正則表達式

正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。

正則表達式是用來匹配字符串非常強大的工具,在其他編程語言中同樣有正則表達式的概念,Python同樣不例外,利用了正則表達式,我們想要從返回的頁面內容提取出我們想要的內容就易如反掌了。

正則表達式的大致匹配過程是:

1.依次拿出表達式和文本中的字符比較,

2.如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。

3.如果表達式中有量詞或邊界,這個過程會稍微有一些不同。

python項目實戰,我用python爬蟲爬取糗事百科的段子

2.正則表達式的語法規則

下面是Python中正則表達式的一些匹配規則

3.正則表達式相關注解

(1)數量詞的貪婪模式與非貪婪模式

正則表達式通常用於在文本中查找匹配的字符串。Python裡數量詞默認是貪婪的(在少數語言裡也可能是默認非貪婪),總是嘗試匹配儘可能多的字 符;非貪婪的則相反,總是嘗試匹配儘可能少的字符。例如:正則表達式”ab*”如果用於查找”abbbc”,將找到”abbb”。而如果使用非貪婪的數量 詞”ab*?”,將找到”a”。

注:我們一般使用非貪婪模式來提取。

python項目實戰,我用python爬蟲爬取糗事百科的段子

(2)反斜槓問題

與大多數編程語言相 同,正則表達式裡使用”\”作為轉義字符,這就可能造成反斜槓困擾。假如你需要匹配文本中的字符”\”,那麼使用編程語言表示的正則表達式裡將需要4個反 斜槓”\\\\”:前兩個和後兩個分別用於在編程語言裡轉義成反斜槓,轉換成兩個反斜槓後再在正則表達式裡轉義成一個反斜槓。

Python裡的原生字符串很好地解決了這個問題,這個例子中的正則表達式可以使用r”\\”表示。同樣,匹配一個數字的”\\d”可以寫成r”\d”。有了原生字符串,媽媽也不用擔心是不是漏寫了反斜槓,寫出來的表達式也更直觀勒。

好了,今天的知識就分享到這裡,歡迎關注愛編程的南風,私信關鍵詞:學習資料,獲取更多學習資源,如果文章對你有有幫助,請收藏關注,在今後與你分享更多學習python的文章。同時歡迎在下面評論區留言如何學習python。


分享到:


相關文章: