哈希技術部落格


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 )

執行成果:

0 Comments

  1. 庄子与惠子游于濠梁翻译简短(庄子与惠子 低调看直播jrs 游于濠梁赏析) 庄子与惠子游于濠梁之上(先秦)佚名原文:庄子与惠子游于濠梁之上。庄子曰:“鲦鱼出游从容,是鱼之乐也。”惠子曰:“子非鱼,安知鱼之乐 刷二十个赞快手 ?”庄子曰:“子非我,安知我不知鱼之乐?”惠子曰:“我非子,固不知子矣;子固非鱼也,子之不知鱼之乐,全矣!”庄子曰:“请循其本。子曰‘汝安知鱼乐’云者,既已知吾知之而问我。 旅游百科 我知之濠上也。”译文:庄子和惠子一起在濠水的桥上游玩。庄子说:“鲦鱼在河水中游得多么悠闲自得,这就是鱼的快乐。”惠子说:“你又不是鱼,怎么知道鱼是快乐的?”庄子说:“你不是我,怎么知道我不知道鱼儿是快乐的?”惠子说:“我不是你,固然就不知道你;

發佈留言

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