新聞每天都在不斷的更新,尤其是像虛擬貨幣市場波動較大,所以更應該了解當前的趨勢,以及世界各國發生的事情,這樣可以參考是否該在這個時間點進場,才不會盲目的投資最後輸的一塌糊塗。
像是近一年不斷的一路下跌,從六萬多到現在兩萬左右...比特幣目前跟隨美股,所以要掌握著美股的動向,以及各國對於虛擬貨幣的看法,或是影響力較大的伊隆·馬斯克,也許一句話就足以影響幣價...。
為了方便在使用linebot可以快速掌握到虛擬貨幣相關新聞,這邊將為大家用linebot結合爬蟲為範例。
第1行,取得使用者輸入的訊息,將用來作為搜尋新聞的關鍵字。
第2行,將關鍵字去做爬蟲搜尋。
第4~5行,回傳的新聞為list格式,用此方式將存為字串格式回傳給使用者。
views.py
coin_name = event.message.text
response = FindNews(coin_name).find_news()
message=''
for news in response:
message += news + '\n'
line_bot_api.reply_message( # 回復傳入的訊息文字
event.reply_token,
TextSendMessage(text=message)
)
第6行,用來儲存呼叫此function的幣種名稱。
第11行,請求google新聞搜尋幣種的網址。
第13行,取回的HTML結構字串,並且指定HTML的解析型態來建立其物件。
第14行,搜尋網頁中所有符合條件的HTML節點,傳入要搜尋的HTML標籤名稱。可以利用關鍵字參數指定其屬性值。因為太多新聞了,這邊我將取用五筆。
第15~18行,因為找到的網址沒法直接使用,需要稍微整理後儲存到list並回傳。
<爬蟲檔案>.py
import requests
from bs4 import BeautifulSoup
class FindNews():
def __init__(self, coin_name):
self.coin_name = coin_name
def find_news(self):
news_list = list()
response = requests.get(
"https://news.google.com/search?q=+"+self.coin_name+"+&hl=zh-TW&gl=TW&ceid=TW%3Azh-Hant")
soup = BeautifulSoup(response.text, "html.parser")
result = soup.find_all("div", class_="xrnccd", limit=5)
for news in result:
news_link = news.find("a").get("href")[1:]
result_link = "https://news.google.com"+news_link
news_list.append(result_link)
return news_list
使用者只要輸入自己喜歡的關鍵字,就可以當作關鍵字去google新聞裡找到相關新聞。
最後將找到的前面五筆新聞傳給使用者。