哈希技術部落格


Slider

Python爬蟲實作-擷取網路新聞

網路世代中,多數的資訊都可以在網路上找到。除了透過我們人自己閱讀網路上的資訊以外,透過程式將網路上的資訊擷取下來並進行處理,已是非常熱門的應用,這樣透過程式將網頁上的資訊擷取下來的行為,就稱作「爬蟲」

今天,我們會分享如何透過實作爬蟲,取得常見媒體網頁中的新聞資訊!

使用網路爬蟲

程式不像我們人的眼睛看見網頁的呈現,而是看見程式碼。所以在使用爬蟲的時候,我們需要告訴爬蟲要讀取網頁中哪些資料的時候,就是透過尋找網頁程式語言(HTML、CSS)的位置。

而在Python中,最常被大家使用的爬蟲模組就是「BeautifulSoup」

首先,我們需要透過pip安裝模組

pip install beautifulsoup4

BeautifulSoup只負責解析網頁程式語言的內容,但不包含將網頁擷取下來的功能,所以我們還需要另一個模組「requests」,將網頁擷取下來。

爬蟲實作

我們以擷取「聯合新聞網」為示範。首先,我們需要知道網頁上的新聞資訊,是寫在怎樣的HTML與CSS的架構中。所以我們可以在網頁上對新聞內容點擊「右鍵」>「檢查」 。找到這個資訊放在哪一個程式碼段落中。

從上圖中可以看見,新聞的標題放在「story-list__text」這個div class中底下的「h2」標籤內。所以我們可以寫爬蟲擷取這個程式段落中的內容。

import requestsfrom bs4 import BeautifulSoup
web = requests.get( “https://udn.com/news/breaknews/1” )
content = BeautifulSoup( web.text, “html.parser” )
allTitle = content.select( “.story-list__text h2” )
for i in allTitle[3:]:
print( “標題:” + i.text[1:-1] )

執行成果:

練習擷取更多的新聞網站

擷取TVBS新聞網站

import requestsfrom bs4 import BeautifulSoup
web = requests.get( “https://news.tvbs.com.tw/hot” )
content = BeautifulSoup( web.text, “html.parser” )
allTitle = content.select( “.content_center_contxt_box_news .txt” )
for i in allTitle[47:]:
print( “標題:” + i.text )

執行成果:

擷取三立新聞網站

import requestsfrom bs4 import BeautifulSoup
web = requests.get( “https://www.setn.com/ViewAll.aspx” )
content = BeautifulSoup( web.text, “html.parser” )
allTitle = content.select( “.view-li-title a” )
for i in allTitle:
print( “標題:” + i.text )

執行成果:

擷取自由時報網站

import requestsfrom bs4 import BeautifulSoup
web = requests.get( “https://news.ltn.com.tw/” )
content = BeautifulSoup( web.text, “html.parser” )
allTitle = content.select( “.tit .title” )
for i in allTitle:
print( “標題:” + i.text )

執行成果:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *