python 爬虫 自动切换 learnku 的白天 / 夜间模式

准备

  • 进入终端,输入pip install requests,lxml来下载requests爬虫库和lxml(调用xpath)模块。
  • 将你的电脑时间设置为正规时间

流程

  1. 使用session会话的方法登录learnku。

  2. 进入查看目前时间的循环

  3. 判断当前时间

  4. 18点到凌晨4点开启夜间模式,其它时间开启白天模式

1.登录learnku

由于learnku每隔24小时都会给我们的cookie和token进行一个小修改,所以我们就不用cookie登录法了,这里我们就是用session来登录吧(账号与密码的办法)。
如果想进一步地了解session和cookie,请参考python3下使用requests实现模拟用户登录

from lxml import etree

import 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 etree

import 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)

coder Derek

以上是 python 爬虫 自动切换 learnku 的白天 / 夜间模式 的全部内容, 来源链接: utcz.com/p/216926.html

回到顶部