一、HTTP协议

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。
用于从WWW服务器传输超文本到本地浏览器的传送协议。

HTTP的请求响应模型

客户端发起请求,服务器回送响应。

这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

工作流程

一次HTTP操作称为一个事务,其工作过程可分为四步:
1. 客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2. 建立连接后,客户机发送一个请求给服务器。
3. 服务器接到请求后,给予相应的响应信息。
4. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

请求报头

请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。

响应报头

响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对Request-URI所标识的资源进行下一步访问的信息。

二、Python3.X爬虫编程

1、简单的爬虫

python3.X
一个简单的示例爬虫

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、伪装成浏览器来爬网页

有些网页,比如登录的。如果你不是从浏览器发起的起求,这就不会给你响应,这时我们就需要自己来写报头。然后再发给网页的服务器,这时它就以为你就是一个正常的浏览器。从而就可以爬了!

python3.4
一个简单的示例爬虫
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())  

来看看请求报头,就是和我们设置的一个样。
返回的HTML是一样的。

3、爬取网站上的图片

前面我们可以爬网页了,下一步我们就可以批量的自动下载该网页上的各种数据了,比如,下载该网页上的所有图片。

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__":  #程序运行入口  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)  #构造请求报头  webpage = urllib.request.urlopen(req)  #发送请求报头  contentBytes = webpage.read()    for link, t in set(re.findall(r'(https:[^\s]*?(jpg|png|gif))', str(contentBytes))):  #正则表达式查找所有的图片  print(link)  try:   urllib.request.urlretrieve(link, destFile(link)) #下载图片  except:  print('失败') #异常抛出  

4、模拟登陆西电研究生教务处

#!/usr/bin/env python3# -*- coding: utf-8 -*-
import requests
url = 'http://jwxt.xidian.edu.cn/caslogin.jsp' #login网址id = '学号'
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)

返回的状态码为200.
这里用到了Requests模块,还不会使用的可以查看中文文档 ,它给自己的定义是:HTTP for Humans,因为简单易用易上手,我们只需要传入Url地址,构造请求头,传入post方法需要的数据,就可以模拟浏览器登陆了。

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

  1. pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量

    闲来无事,由于校园内网络是限流量的,查询流量很是频繁,于是萌生了写一个本地脚本进行一键查询自己的剩余流量. 整个部分可以分为三个过程进行: 对登陆时http协议进行分析 利用python进行相关的模拟 ...

  2. 爬虫_西电研究生教务系统_技术文档

    教务系统爬虫工作初步完成 关于教务系统的一系列爬取工作已经初步完成,Holi爬虫组的工作也算正式进入优化阶段. 我们需要根据后台组的需要,转换成CVS或数据库形式.需要和后台组进行商量. 实现的功能 ...

  3. 西电研究生毕业论文latex模板使用指南

    西电研究生毕业论文latex模板使用指南 记录西电研究生毕业论文latex模板过程中一些需要更改的地方 下载学校提供的latex模板后,在winEdt7.0中运行templet.tex,根据提示安装需 ...

  4. 西电研究生矩阵论必会证明题

    西电研究生矩阵论必刷必会证明题!

  5. 【Python3.6爬虫学习记录】(十二)PhantomJS模拟登陆并爬取教务处学生照片(哈工大)

    前言:这也不算心血来潮的事情,前面几天文章都涉及过,之前一直觉得很麻烦.必须SSLVPN登陆,到教务处页面,然后进行页面跳转到照片页面.所以每次打开图片页面都要保证登陆教务处,当然可以使用cookie ...

  6. python 模拟登陆智联_Python+scrapy爬虫之模拟登陆

    一.126,163邮箱模拟登陆 # -*- coding:utf-8 -*-import timefrom selenium import webdriverdef login126_or_163em ...

  7. 爬虫模拟登陆手机验证码_Python+scrapy爬虫之模拟登陆

    一.126,163邮箱模拟登陆 # -*- coding:utf-8 -*-import timefrom selenium import webdriverdef login126_or_163em ...

  8. 爬虫模拟登陆手机验证码_网络爬虫干货总结,这次比较全面!

    我从五个方面介绍了利用 Python 进行网络爬虫开发的相关知识点和技巧: 抓取 解析 存储 反爬 加速 目录 一.爬取 爬取的目标可以大致分为两类:网页.APP 对于网页,可以分为两种类别,即 服务 ...

  9. 北京交通大学研究生教务处爬虫

    1 import urllib 2 import urllib2 3 import requests 4 import re 5 6 student = 八位学号 7 password = 密码 8 ...

最新文章

  1. linux图形化应用程序快捷方式制作方法
  2. 【网络安全】HTB靶机渗透系列之Sniper
  3. 无法打开网页~咋办?
  4. 人工智能到底是个啥,这几本书讲得透透得!
  5. 停止了IIS服务为什么apache还是启动不了呢?
  6. 【C语言】第三章 基本运算与顺序结构 题解
  7. SpringCloud 从菜鸟到大牛之一 微服务介绍
  8. Java受检异常和非受检异常
  9. 反编译那些事儿(二)—枚举的反编译
  10. 【转】pda的广播扫码uni-app
  11. bochs运行xp_bochs模拟器xp系统镜像安装教程及注意事项
  12. Lua热补丁方案(HotFix)
  13. EXCEL 合并同样格式的多个excel文件
  14. 团队管理22-团队文化
  15. 纯C语言实现动态爱心(详解,初学者也能看懂)
  16. 总结八:面试程序员前需要的准备工作
  17. 厦门大学计算机网络实验四
  18. Linux---/proc目录全讲解
  19. Linux-Day2笔记
  20. 主控AU6989SN-GTC/AU6998SN [F500] - F/W FD04,爱国者U盘被写保护怎么办?

热门文章

  1. God.Game 漏洞复盘:跑路还是黑客攻击?
  2. Qt FFmpeg视频播放器开发(二):FFmepg基本使用与视频播放
  3. Jacob操作Word文档转换-XXOO
  4. 北航计算机学院本科优秀毕业论文,我校荣获32项北京市普通高等学校优秀本科生毕业设计(论文)...
  5. 9月14日更新的sublime激活码
  6. 【飞鱼科技】最新社招信息
  7. 漫谈程序员系列:找工作的辟邪剑谱
  8. 王晋康 - 替天行道 ▪ 王晋康科幻小说精选集2(2014年3月27日)
  9. 前端工作随笔日记 Day01
  10. 腾讯企业邮箱java-收发邮件