网络请求模块(2)

简介: 网络请求模块知识点概述

1. get 请求方式与 post 请求方式
get 请求
从服务器获取数据 没有对服务器产生影响 通常都是 get 请求、

请求参数在 url 地址上显示,时间戳就是后面的各种参数

post 请求
向服务器发送数据 会对服务器产生影响 通常都是 post 请求

请求参数不会在 url 上显示

就像百度翻译翻译一样他是一个动态加载数据,有道翻译是 ajax 请求,真正的 URL 在 XHR 里

2 User-Agent 用户代理
作用就是伪装爬虫记录用户数据,这会作为反反爬的第一步,更好的获取完整的 HTML 源码

3 urllib 模块
urllib 是 python 的一个内置的网络请求模块 ,内置函数还有很多如 time random 等

有时候需要结合我们的 requests 模块去综合使用 urlretreieve 参数说明 url: 外部或者本地的 url

遇到这样的如何获取源码

第一种方法
#urlencode
传入参数类型:字典
r = {'wd':"海贼王"}
对r这个字典进行解码操作
result = urllib.parse.urlencode(r) 
print(result)
wd=%E6%B5%B7%E8%B4%BC%E7%8E%8B
kw=%E6%B5%B7%E8%B4%BC%E7%8E%8B
   %E6%B5%B7%E8%B4%BC%E7%8E%8B

第二种方法  quote
r = '海贼王'
result = urllib.parse.quote(r)
print(result)

z_l = 'https://tieba.baidu.com/f?ie=utf-8&'+ result  # 拼接
print(z_l)

4 .urllib.request
urllib.request.urlopen("网址") 向网站发起一个请求并获取响应

字节流 = response.read()

字符串 = response.read().decode("utf-8")

urllib.request.Request"网址",headers="字典") urlopen()不支持重构 User-Agent

read() 读取服务器响应的内容

getcode() 返回 HTTP 的响应码

geturl() 返回实际数据的 URL(防止重定向问题)

5 urllib.parse
UnicodeEncodeError: 'ascii' codec can't encode characters in position 51-53: ordinal not in range(128) 报错信息 urllib 网络请求模块在想一个携带了中文的 url 发送请求的时候可能会出现问题。

方法就是转成 16 进制

urlencode 传入参数类型:字典 功能:将存入的字典参数编码为 URL 查询字符串,即转换成以 key1=value1&key2=value2 的形式

enquote 对 url 进行解码,把类似"%xx"的字符替换成单个字符

import urllib.request
url = 'https://www.baidu.com/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
1 创建req请求对象并构建headers
req = urllib.request.Request(url,headers=headers)
print(req)  # <urllib.request.Request object at 0x0000022D35B9BB88>

2 获取响应数据
response = urllib.request.urlopen(req)

3 读取响应内容
html = response.read().decode('utf-8')
print(html)

getcode() 返回HTTP的响应码
print(response.getcode())
geturl()  返回实际数据的URL(防止重定向问题)
print(response.geturl())
目录
相关文章
|
6月前
|
机器学习/深度学习 编解码 边缘计算
YOLOv5改进 | 卷积模块 | 用ShuffleNetV2卷积替换Conv【轻量化网络】
本文介绍了如何在YOLOv5中用ShuffleNetV2替换卷积以减少计算量。ShuffleNetV2是一个轻量级网络,采用深度可分离卷积、通道重组和多尺度特征融合技术。文中提供了一个逐步教程,包括ShuffleNetV2模块的代码实现和在YOLOv5配置文件中的添加方法。此外,还分享了完整的代码链接和GFLOPs的比较,显示了GFLOPs的显著减少。该教程适合初学者实践,以提升深度学习目标检测技能。
YOLOv5改进 | 卷积模块 | 用ShuffleNetV2卷积替换Conv【轻量化网络】
|
11天前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
|
2月前
|
数据采集 Web App开发 开发工具
|
2月前
|
数据安全/隐私保护
|
26天前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
14 0
|
6月前
|
域名解析 安全 网络协议
WebKit的网络模块支持的最新网络协议和安全标准
WebKit的网络模块支持的最新网络协议和安全标准
|
3月前
|
JSON API 数据格式
Python网络编程:HTTP请求(requests模块)
在现代编程中,HTTP请求几乎无处不在。无论是数据抓取、API调用还是与远程服务器进行交互,HTTP请求都是不可或缺的一部分。在Python中,requests模块被广泛认为是发送HTTP请求的最简便和强大的工具之一。本文将详细介绍requests模块的功能,并通过一个综合示例展示其应用。
|
5月前
|
数据采集 JSON 数据格式
三:《智慧的网络爬虫》— 网络请求模块(下)
本篇文章讲解了网络请求模块中Requests模块的get请求和post请求,并用十几张图示详细介绍了爬虫工具库与开发者工具的操作与使用;同时本篇文章也列举了多个代码示例如:对搜狗网页的爬取;爬取360翻译(中英文互译程序)并以此介绍了重放请求(通过重放请求来确定反爬参数)以及Cookie与Session实战案例 -- 爬取12306查票
62 9
三:《智慧的网络爬虫》—  网络请求模块(下)
|
5月前
|
数据采集 数据安全/隐私保护 Python
二:《智慧的网络爬虫》— 网络请求模块(上)
网络请求模块就是帮助浏览器(客户端)向服务器发送请求的​。在Python3之前的版本(Python2版本)中所使用的网络请求模块是urllib模块​;在Python3现在的版本中通过urllib模块进行升级 有了现在所使用的requests模块,也就是requests模块是基于urllib模块进行开发的。本篇文章讲解的是urllib模块。
50 2
二:《智慧的网络爬虫》—  网络请求模块(上)
|
4月前
|
网络协议 Python
在Python中,我们使用`socket`模块来进行网络通信。首先,我们需要导入这个模块。
在Python中,我们使用`socket`模块来进行网络通信。首先,我们需要导入这个模块。