Python – GoogleNews

簡介

當我們知道怎樣用request + BeautifulSoup來擷取網頁的資料,當然透過此方法也可以抓取新聞的資料,但是你必須要花點時間來解析新聞網站的html code,而網路上有有心人士專門為了Google News打造了專屬爬蟲,透果簡單的搜尋模式,就可以找到整篇新聞的資訊了,那讓我們來熟悉並時做一下吧。

實操Code

首先一樣要安裝Package,如上圖,請輸入『pip install GoogleNews』,要不要加『!』在jupyter notebook都可以執行。

from GoogleNews import GoogleNews
googlenews = GoogleNews()

接著要做importInitializing的動作,使『googlenews』這容器代表套件中『GoogleNews()』的方法。

googlenews.setlang('cn')

再來要選擇你要搜尋的google news的語言,通常最常用的就是『en , cn , jp…』。在官方文件他是『googlenews = GoogleNews(lang='en')』撰寫,兩者皆可。

googlenews.clear()
googlenews.setTimeRange('11/01/2020','11/05/2020')

在開始搜尋並儲存到google套件的暫存區時,每次再重新抓取新的資料前,都要先清空googlenews的陣列,這邊就使用『clear()』。接著我們要設定新聞搜尋的區間日期,如上列程式碼第二段,要注意的是時間填寫的格式『mm/dd/yy』。

googlenews.setencode('utf-8')
#googlenews = GoogleNews(encode='utf-8')
googlenews.search('美國總統大選')

接著就要進入搜尋關鍵字的區塊,假如你要搜尋中文字的話,要注意『encode字串編碼』的地方,你也可以在設定容器的時候再『Googlenews(在這邊輸入編碼模式)』。而搜尋的方法請使用『search()』,在括弧中輸入要搜尋的關鍵字。

times = 1

for i in range(times):
    googlenews.clear()
    googlenews.getpage(i)
    result = googlenews.result()
    for n in range(len(result)):
        print(n)
        print(result[n])
        temp = result[n]
        print(temp['link'])
        UrlList.append(temp['link'])

再來要到把內容印出來的階段,而請先看到第一個容器,『time』是在設定搜尋的頁數,再來我們透過搜尋的頁數來進行for loop的印出新聞內容。

在for loop中,我們確保安全在清空一次陣列,再來使用『getPage()』取得該頁面所有新聞,由於我們想要把新聞內容都印出來,所以就新增一個儲存新聞內容的容器,這邊我們就以result來儲存,而要取得該頁的結果要使用『googlenews.result()』方法。

而儲存在result中的新聞可能有好幾筆,googlenews套件會把每一則都一筆一筆的放在裡面,所以為了要取得每一筆,我們就在需要使用一次for-loop把每一筆都印出來。最主要印出來的功能就是在『result[哪一筆新聞]』這邊,而下面的程式碼是我想要儲存該新聞連結的陣列『UrlList.append()』將資料塞入陣列中就使用『append()』。

googlenews.gettext()

而我們假如單純想要純文字檔的話,官方有提供一個方法來取得,如上述程式碼。

小結

經過上面的簡單程式碼的編譯,我們終於得到每筆新聞的主要資料,如上圖。就如簡介所述,假如你只想要抓新聞的話,可以使用這個套件,簡單又好用,而且google news會搜集不同平台的新聞內容,如上圖可以看到『media』的來源有很多種,讓你部會只有搜尋到單一新聞平台的新聞。

發佈留言

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