日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

模拟登陆西电研究生教务处(爬虫1)

發(fā)布時(shí)間:2024/3/12 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模拟登陆西电研究生教务处(爬虫1) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、HTTP協(xié)議

HTTP是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫。
用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。

HTTP的請(qǐng)求響應(yīng)模型

客戶端發(fā)起請(qǐng)求,服務(wù)器回送響應(yīng)。

這樣就限制了使用HTTP協(xié)議,無法實(shí)現(xiàn)在客戶端沒有發(fā)起請(qǐng)求的時(shí)候,服務(wù)器將消息推送給客戶端。

工作流程

一次HTTP操作稱為一個(gè)事務(wù),其工作過程可分為四步:
1. 客戶機(jī)與服務(wù)器需要建立連接。只要單擊某個(gè)超級(jí)鏈接,HTTP的工作開始。
2. 建立連接后,客戶機(jī)發(fā)送一個(gè)請(qǐng)求給服務(wù)器。
3. 服務(wù)器接到請(qǐng)求后,給予相應(yīng)的響應(yīng)信息。
4. 客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客戶機(jī)與服務(wù)器斷開連接。

請(qǐng)求報(bào)頭

請(qǐng)求報(bào)頭允許客戶端向服務(wù)器端傳遞請(qǐng)求的附加信息以及客戶端自身的信息。

響應(yīng)報(bào)頭

響應(yīng)報(bào)頭允許服務(wù)器傳遞不能放在狀態(tài)行中的附加響應(yīng)信息,以及關(guān)于服務(wù)器的信息和對(duì)Request-URI所標(biāo)識(shí)的資源進(jìn)行下一步訪問的信息。

二、Python3.X爬蟲編程

1、簡單的爬蟲

python3.X
一個(gè)簡單的示例爬蟲

import urllib.request url = "http://www.douban.com/" webPage=urllib.request.urlopen(url) data = webPage.read() data = data.decode('UTF-8') print(data) print(type(webPage)) print(webPage.geturl()) print(webPage.info()) print(webPage.getcode())

2、偽裝成瀏覽器來爬網(wǎng)頁

有些網(wǎng)頁,比如登錄的。如果你不是從瀏覽器發(fā)起的起求,這就不會(huì)給你響應(yīng),這時(shí)我們就需要自己來寫報(bào)頭。然后再發(fā)給網(wǎng)頁的服務(wù)器,這時(shí)它就以為你就是一個(gè)正常的瀏覽器。從而就可以爬了!

python3.4 一個(gè)簡單的示例爬蟲 import urllib.request weburl = "http://www.douban.com/" webheader = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} req = urllib.request.Request(url=weburl, headers=webheader) webPage=urllib.request.urlopen(req) data = webPage.read() data = data.decode('UTF-8') print(data) print(type(webPage)) print(webPage.geturl()) print(webPage.info()) print(webPage.getcode())

來看看請(qǐng)求報(bào)頭,就是和我們?cè)O(shè)置的一個(gè)樣。
返回的HTML是一樣的。

3、爬取網(wǎng)站上的圖片

前面我們可以爬網(wǎng)頁了,下一步我們就可以批量的自動(dòng)下載該網(wǎng)頁上的各種數(shù)據(jù)了,比如,下載該網(wǎng)頁上的所有圖片。

import urllib.request import socket import re import sys import os targetDir = r"E:\PythonWorkPlace\load" #文件保存路徑 def destFile(path): if not os.path.isdir(targetDir): os.mkdir(targetDir) pos = path.rindex('/') t = os.path.join(targetDir, path[pos+1:]) return t if __name__ == "__main__": #程序運(yùn)行入口 weburl = "https://www.douban.com/" webheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} req = urllib.request.Request(url=weburl, headers=webheaders) #構(gòu)造請(qǐng)求報(bào)頭 webpage = urllib.request.urlopen(req) #發(fā)送請(qǐng)求報(bào)頭 contentBytes = webpage.read() for link, t in set(re.findall(r'(https:[^\s]*?(jpg|png|gif))', str(contentBytes))): #正則表達(dá)式查找所有的圖片 print(link) try: urllib.request.urlretrieve(link, destFile(link)) #下載圖片 except: print('失敗') #異常拋出

4、模擬登陸西電研究生教務(wù)處

#!/usr/bin/env python3# -*- coding: utf-8 -*- import requests url = 'http://jwxt.xidian.edu.cn/caslogin.jsp' #login網(wǎng)址id = '學(xué)號(hào)' password = '密碼' lt_value = 'LT-31860-Nr4DeRHVPUcMaNqcVrB5XxzLecI0ev1481623540759-wHmD-cas' exe_value = 'e1s1'datas = {'username': id, 'password': password,"submit": "", "lt": lt_value, "execution": exe_value,"_eventId": "submit", "rmShown": '1'}headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",# "Host": "ids.xidian.edu.cn","Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3","Accept-Encoding": "gzip, deflate","Referer": "http://ids.xidian.edu.cn/authserver/login?service=http%3A%2F%2Fjwxt.xidian.edu.cn%2Fcaslogin.jsp",# 'X-Requested-With': "XMLHttpRequest","Content-Type": "application/x-www-form-urlencoded"} sessions = requests.session() response = sessions.post(url, headers=headers, data=datas) print(response.status_code)


返回的狀態(tài)碼為200.
這里用到了Requests模塊,還不會(huì)使用的可以查看中文文檔 ,它給自己的定義是:HTTP for Humans,因?yàn)楹唵我子靡咨鲜?#xff0c;我們只需要傳入U(xiǎn)rl地址,構(gòu)造請(qǐng)求頭,傳入post方法需要的數(shù)據(jù),就可以模擬瀏覽器登陸了。

總結(jié)

以上是生活随笔為你收集整理的模拟登陆西电研究生教务处(爬虫1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。