某網站新聞抓取
我一直是比較喜歡看新聞類的東西,喜歡了解前沿動態,正好學習了一些爬蟲相關的知識,於是對某網站進行抓取,每天獲取新聞了解世界科技最新動態
-
首先我們進行數據的准備
-
我發現他的標題都在一個返回的一串非標准html中,不是json,如圖所示
-
所以我們請求的首地址就是這一個地址,非原網址地址
-
得到數據后我們直接使用re模塊處理,findall提取標題和下一個請求的href
-
因為提取出來是很多個數據的列表,所以我們遍歷列表來獲取新聞頁面的具體信息
-
在此之前我們需要先創建一個文件夾,用來保存獲取到的新聞信息(注意,必須使用標准格式寫法,否則會出錯)
-
爬取詳情頁的數據依然使用re模塊獲取所有的新聞信息
-
如圖所示,我們注意到所有的新聞信息均在一個< p >標簽下,所以使用re.findall來獲取
-
但是有個問題是我們獲取到的數據在一個列表中,所以我們需要轉化為一個字符串,每個< p >標簽之間加上換行
-
最后就是數據的后期美化,因為里面夾雜了很多html的標簽,所以我們需要替換掉
-
有一個特別需要注意的就是\u3000這個,這是一個是全角的空白符,但是我看了下網上的替換方式均有誤,網上的寫法 str.replace(u'\xa0', u' ')
-
我測試后發現這個寫法是有錯誤的,我們只需要進行字符轉義即可 new_body = new_body.replace("\u3000", '')
-
然后就是我們的文件保存
-
文件的名字在之前的new_title中,但是我們還需要構造一個索引,所以我們定義一個num去取標題索引,傳入標題和新聞內容,每次所以加+1
-
保存文件代碼
-
最后,其實我們可以使用xpath寫法,這樣就可以省去繁瑣的字符替換等等,我為了復習re所以選擇了這種寫法,也不想改版本了,其他新聞可以修改后面的itemCount=10值爬取所有的新聞,鑒於服務器的負載,我就不做了,有願意的可以自行嘗試
-
附上一張最后的成果圖
-
此為本人原創所有,如有轉載,附上原文鏈接即可,如有其他需要發電子郵件給我也可ajin_w@163.com