IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Python爬虫入门 ——请求模块 Urllib【2】 -> 正文阅读

[网络协议]Python爬虫入门 ——请求模块 Urllib【2】

复杂的网络请求

Request类简介

上一节的urlopen方法能够发送一个基本的网络请求,但这并不是一个完整的网络请求。一个完整的网络请求,需要包括Headers, Cookies和代理IP等内容,这样才能更好的模拟一个浏览器所发送的网络请求。?Request类则可以为我们解决这个问题

其语法的基本格式如下

urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

# ***************************
# 参数说明:
# url     : 需要访问网站的URL的完整地址
# data    : 该参数默认为None,通过该参数确认请求方式;
#           若为None,则以GET
#           否则的话为POST,在发送POST请求时,参数data需要以字典形式的数据作为参数的值
#           并且需要将字典形式的参数值转化为字节类型的数据才可以实现POST请求
# headers : 设置请求头部信息, 该参数为字典型。添加请求头最常用的方法就是修改 User-Agent 来伪装    #           成浏览器。例如:
#           headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)/                         
#           AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}
#           伪装成谷歌浏览器进行网络请求
# origin_req_host : 用于是设置请求方的host名称或者IP
# unverifiable : 用于验证网页是否需要验证,默认为False
# method  : 用于设置请求方法 

设置请求头信息

import urllib.parse
import urllib.request

url = 'https://www.httpbin.org/post'
# 定义请求头部信息
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
            (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'}
# 将表单数据转化bytes类型,并编码方式为UTF-8
dict1 = {'hello': 'python'}
data = bytes(urllib.parse.urlencode(dict1), encoding='utf-8')
# 创建 Request 对象
r = urllib.request.Request(url=url, data=data, headers=headers, method='POST')
response = urllib.request.urlopen(r)
print(response.read().decode('utf-8'))

运行结果如下

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "hello": "python"
  }, 
  "headers": {
    "Accept-Encoding": "identity", 
    "Content-Length": "12", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "www.httpbin.org", 
# 自定义的请求头信息
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36             (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-616c0fa1-36cc80405a3d11116f912a4a"
  }, 
  "json": null, 
  "origin": "61.190.213.226", 
  "url": "https://www.httpbin.org/post"
}


进程已结束,退出代码为 0

Cookie 的获取与设置

在实现爬虫的模拟登录中,首选需要获取登录的请求地址,然后通过POST的请求方式将正确的用户名和密码发送至登录验证的后台地址

(1)在谷歌浏览器中打开地址(http://site2.rjkflm.com:666/), 然后单击网页中右上角的“登录”

(2) 按下F12 进入开发者模式勾选 Preserve log (持续记录)

?(3) 在登陆界面输入正确的用户名和密码,然后单击立即登入, 然后在开发者模式界面,请求列表中找到 “chklogin.html”文件

?(4) 向下找到登入验证所需要的表单数据

?(5)接下来使用POST请求方式实现模拟的登录

import urllib.request
import urllib.parse

url = 'http://site2.rjkflm.com:666/index/index/chklogin.html'
# 将表单数据转化为bytes
dict1 = {'username': '********', 'password': '*******'}
data = bytes(urllib.parse.urlencode(dict1), encoding='utf-8')
# 创建Request对象
r = urllib.request.Request(url=url, data=data, method='POST')
response = urllib.request.urlopen(r)
print(response.read().decode('utf-8'))

运行结果如下

{"status":true,"msg":"登录成功!"}

进程已结束,退出代码为 0

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:47:40  更:2021-10-25 12:47:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/1 21:41:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码