python 爬虫 自动切换 learnku 的白天 / 夜间模式
准备
- 进入终端,输入
pip install requests,lxml
来下载requests爬虫库和lxml(调用xpath)模块。- 将你的电脑时间设置为正规时间
流程
使用session会话的方法登录learnku。
进入查看目前时间的循环
判断当前时间
18点到凌晨4点开启夜间模式,其它时间开启白天模式
1.登录learnku
由于learnku每隔24小时都会给我们的cookie和token进行一个小修改,所以我们就不用cookie登录法了,这里我们就是用session来登录吧(账号与密码的办法)。
如果想进一步地了解session和cookie,请参考python3下使用requests实现模拟用户登录。
from lxml import etreeimport requests
s = requests.Session()#断点1
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'
}
s.headers.update(headers)#断点2
text = s.get('https://learnku.com').text
html = etree.HTML(text)
login_token = html.xpath('//meta[@name="csrf-token"]/@content')#断点3
payload ={
'_token':login_token,
'remember':'yes',
'return_back':'yes',
'username':'你的账号名',
'password':'你的账号密码'
}
s.post('https://learnku.com/auth/login', data=payload)#断点4
断点1:创建一个session会话的对象。
断点2:将session会话的user-agent设置为Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36
,主要是为了反反爬。
断点3:这段代码找出了登录接口所需要的参数token。
断点4:对登录接口https://learnku.com/auth/login
进行请求(登录)。
对了,在调用切换白天/夜间模式之前,你还要找出使用session再一次找出新token。
token = html.xpath('//meta[@name="csrf-token"]/@content')
2.对切换白天/夜间模式接口进行请求
代码:
url ='https://learnku.com/users/settings/night_mode'data ={'_method':'POST',
'_token':token}
s.post(url,data=data)
3.datetime获取当前时间
在无数的时间模块之间,datetime模块是让我最满意的。datetime是个内置模块,使用起来非常方便,所以我非常推荐大家学一学。如果你想进一步地了解datetime模块,不妨去看一下Python3标准库大全之datetime教程。
回到我们的主题
首先,我们要导入datetime模块。
import datetime
然后我们就可以弄个判断时间的永远循环了。
whileTrue: now = datetime.now()
hour = now.hour
text = s.get('https://learnku.com').text
html = etree.HTML(text)
day_or_night = html.xpath('/html[@lang="zh"]/@class')[0]#断点
if hour >18or hour <4:
if day_or_night =="":
s.post(url,data=data)
else:
if day_or_night =='night-node':
s.post(url,data=data)
断点:查看当前的模式为白天还是夜间。
完整代码:
from lxml import etreeimport requests
from datetime import datetime
s = requests.Session()
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36'
}
s.headers.update(headers)
text = s.get('https://learnku.com').text
html = etree.HTML(text)
login_token = html.xpath('//meta[@name="csrf-token"]/@content')
payload ={
'_token':login_token,
'remember':'yes',
'return_back':'yes',
'username':'你的账号名',
'password':'你的密码'
}
s.post('https://learnku.com/auth/login', data=payload)
text = s.get('https://learnku.com').text
html = etree.HTML(text)
token = html.xpath('//meta[@name="csrf-token"]/@content')
url ='https://learnku.com/users/settings/night_mode'
data ={'_method':'POST',
'_token':token}
whileTrue:
now = datetime.now()
hour = now.hour
text = s.get('https://learnku.com').text
html = etree.HTML(text)
day_or_night = html.xpath('/html[@lang="zh"]/@class')[0]
if hour >18or hour <4:
if day_or_night =="":
print("夜间模式已开启")
s.post(url,data=data)
else:
if day_or_night =='night-node':
print("白天模式已开启")
s.post(url,data=data)
以上是 python 爬虫 自动切换 learnku 的白天 / 夜间模式 的全部内容, 来源链接: utcz.com/p/216926.html