日常生活中,每个人都有关注的事情,像是演唱会门票的开卖、喜欢的商品降价或新电影上档等,而为了要及时自动取得这些资讯,Python网页爬虫就被广泛的使用,除了将爬取的信息透过
[Python实战应用]Python寄送Gmail电子邮件实战教学文章介绍的电子邮件进行通知外,另一个备受欢迎的接收通知管道就是LINE。
而LINE官方提供了LINE Notify的服务,只要完成和LINE网站的连动设定,就可以通过LINE Notify推播或传送消息至目标使用者的LINE中。
本文即以Udemy线上课程网站为例,利用Python网页爬虫关注想购买的线上课程,只要低于指定的价格,就透过LINE Notify服务传送消息给使用者。本文的重点包含:
登录LINE Notify服务
发行LINE Notify权杖(Token)
整合Python网页爬虫及LINE Notify服务
一、登录LINE Notify服务
首先,前往LINE Notify官网,来进行Python网页爬虫与LINE Notify的连动设定,如下图:
点选右上角的登入,输入LINE帐号及密码,如下图:
成功登入后,就可以看到「管理登录服务」页面,如下图:
接着,点击「登录服务」,输入LINE Notify服务的基本资料,由于本文的Python爬虫是跑在本机上,所以「服务网址」及「Callback URL」皆为http://127.0.0.1,如下范例:
填写完成后,点击「同意并前往下一步」,就可以看到刚刚所输入的基本资料,确认没问题点选「登录」按钮即可,如下范例:
这时后LINE Notify会发送认证邮件到登录服务时,所填写的电子邮件账号中,如下图:
而密码则需点击服务,才可以看到,如下图:
以上就完成了LINE Notify服务的基本资料登录了。
二、发行LINE Notify权限(Token)
有了的服务帐号及密码后,接下来,就可以向LINE Notify取得权限(token),各位可以把它想像是一张活动的门票,只要参加者有这张门票,就可以进入会场,并且主办单位会为参加者提供多样的服务。
同样的道理,只要程式码中带有LINE Notify所给的权限(token),LINE Notify就会为你提供传送消息的服务。
回到LINE Notify官网,点击右上角姓名旁的箭头,选择「个人页面」,如下图:
这时候就可以看到「发行权限」的按钮,如下图:
点击后进入后,首先填写「权限名称」,再选择要将消息传送给谁。这边的「权杖名称」,会出现在消息的开头,之后才接着自订的消息,有点像消息标题的概念,如下图:
点击发行,就可以看到LINE Notify服务的权限(token),如下图:
这边要特别注意,离开页面后,就不会再产生新的权杖(token)了,所以记得马上复制起来。
三、整合Python网页爬虫及LINE Notify服务
取得了LINE Notify的权杖(token)后,现在就能请它帮我们传讯息了。本文利用Python的BeautifulSoup套件,开发了一个Python网页爬虫,爬取某个课程的目前价格,如下范例:
from bs4 import BeautifulSoupbs4 import BeautifulSoup
import requests
response = requests . get ( "https://www.udemy.com/course/codegym-python/" )
soup = BeautifulSoup ( response . text , "html.parser" )
price = soup . find ( "span" , {
"class" : "price-text__current" }). getText ()[ 7 :] #取得文字中的价格部分
其中所使用的BeautifulSoup爬虫观念,当价格小于500元时,就透过LINE Notify传送降价的消息,如下范例:
from bs4 import BeautifulSoupbs4 import BeautifulSoup
import requests
response = requests . get ( "https://www.udemy.com/course/codegym-python/" )
soup = BeautifulSoup ( response . text , "html.parser" )
price = soup . find ( "span" , {
"class" : "price-text__current" }). getText ()[ 7 :] #取得文字中的价格部分
if int ( price ) < 500 : #将爬取的价格字串转型为整数
headers = {
"Authorization" : "Bearer " + "你的权杖(token)" ,
"Content-Type" : "application/x-www-form-urlencoded"
}
params = {
"message" : "Python基础课程和网路爬虫入门实战已降价至" + price + "元" }
r = requests . post ( "https://notify-api.line.me/api/notify" ,
headers = headers , params = params )
print ( r . status_code ) #200
执行结果
从范例中可以看到,要利用LINE Notify传送消息时,需在headers中加上刚刚所取得的权杖(token),接着自订所要传送的消息,如第16行,最后,呼叫LINE Notify的API,如果没有发生问题,则会得到200的状态码(status_code)。
四、小结
以上就是利用简单的实务范例来了解Python网页爬虫如何和LINE Notify整合,来推播或传送所爬取的信息,是不是非常的方便阿。现在就来找一个关注的目标,练习用Python网页爬虫取得信息的同时,结合LINE Notify来帮你传送消息吧。