302 临时重定向
几个概念
GET和POST
• GET : 查询参数都会在URL上显示出来
• POST : 查询参数和需要提交数据是隐藏在Form表单里的,不会在URL地址上显示出来
URL组成部分
• URL: 全球统一资源定位符
https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
https: 协议
new.qq.com : 主机名 省略了端口 443
omn/TWF20200/TWF2020032502924000.html 访问资源的路径
anchor : 锚点 前端用来做页面定位 锚点做导航
• https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
• https: 协议
• new.qq.com: 主机名可以将主机理解为一台名叫 news.qq.com 的机器。这台主机在 qq.com 域名下
• port 端口号: 80 /new.qq.com 在他的后面有个 :80 可以省略
• TWF20200/TWF2020032502924000.html 访问资源的路径
• #anchor: 锚点用前端在做页面定位的
• 注意 : 在浏览器请求一个url,浏览器会对这个url进行一个编码。(除英文字母、数字和部分标识其他的全部使用% 加 十六进制码进行编码)
• 例如 : https://tieba.baidu.com/f?ie=utf-8&kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B&fr=search
• %E6%B5%B7%E8%B4%BC%E7%8E%8B = 海贼王
User-Agent 用户代理(ua伪装每次爬虫必须要)
• 作用:记录用户的浏览器、操作系统等,为了让用户更好的获取HTML页面效果
User-Agent:
Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
• Mozilla Firefox:(Gecko内核)
Referer
• 表明当前这个请求是从哪个url过来的。一般情况下可以用来做反爬的技术
状态码
• 200 : 请求成功
• 301 : 永久重定向(一个旧地址会转跳到新地址 输入即转跳)
• 302 : 临时重定向(比如进知乎他会302让你登入账号密码先)
• 404 : 请求失败(服务器无法根据客户端的请求找到资源(网页))
• 500 : 服务器内部请求
5. 抓包工具
• Elements : 元素 网页源代码,提取数据和分析数据(有些数据是经过特殊处理的所以并不是都是准确的)
• Console : 控制台 (打印信息)
• Sources : 信息来源 (整个网站加载的文件)
• NetWork : 网络工作(信息抓包) 能够看到很多的网页请求
urllib.request模块
版本
python2 :urllib2、urllib
python3 :把urllib和urllib2合并,urllib.request
常用的方法
• urllib.request.urlopen(“网址”) 作用 :向网站发起一个请求并获取响应
• 字节流 = response.read()
• 字符串 = response.read().decode(“utf-8”)
• urllib.request.Request"网址",headers=“字典”) urlopen()不支持重构User-Agent
响应对象
• read() 读取服务器响应的内容
• getcode() 返回HTTP的响应码
• geturl() 返回实际数据的URL(防止重定向问题)
urllib.parse模块
常用方法
urllib.request
urllib.request.urlopen()
urlopen他的结果可以直接进行文件操作 但是他不支持ua伪装
urllib.request.Request()
Request和requests模块一样可以支持ua伪装等一些操作
response.read() bytes
response.read().decode(‘utf-8’) str
urllib.parse
urlencode(字典) (必须输入字典才能翻译)
quote(字符串) (这个里面的参数是个字符串)
urllib模块练习
#####图片下载练习
请求方式
• GET 特点 :查询参数在URL地址中显示
• POST
• 在Request方法中添加data参数 urllib.request.Request(url,data=data,headers=headers)
• data :表单数据以bytes类型提交,不能是str