iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
Software Development

Python之虛擬貨幣API實作系列 第 26

Day26 linebot & 爬蟲 之實作交易機器人-相關新聞

  • 分享至 

  • xImage
  •  

新聞每天都在不斷的更新,尤其是像虛擬貨幣市場波動較大,所以更應該了解當前的趨勢,以及世界各國發生的事情,這樣可以參考是否該在這個時間點進場,才不會盲目的投資最後輸的一塌糊塗。

像是近一年不斷的一路下跌,從六萬多到現在兩萬左右...比特幣目前跟隨美股,所以要掌握著美股的動向,以及各國對於虛擬貨幣的看法,或是影響力較大的伊隆·馬斯克,也許一句話就足以影響幣價...。

為了方便在使用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新聞裡找到相關新聞。

最後將找到的前面五筆新聞傳給使用者。


上一篇
Day25 linebot & django 之實作交易機器人-查詢幣種
下一篇
Day27 Python 三大特性Demo
系列文
Python之虛擬貨幣API實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言