iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 19
0
AI & Machine Learning

ChatBot&Chatbase系列 第 19

Day19[Line ChatBot]Line一下爬好爬滿(上)

  • 分享至 

  • xImage
  •  

研究Dialogflow與Line的連接之餘
決定繼續做新的功能!!

首先來個爬蟲不專業介紹
(想知道更多可以google一下 python爬蟲 就有一大堆可以看了XD)
這次嘗試做的範例是爬電影
我爬的是yahoo電影中的最新電影~~

1.安裝並import需要的套件
$pip install bs4
$pip install urllib.request

import requests 
from bs4 import BeautifulSoup
from urllib.request import urlretrieve

2.寫入爬蟲程式

def movie():
    target_url = 'https://movies.yahoo.com.tw/'
    rs = requests.session()
    res = rs.get(target_url, verify=False)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'html.parser')   
    content = ""
    for index, data in enumerate(soup.select('div.movielist_info h1 a')):
        if index == 20:
            return content       
        title = data.text
        link =  data['href']
        content += '{}\n{}\n'.format(title, link)
    return content

說明一下
target_url -> 要爬的網址

soup = BeautifulSoup(res.text, 'html.parser') -> 讀入網頁

select('div.movielist_info h1 a') -> 找Tag

Tag怎麼找呢?
找你想要的內容,按右鍵 > "檢查"就可找了
如下圖 標題與連結是在div.movielist_info > h1 > a
https://ithelp.ithome.com.tw/upload/images/20180110/201071442TQgMr02lK.png

如果不確定有沒有找對
可以print出來看看
下圖是print出index 還有 data
https://ithelp.ithome.com.tw/upload/images/20180110/20107144cJJhmRmDRY.png

所以title就是data中text的部分
link(電影資訊的連結)就是href的部分

於是乎就爬完了

爬完後加到Content

3.將內容回傳至Line
( Line ChatBot傳送文字的詳細程式碼可以參考Day14[Line ChatBot]Messaging types上集 )

    if event.message.text == "最新電影":
        a=movie()
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text=a))

4.Demo!!
https://ithelp.ithome.com.tw/upload/images/20180110/20107144CCzc4Rwxg4.jpg
點入連結就可以連到yahoo電影中該電影的介紹喔!
https://ithelp.ithome.com.tw/upload/images/20180110/201071445MPj4JVWHd.jpg


上一篇
Day18[Line ChatBot]!未解決!Dialogflow&LineBot之間的連接問題
下一篇
Day20[Line ChatBot]Line一下爬好爬滿(下)-Part.1
系列文
ChatBot&Chatbase30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
107AB8024
iT邦新手 5 級 ‧ 2020-03-19 22:20:06

不好意思,我都照著程式碼做,先前的訊息類型都有成功,可是到了這階段的爬蟲就沒有回應,好奇怪...
程式碼應該都不需要再變動?

我要留言

立即登入留言