Bot Crawler Adventskalender 2016 wahrscheinlich, weil ich an [Crawler / Web Scraping Adventskalender 2016] teilgenommen habe (http://qiita.com/advent-calendar/2016/crawler) Ich wurde zu (/ advent-calendar / 2016 / bot) eingeladen, also habe ich beschlossen, etwas zu schreiben, also habe ich einen LINE BOT mit dem Gefühl gemacht, dass ich 2016 zurückgelassen habe.
Ich habe einen BOT erstellt, um Apples überholte Produkte vorzustellen.
Es hat die folgenden Funktionen.
Wenn Sie so freundlich sind, es zu versuchen, versuchen Sie es bitte mit "Freund hinzufügen" aus dem unten stehenden QR-Code.
Der endgültige Code sieht folgendermaßen aus:
from __future__ import print_function
import requests
import json
import os
import boto3
import random
print('Loading function')
LINE_API_ENDPOINT = 'https://api.line.me/v2/bot/message/reply'
LINE_API_HEADERS = {
'Authorization': 'Bearer ' + os.environ['LINE_CHANNEL_ACCESS_TOKEN'],
'Content-type': 'application/json'
}
def lambda_handler(event, context):
for event in event['events']:
reply_token = event['replyToken']
message = event['message']
payload = {
'replyToken': reply_token,
'messages': []
}
items = get_items_by_keyword(message['text'])
if len(items) == 0:
payload['messages'].append({
'type': 'text', 'text': message['text']
})
else:
item = items[0]
payload['messages'].append({
'type': 'text', 'text': item['title'] + item['price'] + item['link']
})
response = requests.post(LINE_API_ENDPOINT, headers=LINE_API_HEADERS, data=json.dumps(payload))
print(response.status_code)
def get_items_by_keyword(keyword=None):
key = 'items.json'
s3 = boto3.client('s3')
response = s3.get_object(Bucket='apple-refurbished', Key=key)
items = json.load(response['Body'])
result = []
for item in items:
if item['title'].find(keyword) != -1:
result.append(item)
random.shuffle(result)
return result
Messageing API -> Reply Message Legen Sie den Endpunkt, den Header usw. unter Bezugnahme auf API-Referenz fest.
Das Channel Access Token wird im Lambda-Einstellungsbildschirm als Umgebungsvariable festgelegt.
Anfragen
nicht installiert ist, wird es mit der ZIP-Datei gebündelt und hochgeladen.Installieren Sie "Anfragen" direkt unter dem Projektverzeichnis.
$ cd /path/to/project
$ pip install requests -t .
Der Verzeichnisbaum sieht folgendermaßen aus:
.
├── lambda_function.py
├── requests
│ ├── __init__.py
│ ├── ...
└── requests-2.12.4.dist-info
├── ...
Komprimieren Sie den Quellcode und die erforderlichen externen Bibliotheken in eine ZIP-Datei und laden Sie sie von der AWS Lambda-Webkonsole hoch.
Referenz) Bereitstellungspaket erstellen (Python) --AWS Lambda
Das Ergebnis des Crawls der folgenden URL sollte regelmäßig in S3 im JSON-Format gespeichert und die JSON-Datei aus der Lambda-Funktion gelesen werden.
Ich denke nicht, dass es mit dieser Geschichte möglich ist, aber wenn Sie gute Ideen haben, würde ich sie gerne implementieren und in LINE BOT AWARDS eintragen. ..
Bis bald.