首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >网络请求模块(2)

网络请求模块(2)

作者头像
设计者
发布2022-12-20 09:11:53
发布2022-12-20 09:11:53
58500
代码可运行
举报
运行总次数:0
代码可运行

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

遇到这样的如何获取源码

代码语言:javascript
代码运行次数:0
运行
复制
第一种方法
#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"的字符替换成单个字符

代码语言:javascript
代码运行次数:0
运行
复制
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())
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. get 请求方式与 post 请求方式
  • 2 User-Agent 用户代理
  • 3 urllib 模块
  • 4 .urllib.request
  • 5 urllib.parse
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档