Python2爬取学生名单

背景:

学校的网站可以根据学号查学生姓名和成绩,所以我希望通过Python的爬虫得到年级所有同学的学号与姓名对应表。

实现:

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

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

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

1 import sys
2 reload(sys)
3 sys.setdefaultencoding(‘utf-8‘)

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

代码:

#-*- coding: UTF-8 -*-
import urllib
import urllib2
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
url=‘http://www.baidu.com‘
f=open(‘E:/list.csv‘,‘a‘)
for i in range(1,21):
    for j in range(1,66):
        table=[(‘xuehao‘,str(10000+i*100+j)+‘\‘or\‘‘), (‘kaoshi‘,‘12‘)]
        search=urllib.urlencode(table)
        req=urllib2.Request(url)
        get=urllib2.urlopen(req, search).read().decode(‘gbk‘).encode(‘utf-8‘)
        l=r=get.find(‘姓名‘)
        if l!=-1:
            while get[l]!=‘>‘:
                l+=1
            while get[r]!=‘&‘:
                r+=1
            print str(10000+i*100+j)+get[l+1:r]
            f.write(str(10000+i*100+j)+‘,‘+get[l+1:r]+‘\n‘)
f.close()

注意我把学校查成绩的url改为百度的url了因为怕有人对我的学校网站做一些奇怪的事。

20161016

时间: 2024-12-05 01:11:02

Python2爬取学生名单的相关文章

使用python2爬取有道翻译

爬虫的核心思想:模拟浏览器正常访问服务器,一般情况只要浏览器能访问的,都可以爬,如果被反爬,则考虑反复测试添加Request Header数据,知道可以爬取为止. 反爬思路目前知道的有:User-Agent,Cookie,Referer,访问速度,验证码,用户登录及前端js代码验证等.本例遇到js验证 User-Agent Referer Cookie共计4种反爬机制. 关键部分是,参数headers和data的构造,headers要进行反复测试,data数据里面的变量查找思路. 参考资料: 用

nutch如何修改regex-urlfilter.txt爬取符合条件的链接

例如我在爬取学生在线的时候,发现爬取不到特定的通知,例如<中粮福临门助学基金申请公告>,通过分析发现原来通知的链接被过滤掉了,下面对过滤url的配置文件regex-urlfilter.txt进行分析,以后如果需要修改可以根据自己的情况对该配置文件进行修改: 说明:配置文件中以"#"开头的行为注释,以"-" 开头的表示符合正则表达式就过滤掉,以"+"开头的表示符合正则表达式则保留.正则表达式中"^"表示字符串的开头,

【转载】Python2爬虫之爬取某一路径的所有html文件

1 # -*- coding: UTF-8 -*- 2 import re 3 import urllib2 4 5 from collections import deque 6 7 # 保存文件的后缀 8 SUFFIX='.html' 9 # 提取文章标题的正则表达式 10 REX_TITLE=r'<title>(.*?)</title>' 11 # 提取所需链接的正则表达式 12 REX_URL=r'/jdbc/(.+?).html' 13 # 种子url,从这个url开始爬

python2.7 爬虫_爬取小说盗墓笔记章节及URL并导入MySQL数据库_20161201

1.爬取页面 http://www.quanshu.net/book/9/9055/ 2.用到模块urllib(网页下载),re正则匹配取得title及titleurl,urlparse(拼接完整url),MySQLdb(导入MySQL) 数据库 3.for 循环遍历列表 取得盗墓笔记章节title 和 titleurl 4.try except 异常处理 5.python 代码 #-*-coding: utf-8 -*- import urllib import re import urlpa

爬取豆瓣的tp250电影名单

# https://movie.douban.com/top250?start=25&filter= 要爬取的网页 import re from urllib.request import urlopen def getPage(url): response=urlopen(url) return response.read().decode('utf-8') def parsePage(s): ret=com.finditer(s) for i in ret: ret={ 'id': i.gr

从爬取华科hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;

原创文章与源码,如果转载请注明来源. 开发环境:Myeclipse,依赖包:apache-httpclient . Jsoup.base64 一.概述 华科大的教务系统(hub系统)做的算是比较好的,无论是界面还是其安全性来说,都是很不错的.大家可以用浏览器的调试工具F12看一下里面的源码.关于它的安全性,在后面会为大家提到.而在布局方面,用<div>代替了一些传统网站使用的<iframe>,导航栏也是使用的比较流行的插件. 其首页地址为http://hub.hust.edu.cn

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

欢迎加入Python学习交流群:535993938  禁止闲聊 ! 名额有限 ! 非喜勿进 ! 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于

python --selenium+phantomjs爬取动态页面广告源码

背景:利用爬虫,爬取网站页面广告元素,监控爬取元素的数目,定时发送监控邮件 #!/usr/bin/env python2.7 # -*- coding: utf-8 -*- ''' @xiayun @[email protected] #爬取网站内容,利用phantomjs:IP代理+修改UA+动态页面执行JS ''' from selenium import webdriver from selenium.webdriver.common.desired_capabilities import

初识scrapy,美空网图片爬取实战

这俩天研究了下scrapy爬虫框架,遂准备写个爬虫练练手.平时做的较多的事情是浏览图片,对,没错,就是那种艺术照,我骄傲的认为,多看美照一定能提高审美,并且成为一个优雅的程序员.O(∩_∩)O~ 开个玩笑,那么废话不多说,切入正题吧,写一个图片爬虫. 设计思路:爬取目标为美空网模特照片,利用CrawlSpider提取每张照片的url地址,并将提取的图片url写入一个静态html文本作为存储,打开即可查看图片. 我的环境是win8.1, python2.7+Scrapy 0.24.4,如何配环境我