三基三严网站爬虫的一些小问题

一年前就是因为《写个爬虫对付三基三严》 这篇文章才开始学习Python的,现在机会自己在同一个网站重复一遍。

有差不多九个月没有用Python,重新搭建环境、修改现有代码,又再次走了一些弯路。当时认为不会忘记、不值得记录的一些细节,居然没有印象了,大概是因为年老或睡眠不足了。这些流水账之类的东西,不值得写在印象笔记里面,那就增加一篇网络垃圾吧。

搭建环境需要Anaconda+PyCharm+Chrome+Fiddler。现在50M带宽,下载速度非常快。

PyCharm应该下载专业版,然后用edu邮箱认证的key注册,而不是下载教育版。

Anaconda的安装就最坑了。首先安装时要勾选Add to PATH。而且5.1版本之后出现了Windows有时无法完整安装的Bug,还被我遇到了。幸好把Anaconda安装在盘根就能解决问题,不然就得用miniconda引导安装,有点麻烦。而且Anaconda比较巨大,安装卸载一遍很费时。

Fiddler也变了。之前在内网调试爬虫时是用win7和http,也没有那么多干扰流量,现在用自己的win10,新的网站是使用https,又是AppContainer又是设置https非常麻烦。

img

好不容易配置好环境之后,打开PyCharm,逐行套用原有代码。

网址较一年前稍有改变,现在是https://sum.medu2011.com/zsy/

首先是Cookies的问题。使用密码和验证码登录之后就获得一个Cookies,使用这个Cookies就得直接用抓虫登录,跟之前抓过的两个网站一样。而这个网站每隔一段时间会刷新Cookies,需要重新手动获取。

原代码是添加一个名字用于存放Cookies,作为get的参数提交。

1
req = s.get(url, headers = headers, cookies = zsy_cookie)

但其实直接把它写在headers里面也可以。

1
2
3
4
5
6
7
8
9
10
11
12
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6,ja;q=0.5',
'Connection': 'keep-alive',
'Host':'sum.medu2011.com',
'Cookie': 'JSESSIONID=0D7AA53641F78FF8784CC29D5F8DD7EB',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',
'Referer': 'https://sum.medu2011.com/zsy/pages/common/model_test.jsp?planlevelid=11950',
'X-Requested-With': 'XMLHttpRequest',
'DNT': '1'
}

实际上需要研究的网页是两个:一个是试题列表页面,一个是具体的题库练习页面。

在试题列表页面找到试题编号。

img

点击“练习”按钮会弹出考试界面。不知道为什么,新的界面没有办法按F12,但右键→检查或者ctrl+shift+I还是可以调出调试窗口。

所有的页面是用同一个Cookies。

网页的结构已经被摸得很清楚了。试题就在JSON里面。request.get一下就能得到这个JSON。请求的URL有一个planLevelId参数,是试题编号,可以像原代码一样,放在url里面

1
url = r'http://medu2011.com:8083/zsy/paper/createPaperByPlanLevelId.do?planLevelId='+str(x)

也可以作为get的参数

1
req = s.get(url, params={'planLevelId': x}, headers=headers)

接下来大部分代码是在处理这个JSON。

网上有很多在线的JSON格式化工具,比如http://tool.oschina.net/codeformat/json

img

原代码是提取题干和正确选项,但有一套题的很多正确选项是“以上都是”或者什么A+B+C之类的。

img

于是修改代码,把所有的选项都提取出来。

img

最后下载到的多个txt,可以在CMD窗口用type *.txt >>111.txt合并

代码详见https://github.com/chchuj/HIS-hack/blob/master/sanjisanyan.py

原文发表于《三基三严网站爬虫的一些小问题

Chalkit wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!