avatar

爬取学习通章节测验

前言

把课后题爬下来当题库复习,不过考虑到我知识的熟练度和5天内复习完7门课的时间限制,选择手动把章节测验的网页源代码复制下来。别急昂,我们先忍他一手,考完试把它安排的明明白白

不想看原理的直接下拉到后面的百度云链接下载即可!

准备

  • 导入相关包
1
2
import os
from bs4 import BeautifulSoup

核心代码

  • 获取章节测验源代码
1
2
3
4
# 这里是手动复制下来的,对于账模拟账号登录还不是很熟练
workPath = 'e:/xxtDem/'
# 将文件夹下的文件名作为一个列表
listFiles = os.listdir(workPath)
  • 解析每个文件的源代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
for file in listFiles:
# 将工作路径和文件名进行拼接
currentFile = workPath + file
# 读出网页源代码
with open(currentFile,mode='r',encoding='utf-8') as f:
html = f.read()

# 实例化解析器
soup = BeautifulSoup(html, 'lxml')

# 以文件名为开头,进行字符串拼接
string = file + '\n'
questions = soup.select('.TiMu')

# 以题为单位,首先爬取问题,然后爬取选项
# 每道题的div的style独一无二,所以将其作为选择依据
for i in questions:
question = i.select('div[style*="left"]')
# 先分割后合并,去除制表符
question = ''.join(question[0].text.split())

string += question + '\n'
# 获取选项和选项内容
answers = i.select('form i, form p')
length = len(answers) - 1
for index,j in enumerate(answers):
if not j:
break
if index % 2 == 1:
string += j.text + '\t'
else:
string += j.text
if index == length:
string += '\n'

string += '\n'

# 写入txt文件
with open('e:/demResult.txt',mode='a',encoding='utf-8') as f2:
f2.write(string)

百度云链接

数字高程模型题库,提取码44d0!

结语

对于word的写入熟练度不高,并且部分题的配图没有进行解析,时间关系嘛!如果觉得下面的题库对你有用的话,麻烦赞赏扫码(狗头.jpg)!

文章作者: Gy
文章链接: http://sgyat.cn/2020/06/09/爬取学习通/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 年轻没有梦
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论