python爬虫提取人名_Python2爬取学生名单-程序员宅基地

技术标签: python爬虫提取人名  

背景:

学校的网站可以根据学号查学生姓名和成绩(三年后的补充:借助sql注入漏洞跳过密码,但是该网站现在已经被弃用了),所以我希望通过Python的爬虫得到年级所有同学的学号与姓名对应表。

实现:

首先需要算出所有学生的学号以方便查询。接下来要把学号和考试场次包装成待会要填入的信息,这可以用urllib模块里的函数urlencode完成。之后要访问网站,先用urllib2模块里的Request函数获得访问令牌(其实我也不知道是什么)(三年后的补充:Request函数构造了一个HTTP请求,后面urlopen函数以这个请求和一个表为参数发送Post请求),然后用urlopen函数把需要填入的信息和令牌传进去就可以得到查询结果网页的源代码了!

此后是分析源代码环节,经过分析后发现所需要的姓名在源代码中字符串“姓名”之后的>和&字符之间。故用find函数找到字符串“姓名”的位置,然后用两个变量找到>和&字符的位置,截取之间的字符串就可以得到姓名了。同时表格有一个叫csv的储存形式,是以文本的方式储存的,且可以通过各类Excel软件另存为为xls文件,是我们的首选。

既然是Python2,就不得不处理编码。在程序头添上使用utf-8的声明,同时在程序开始处加入

1 importsys2 reload(sys)3 sys.setdefaultencoding('utf-8')

把程序内的字符串全部指定为Unicode字符串。同时网页源代码也要由gbk编码转为utf-8。有一点坑的就是原网页的编码是gb2312,结果有同学的姓名是一些奇怪的字,导致会RE。最后查了很久才发现要用gbk代替gb2312来解码。

代码:</

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39987985/article/details/109860259

智能推荐

解决Unity开启多个协程卡顿问题_unity 多个协程-程序员宅基地

