Ceci est mon premier article sur Qiita. Si vous faites une erreur, vous pouvez utiliser un ton dur, alors faites-le nous savoir dans les commentaires.
État d'utilisation
Je ne sais pas quand le supprimer de Heroku. Dans ce cas, j'aimerais que vous l'utilisiez dans votre environnement local, Raspeye, ou votre propre Heroku.
Je vais au système d'information. Cependant, je ne faisais que du langage C et je n'ai jamais fait de créations. (Je n'ai pas trouvé la programmation amusante)
Nous développons également une application Web avec Django, mais nous avons d'abord sélectionné LINE's BOT comme quelque chose qui peut être facilement créé.
De plus, KENTA, un ingénieur général en alimentation, a recueilli des informations.
-Hatena Signet
Vous avez dit que vous lisez la colonne des tendances comme.
Cependant, je n'avais pas envie d'ouvrir mon ordinateur et de vérifier les nouvelles du matin. Alors il vaudrait mieux continuer la programmation ...
J'ai pensé qu'il serait bon de le vérifier dans mon petit temps libre ou en voyage, et de découvrir ce qui m'est utile plus tard, alors je l'ai complété dans le portable LINE.
J'aimerais que cette personne l'utilise.
est. Puisqu'il s'agit d'un BOT de la ligne, il peut être utilisé facilement sans qu'il soit nécessaire d'installer inutilement l'application.
J'écrirai ceci pour la première fois.
En plus de l'environnement de développement ci-dessus, l'enregistrement des développeurs LINE est requis.
Si l'enregistrement ne fonctionne pas, consultez l'article sur https://qiita.com/kro/items/67f7510b36945eb9689b.
J'utiliserai celui distribué comme modèle sur Github, modifié dans l'article précédent de Qiita. Il semble y avoir une erreur.
dir_name/main.py
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
import os
app = Flask(__name__)
#Obtenir des variables d'environnement
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
if __name__ == "__main__":
# app.run()
port = int(os.getenv("PORT", 5000))
app.run(host="0.0.0.0", port=port)
Je vais ajouter le grattage ici.
Importez la bibliothèque avant cela
import requests
from bs4 import BeautifulSoup
import os,json
Ces articles disent quelque chose de très important. En ce qui concerne la charge sur le serveur, il est dangereux si l'expéditeur fait intentionnellement un grand nombre de requêtes. Après avoir observé la situation, supprimez-le de Heroku, téléchargez-le sur le serveur pour un usage privé à partir de votre propre Raspberry Pi, etc., et utilisez-le.
Je ne l'ai pas du tout monétisé et j'ai publié un lien, il ne devrait donc pas y avoir de problèmes de droits d'auteur. Cela signifie que vous citez.
Tout d'abord, raclez sur Hatena Bookmark. J'ai pu le gérer de manière assez simple.
def create_h():
h_matome = []
title_list = []
url_list = []
load_url = "https://b.hatena.ne.jp/hotentry/it"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")
topic = soup.find_all("a", class_="js-keyboard-openable")
for element in topic[:30]:
if not element:
continue
title_list.append(element.get("title"))
url_list.append(element.get("href"))
for (i, j) in zip(title_list, url_list):
h_matome.append("[title]" + i)
h_matome.append("[URL]" + j + "\n")
h_matome_lenear = "--[Signet Hatena]--" + "\n" + "\n".join(h_matome)
return h_matome_lenear
https://qiita.com/Daara_y/items/c4b01107bc6191b9fbff J'ai ajusté la forme en me référant à. Cela peut ne pas être utile car il est poussé dur.
def create_q():
load_url = "https://qiita.com/"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")
li = []
for items in soup.find_all():
if "data-hyperapp-props" in items.attrs:
li.append(items["data-hyperapp-props"])
"""
Retrouvez les fonctionnalités ci-dessous.
pprint(li[1])
('{"trend":{"edges":[{"followingLikers":[],"isLikedByViewer":false,"isNewArrival":false,"hasCodeBlock":false,"node":{"createdAt":"2020-09-02T00:39:45Z","likesCount":511,"title":"Feuille de route d'apprentissage JavaScript","uuid":"ae2dbbd34f8557d5af19","author":{"profileImageUrl":"https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335670/profile-images/1598003375","urlName":"yukiji"}}},{"followingLikers":[],"isLikedByViewer":false,"isNewArrival":false,"hasCodeBlock":false,"node":{"createdAt":"2020-09-01T17:29:32Z","likesCount":249,"title":"Masa
"""
datas = json.loads(li[1])
result = []
#Je ne veux que la partie clé appelée node, donc j'obtiens autant
for edges in datas['trend']['edges']:
result.append(edges['node'])
q_matome = []
for v in result[:20]:
q_matome.append('[title]:' + v['title'] )
q_matome.append('[URL]:' + load_url + v['author']['urlName'] + "/items/" + v['uuid'] + '\n')
q_matome_lenear = "--【Qiita】--" + "\n\n" + "\n".join(q_matome)
return q_matome_lenear
Faites-le également réagir lorsque vous recevez le mot XX en tant que message de ligne.
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
res1 = create_h()
res2 = create_q()
if event.type == "message":
if event.message.text == "Hatena":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=res1))
elif event.message.text == "Kita":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=res2))
else:
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="Entrez "Hatena" ou "Kita" pour recevoir les informations."))
Pour git, je publierai un site de référence. https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000
Ensuite, en utilisant git Bash,
Je l'ai déployé comme ça.
Recommended Posts