使用line機器人整合學校公告資訊

少於 1 分鐘閱讀

尚未完成

本章節將帶過line機器人,python 爬整合教學。
code repo: https://github.com/chenliTW/yphshomeworkbot

前情提要(不重要可以跳過):
小弟的學校號稱台北某私立監獄,校地是全台灣高中職名列前茅的小,教室也還是20年前的樣子(窗戶還裝著鐵窗),不意外的,我們的網路系統也是舊的可憐。
我們學校的資訊股長被賦予一個任務,就是把每天的聯絡簿打進網路聯絡簿平台,只要登入這個平台,就能收到學校的新消息。
但是,每次使用那個平台都必須輸入(學號/生日/生份證)登入查看,而且版面沒設計手機版的,所以小弟決定做一個爬蟲,把訊息排下來後傳到line班群。

安裝dependency

小弟用的是python3,安裝requests與beautifulsoups通訊與解析,line-bot-sdk操作機器人。

pip3 install lxml requests beautifulsoup4 line-bot-sdk

第零部分-場勘

1.首先,我們要知道學校網頁運作的原理 burpsuite真的很好用
2.到學校網路聯絡簿的登入頁面,發現

post

第一部分-製作爬蟲

1.先import需要用到的module

  • requests -> 用來傳送HTTP requests
  • BeautifulSoup -> 用來解析收到的網頁

    import requests from bs4 import BeautifulSoup 2.定義global參數,待會會用到 :) #紀錄檔PATH(建議絕對位置) log_path=’./log.txt’ #登入聯絡簿的個資 sid=’‘#學號(Ex. 10731187) cid=’‘#生份證號(Ex. A123456789) bir=’‘#生日(Ex. 2000/1/1) #平台(line or telegram) platform=’line’

2.登入

def login_homework():
	res = requests.get('http://www.yphs.tp.edu.tw/tea/tu2.aspx')
	soup = BeautifulSoup(res.text, "lxml")VIEWSTATE=soup.find(id="__VIEWSTATE")
	VIEWSTATEGENERATOR=soup.find(id="__VIEWSTATEGENERATOR")
	EVENTVALIDATION=soup.find(id="__EVENTVALIDATION")
	res=requests.post('http://www.yphs.tp.edu.tw/tea/tu2.aspx', allow_redirects=False, data = {'__VIEWSTATE':VIEWSTATE.get('value'),'__VIEWSTATEGENERATOR':VIEWSTATEGENERATOR.get('value'),'__EVENTVALIDATION':EVENTVALIDATION.get('value'),'chk_id':'學生/家長','tbx_sno':sid,'tbx_sid':cid,'tbx_sbir':bir,'but_login_stud':'登  入'})
	global cook
	cook=res.cookies['ASP.NET_SessionId']
	return

3.

第二部分-申請line-bot

123

第三部分-連結line api

456

留言