명언 LINE 봇을 만들어 보았다. (LINEAPI와 GAS를 사용하여 놀아 본 3)
명언군
설명
명언 100선 의 명언으로부터, 유저가 입력한 키워드에 관한 명언을 돌려줍니다.
사용법
1 : LINE으로 문자를 입력하여 송신합니다.
2 : LINE에 입력한 키워드와 관련된 명언이 반환됩니다. 관련 명언이 없으면 무작위로 명언이 반환됩니다.
만드는 법
1: 명언 100선 로부터 명언만을 스크래핑으로 꺼냅니다.
2:LINE 봇을 작성합니다.
3 : GSS에 스크래핑으로 꺼낸 명언을 입력합니다.
4 : GAS에 코드를 씁니다.
1: 명언 100선 로부터 명언만을 스크래핑으로 꺼냅니다.
스크래핑.pyfrom selenium import webdriver
import pandas
"""***************************************
もろもろの設定
***************************************"""
browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')
df = pandas.read_csv('default.csv', index_col=0)
url = "https://business-textbooks.com/wordofwisdom100/" #データを取りたいページ
"""******************************
CSS SELECTORの設定
******************************"""
STRONG = "strong"
"""***************************************
実行部分
***************************************"""
browser.get(url)
strongs = browser.find_elements_by_css_selector(STRONG)
print(len(strongs))
for strong in strongs:
try:
word = strong.text
print(word)
se = pandas.Series([word],["word"])
df = df.append(se, ignore_index=True)
except Exception as e:
print(e)
print("Finished Scraping. Writing CSV.......")
df.to_csv("output.csv")
print("DONE")
4 : GAS에 코드를 씁니다.
명언.gs// シートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1"); // 「シート1」はシート名
//使用する変数を設定
var PROPERTIES = PropertiesService.getScriptProperties();
var LINE_ACCESS_TOKEN = PROPERTIES.getProperty('LINE_ACCESS_TOKEN')
var LINE_END_POINT = "https://api.line.me/v2/bot/message/reply"
var reply_token;
var query;
function doPost(e){
if (typeof e === "undefined"){
reply_token = ""
query = "満足"
} else{
var json = JSON.parse(e.postData.contents);
reply_token= json.events[0].replyToken;
//送られたLINEメッセージを取得
query = json.events[0].message.text;
}
Logger.log("検索キーワード"+query);
var answer = searchGSS(query);
postBackToLine(answer);
}
//GSSの名言(A1:A100)の中からLINEメッセージで送られてきたキーワードを含む名言を返す。
function searchGss(query){
var target_numbers = [];
var values = sheet.getRange("A1:A100").getValues();
for (var i = 0;i<values.length;i++) {
var value = values[i].toString();//object→string
if (value.indexOf(query)!=-1) {
target_numbers.push(i);
Logger.log(target_numbers);
}
}
if(target_numbers.length > 0) {
Logger.log(target_numbers)
var min = 0 ;
var max = target_numbers.length - 1 ;
var random = Math.floor( Math.random() * (max + 1 - min) ) + min ;
var target_number = target_numbers[random] + 1;
var target_value = sheet.getRange("A" + target_number).getValue();
}else{
var min = 0;
var max = 99;
var random = Math.floor( Math.random() * (max + 1 - min) ) + min ;
var target_value = sheet.getRange("A" + random).getValue();
}
return target_value
}
//LINEに名言を返す。
function postBackToLine(answer){
var messages = [{
"type": "text",
"text": "そういう時はこの名言!\n\n" + answer
}];
Logger.log(messages)
UrlFetchApp.fetch(LINE_END_POINT, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + LINE_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': reply_token,
'messages': messages,
}),
});
}
이상
QR 코드
아래의 QR코드에서 친구등록할 수 있으므로, 좋으면 시험해 주세요.
Reference
이 문제에 관하여(명언 LINE 봇을 만들어 보았다. (LINEAPI와 GAS를 사용하여 놀아 본 3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/totsunemario1412/items/1b92441c290ead780b13
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from selenium import webdriver
import pandas
"""***************************************
もろもろの設定
***************************************"""
browser = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')
df = pandas.read_csv('default.csv', index_col=0)
url = "https://business-textbooks.com/wordofwisdom100/" #データを取りたいページ
"""******************************
CSS SELECTORの設定
******************************"""
STRONG = "strong"
"""***************************************
実行部分
***************************************"""
browser.get(url)
strongs = browser.find_elements_by_css_selector(STRONG)
print(len(strongs))
for strong in strongs:
try:
word = strong.text
print(word)
se = pandas.Series([word],["word"])
df = df.append(se, ignore_index=True)
except Exception as e:
print(e)
print("Finished Scraping. Writing CSV.......")
df.to_csv("output.csv")
print("DONE")
// シートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1"); // 「シート1」はシート名
//使用する変数を設定
var PROPERTIES = PropertiesService.getScriptProperties();
var LINE_ACCESS_TOKEN = PROPERTIES.getProperty('LINE_ACCESS_TOKEN')
var LINE_END_POINT = "https://api.line.me/v2/bot/message/reply"
var reply_token;
var query;
function doPost(e){
if (typeof e === "undefined"){
reply_token = ""
query = "満足"
} else{
var json = JSON.parse(e.postData.contents);
reply_token= json.events[0].replyToken;
//送られたLINEメッセージを取得
query = json.events[0].message.text;
}
Logger.log("検索キーワード"+query);
var answer = searchGSS(query);
postBackToLine(answer);
}
//GSSの名言(A1:A100)の中からLINEメッセージで送られてきたキーワードを含む名言を返す。
function searchGss(query){
var target_numbers = [];
var values = sheet.getRange("A1:A100").getValues();
for (var i = 0;i<values.length;i++) {
var value = values[i].toString();//object→string
if (value.indexOf(query)!=-1) {
target_numbers.push(i);
Logger.log(target_numbers);
}
}
if(target_numbers.length > 0) {
Logger.log(target_numbers)
var min = 0 ;
var max = target_numbers.length - 1 ;
var random = Math.floor( Math.random() * (max + 1 - min) ) + min ;
var target_number = target_numbers[random] + 1;
var target_value = sheet.getRange("A" + target_number).getValue();
}else{
var min = 0;
var max = 99;
var random = Math.floor( Math.random() * (max + 1 - min) ) + min ;
var target_value = sheet.getRange("A" + random).getValue();
}
return target_value
}
//LINEに名言を返す。
function postBackToLine(answer){
var messages = [{
"type": "text",
"text": "そういう時はこの名言!\n\n" + answer
}];
Logger.log(messages)
UrlFetchApp.fetch(LINE_END_POINT, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': 'Bearer ' + LINE_ACCESS_TOKEN,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': reply_token,
'messages': messages,
}),
});
}
Reference
이 문제에 관하여(명언 LINE 봇을 만들어 보았다. (LINEAPI와 GAS를 사용하여 놀아 본 3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/totsunemario1412/items/1b92441c290ead780b13텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)