我之前在python爬虫帮妈妈刷学分这篇博文记录过刷学分的历程,只不过当时没有用微信机器人自动刷学分,还是需要给公众号手动输入代码。
这里我引进了“可能是最优雅的微信个人号 API”-wxpy来实现了自动化。
具体代码如下:
#url2txt
#把url批量存入url.txt
import urllib.request as request
import urllib.parse as parse
import string
import re
import os
import urllib.error as error
import urllib
def fetch(baseUrl):
# 第1步:模拟浏览器发送请求
response = urllib.request.urlopen(baseUrl)
data = response.read()
data=data.decode('utf-8')
# 第2步:页面返回后,利用正则表达式提取想要的内容
nameList=[]
nameList = re.compile(r'<a href="(.*?)" >',re.DOTALL).findall(data)
# 第3步:返回在页面上析取的“标题名”
return nameList
####### 执行 ########
if __name__ =="__main__":
#要抓取的网页地址
url = "http://jsxy.gsedu.cn/wx/course/courseSelect.xhtm?FromUserName=obK7fskWFpwRPTYswm7NipdP6sJM&unread=1"
#存放到名字列表中
NameList = fetch(url)
# 输出 NameList
Length = len(NameList)
for i in range(0, Length):
print ('%d ref is:%s' %(i+1, NameList[i]))
with open(os.path.join('url.txt'), 'w') as f:
for i in range(0,Length):
f.write("\n")
f.write(NameList[i])
上面代码会把所有的未读文章url写入url.txt。
然后需要把这里面的全部url批量解析,把文章代码批量存入code.txt,代码如下:
import urllib.request as request
import urllib.parse as parse
import string
import re
import os
import urllib.error as error
import urllib
def fetch(baseUrl):
# 第1步:模拟浏览器发送请求
response = urllib.request.urlopen(baseUrl)
data = response.read()
data=data.decode('utf-8')
# 第2步:页面返回后,利用正则表达式提取想要的内容
nameList=[]
nameList = re.compile(r'请直接回复“(.*?)</strong>',re.DOTALL).findall(data)
# 第3步:返回在页面上析取的“标题名”
return nameList
####### 执行 ########
if __name__ =="__main__":
with open(os.path.join('url.txt'), 'r') as f:
for line in f.readlines():
NameList = fetch(line)
with open(os.path.join('code.txt'), 'a') as f:
f.write("\n")
f.write(NameList[0])
这里会出现极少的错误和无用数据,自己手工删除下即可。
然后利用wxpy机器人给甘肃教师学苑公众号定时发送消息即可:
# 导入模块
from wxpy import *
# 初始化机器人,扫码登陆
bot = Bot()
gansu = bot.mps().search(u"甘肃教师学苑")[0]
gansu.send('5207')
然后就能看到:
如果你觉得本文有用,可以给作者打赏一下。