Surveillez les mises à jour des pages Web avec LINE BOT
      
      
        
        
        
        
tl;dr
- Si c'était complètement personnel, je pourrais facilement créer un Bot LINE.
 
- La diffusion (envoyer à tous les amis enregistrés) ne nécessite pas de serveur et peut être utilisée.
 
- De plus, en utilisant ngrok, etc., il était possible de publier sur un petit nombre de groupes spécifiques sans avoir besoin d'un serveur.
 
introduction
- Il peut arriver que vous souhaitiez consulter régulièrement la page Web, comme la page de vente en édition limitée.
 
- Ici, j'ai écrit le code pour surveiller les mises à jour régulières et notifier par LINE BOT en Python.
 
couler
- Inscrivez-vous auprès des développeurs LINE
 
- Obtenez le jeton d'accès à la chaîne
 
- Faites-vous des amis avec bot sur LINE
 
- Écrivez un LINE BOT en utilisant line / line-bot-sdk-python
 
- Rédigez le code de surveillance des mises à jour en utilisant psf / requests-html
 
- Si vous souhaitez publier pour un utilisateur spécifique ou un groupe spécifique, vous devez obtenir un identifiant qui indique la destination de publication.
 
- Vous avez besoin d'un serveur Web car vous devez recevoir des événements pour BOT sur le webhook
 
- Si la préparation est difficile, utilisez ngrok etc. pour le moment.
 
- Recevez simplement un webhook avec ngrok et Python
 
La description
Inscrivez-vous auprès des développeurs LINE
- LINE Developers-To use Messaging API
 
- Il est préférable de voir la formule. Veuillez noter que l'interface utilisateur peut changer un peu
 
- Vous avez besoin d'un identifiant de ligne pour vous connecter. Veuillez aller à la création de la chaîne.
 
- Le canal à créer est le canal de l'API de messagerie.
 
| Selection de CHAINE | 
  | 
Obtenez un jeton d'accès à la chaîne
- Après avoir créé le canal, émettez un problème à partir de l'onglet API de messagerie pour obtenir le `` Jeton d'accès au canal (longue durée) ''.
 
| channel access token | 
  | 
Inscrivez-vous comme ami
- Obtention d'un jeton d'accès à la chaîne Lisez le code QR en haut de cet écran et faites-vous des amis sur LINE.
 
- LINE publie officiellement un SDK pour python, alors utilisez ceci.
 
Installer le SDK
$ pip install line-bot-sdk
Je posterai à tous mes amis et au groupe que j'ai eu plus tôt
- la diffusion sera envoyée à tous les amis enregistrés.
 
from linebot import LineBotApi
from linebot.models import TextSendMessage
access_token = 'XXXXXXXXXXXXXXX'
line_bot_api = LineBotApi(access_token)
line_bot_api.broadcast(TextSendMessage(text='Diffuser à tous les amis'))
Contrôle de fonctionnement
- BOT devrait avoir envoyé le message "Diffuser à tous vos amis" comme indiqué ci-dessous.
 
- Si cela ne fonctionne pas, veuillez consulter access_token, l'enregistrement d'amis, etc.
 
| Exemple de message | 
  | 
4. Rédigez le code de surveillance des mises à jour en utilisant psf / requests-html
- Afin de surveiller la page Web, il est nécessaire d'interpréter le contenu affiché.
 
- Ici, j'utiliserai psf / requests-html.
 
Installation
$ pip install requests-html
Comment utiliser
La description
- A titre d'exemple, voyons si vous pouvez commander des produits sur la page suivante.
 
- Sur cette page Web, si vous pouvez ou non passer une commande est exprimé comme suit.
 
- L'emplacement des "Articles qui ne peuvent pas être commandés" deviendra "En stock", etc., il semble donc bon de garder un œil sur cela.
 
<div class="status-text">
	<div class="status-heading">
		<span class="status">Articles qui ne peuvent pas être commandés*</span>
	</div>
	<div class="status-note">
	<p>
	</p>
	</div><!-- /div#status-note -->