文章浏览阅读3.1k次。Unity开启多个协程往往造成卡顿,因此需要每完成一个协程再新开启一个协程。for (int i = 0; i < result.result.Count; i++) { try { BaseStation responses = JsonMapper.ToObject<BaseStation>(JsonMapper.ToJson(result.result[i])); ..._unity 多个协程

spring+SpringMvc+Mybaits配置多个数据库_springmvc+mybatis配置多个数据库-程序员宅基地

文章浏览阅读410次。一、配置文件二、创建一个实体类,切换数据库三、切换数据库的代码_springmvc+mybatis配置多个数据库

前端框架们_阿里 前端框架 乌米-程序员宅基地

文章浏览阅读675次。我司打算搞个地图应用,领导发给我一份ppt,里面有个前端的技术架构图:what!前端技术都进化得这么复杂啦?就搞一个前端,至于用到这么多框架?就问你晕不晕!底部的es6,fetch是基础的语法,这个没什么好讲的。arcgis jsapi,是地图服务接口,也没什么好说的。webpack,打包工具,还行吧。顶部的echarts,经常用,很好用,不错。但ant design是蚂蚁金服的东东,与r..._阿里 前端框架 乌米

Turn on ClearType。打开ClearType看英文资料不再那么费眼。-程序员宅基地

文章浏览阅读64次。下面是微软提供的在线打开ClearType 网址,装好插件之后按提示一步一步的点下去。发现还是比较爽的。呵呵~http://www.microsoft.com/typography/cleartype/tuner/Step1.aspx转载于:https://www.cnblogs.com/zwwon/archive/2007/07/10/812598.html..._chrome 英文和数字显示cleartype

jQuery.template.js 简单使用-程序员宅基地

文章浏览阅读125次。之前看了一篇文章《我们为什么要尝试前后端分离》,深有同感,并有了下面的评论:我最近也和前端同事在讨论这个问题,比如有时候前端写好页面给后端了,然后后端把这些页面拆分成很多的 views,有时候还会在这些 view 中写一些 c# 代码,突然有一天前端页面的样式出错了,但前端那里并没有问题,然后后端把前端叫过来,说你在我这里调吧,因为你没有后端的调试环境,然后前端就会很不爽,然后。。。你懂的!..._/template/pc/skin/js/jquery.js

天池:零基础入门NLP - 新闻文本分类_天池学习赛零基础入门nlp - 新闻文本分类完成-程序员宅基地

文章浏览阅读256次。天池:零基础入门NLP - 新闻文本分类赛题理解解题思路赛题理解赛题链接:https://tianchi.aliyun.com/competition/entrance/531810/information划重点:字符级匿名处理(防止人工标注答案)、14个分类类别(0-13)、评价标准为类别f1_score的均值(越大越好)解题思路【难点】数据形式是匿名化字符,无法分词【分析】文本数据是典型的非结构化数据,可能涉及特征提取和分类模型两个部分【思路】TF-IDF + 机器学习分类器_天池学习赛零基础入门nlp - 新闻文本分类完成

随便推点

react Link跳转无效_React Native开发之react-navigation详解-程序员宅基地

文章浏览阅读299次。众所周知,在多页面应用程序中,页面的跳转是通过路由或导航器来实现的。在0.44版本之前,开发者可以直接使用官方提供的Navigator组件来实现页面的跳转,不过从0.44版本开始,Navigator被官方从react native的核心组件库中剥离出来,放到react-native-deprecated-custom-components的模块中。 如果开发者需要继续使用Navigator,则需要..._react navigate(-1) url不生效

python倒计时60,Python微项目分享之重要事件倒计时-程序员宅基地

文章浏览阅读109次。作者:JiawuZhang出品:JiawuLab(ID:jiawulab)微项目系列是JiawuLab原创栏目,每期选取一个自创项目或发现有趣的项目,进行代码、逻辑分析,达到python学习目的。大家好,我是JiawuZhang,本期微项目是——事件倒计时。项目介绍“11月11日0点0分0秒!”你是不是也在等着这个时间?看看电视,玩玩手机,刷刷购物车,只为等着这个时间到来。图片来自网络我老婆也是这..._python倒计时60秒

Could not connect to https://mirrors.tuna.tsinghua.edu.edu.cn/anaconda/pkgs/free/noarch/_could not connect to mirrors.tuna.tsinghua.edu.cn-程序员宅基地

文章浏览阅读5k次。解决方法:删除 .condarc文件 。 .condarc以点开头,一般表示 conda 应用程序的配置文件,在用户的根目录 (windows:C:\users\username\,linux:/home/username/)。但对于.condarc配置文件,是一种可选的(optional)运行期配置文件,其默认情况下是不存在的。 ..._could not connect to mirrors.tuna.tsinghua.edu.cn

MAC安装git的三种方式-程序员宅基地

文章浏览阅读1.7w次,点赞7次,收藏25次。以上是在MAC操作系统中安装Git的三种不同方式。Homebrew是最方便的方式之一,但如果您不想使用Homebrew,则可以选择从官方Git网站下载安装程序或使用Xcode Command Line Tools安装Git。无论您选择哪种方法,都应该能够很容易地安装和使用Git。_mac安装git

基于风控特征相关度,挖掘贷中等场景中的存量客户价值|来看看相关实操_风控 建立存量客户的特征标签-程序员宅基地

文章浏览阅读836次。基于风控特征相关度,挖掘贷中等场景中的存量客户价值|来看看相关实操_风控 建立存量客户的特征标签

Internet Download Manager v6.36 Build 3 Final 注册版-IDM下载工具_ternet_download_manager 注册版-程序员宅基地

文章浏览阅读1.9k次。亲测可用Internet Download Manager(简称IDM)下载速度最多达其他下载工具5倍的下载具。Internet Download Manager的续传功能可以恢复因为断线、网络问题、计算机当机甚至无预警的停电导致下传到一半的软件。此程序具有动态档案分割、多重下载点技术,而且它会重复使用现有的联机,而不需再重新联机登入一遍。聪明的in-speed技术会动态地将所有设定应用到某种..._ternet_download_manager 注册版

推荐文章

热门文章

相关标签