</div>
Essayez de gratter
- Après avoir accédé à la page Web comme ci-dessous
 
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://XXXXXXXXXXXXX/') # <----Saisissez l'URL à laquelle vous souhaitez accéder ici
- Vous pouvez utiliser r.html.find () pour affiner les éléments.
 
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('hxxps://XXXXXXXXXXXXX/') # <----Saisissez l'URL à laquelle vous souhaitez accéder ici
r.html.find('div.status-heading span.status')[0].text # <-----Articles qui ne peuvent pas être commandés*
- Depuis que j'ai bien la chaîne de caractères, il semble que je devrais juger la condition avec cela.
 
Essayez de combiner avec la partie notification de LINE
- Essayez d'envoyer une notification lorsque la chaîne de rupture de stock disparaît.
 
# -*- coding:utf-8 -*-
from linebot import LineBotApi
from linebot.models import TextSendMessage
from requests_html import HTMLSession
ACCESS_TOKEN = 'XXXXXXXXXXX'
TARGET_URL = 'hxxps://XXXXXXXXXXXXX/rb/16057071/'
STATUS_CSS_SELECTOR = 'div.status-heading span.status'
NG_STATUS = 'Articles qui ne peuvent pas être commandés'
def get_status():
    session = HTMLSession()
    r = session.get(TARGET_URL)
    return r.html.find(STATUS_CSS_SELECTOR)[0].text
def broadcast_to_friends(message):
    line_bot_api = LineBotApi(ACCESS_TOKEN)
    line_bot_api.broadcast(TextSendMessage(text=message))
if not NG_STATUS in get_status():
    broadcast_to_friends("Vous pouvez acheter le produit:" + TARGET_URL)
- Lorsque je l'ai exécuté, le message suivant a été envoyé.
 
|Exemple de message|
|:-:|:
|
|
Lorsque vous souhaitez publier pour un utilisateur spécifique ou un groupe spécifique
- Ce sera un message push au lieu d'une diffusion.
- https://developers.line.biz/en/reference/messaging-api/#send-push-message
 
 
- Pour envoyer ceci, vous avez besoin d'un identifiant qui identifie le groupe, etc.
 
- L'ID sera envoyé depuis LINE via un webhook lorsqu'une opération est effectuée sur le BOT, alors préparez-vous.
 
Recevoir le webhook
- Veuillez vous reporter à Recevoir simplement des webhooks avec ngrok et Python pour préparer un environnement pour recevoir des webhooks.
 
- Lorsque vous êtes prêt, entrez cette URL dans l'URL du Webhook dans l'onglet API de messagerie
 
- Appuyez sur Vérifier et en cas de succès, cochez Utiliser Webhook.
 
| Exemple de réglage | 
  | 
Mettez BOT dans un groupe et obtenez group_id
- Ensuite, définissez `` Autoriser le bot à rejoindre les discussions de groupe '' sur l'onglet API de messagerie sur Activé.
 
| Exemple de réglage | 
  | 
- Dans cet état, si vous placez ce LINE BOT dans un groupe approprié, le webhook volera.
 
- ngrok a un écran où vous pouvez confirmer la demande, vous pouvez donc la confirmer comme suit.
 
- Tout ce dont vous avez besoin, ce sont des événements [0] .source.groupId.
 
| Exemple de vérification sur l'écran d'inspection de ngrok | 
  | 
Pour push_message au lieu de diffuser
- Une fois que vous avez le groupId, utilisez 
  push_message au lieu de `` `` broadcast.
- https://github.com/line/line-bot-sdk-python#push_messageself-to-messages-notification_disabledfalse-timeoutnone
 
 
- À ce stade, donnez id comme premier argument.
 
-line_bot_api.broadcast(TextSendMessage(text='Diffuser à tous les amis'))
+line_bot_api.push_message(group_id, TextSendMessage(text='Envoyer un message à un individu'))
finalement
- Après cela, vous pouvez le compléter en l'exécutant régulièrement avec le planificateur de tâches ou cron.
 
- De plus, accéder mécaniquement à la page Web de cette manière peut mettre une charge sur le serveur de destination d'accès, il est donc recommandé de lire la page suivante lors de son utilisation.
 
- http://librahack.jp/
 
- https://vaaaaaanquish.hatenablog.com/entry/2017/12/01/064227