当前位置: 首页 > news >正文

尚硅谷爬虫note005

一、编解码

1.get请求的quote方法

        将汉字转为Unicode字符

# _*_ coding : utf-8 _*_
# @Time : 2025/2/12 16:33
# @Author : 20250206-里奥
# @File : demo19_get请求的quote方法
# @Project : PythonProject10-14# 景甜page
# https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%99%AF%E7%94%9C#13用
# User-Agent# Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0#导入request
import urllib.request
from wsgiref.util import request_uri
#导入urllib.parse
import urllib.parsefrom demo14_urllib import response#2.字典:将网页源代码伪装成浏览器
headers ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
}
# 1.获取网页源码
url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd="#6.将汉字变成Unicode编码格式
#需要依赖于urllib下的parse,将景甜两个汉字转为编码格式
name = urllib.parse.quote('景甜')
#7.此时的url = url + name
url = url + name
print(url)
# print(name)# #3.模拟浏览器向服务器发送请求
# #3-2.urlopen中不允许传递字典形式的数据
# #4.请求对象的定制,需要指定关键字传参(参数顺序原因)
# request = urllib.request.Request(url = url,headers=headers)
# response = urllib.request.urlopen(request)
# #5.获取响应内容
# content = response.read().decode("utf-8")
# print(response)

2.get请求的urlencode方法

# _*_ coding : utf-8 _*_
# @Time : 2025/2/13 08:53
# @Author : 20250206-里奥
# @File : demo20_url的encode方法
# @Project : PythonProject10-14import urllib.parse#
# url = "https://www.baidu.com/s?wd=景甜&sex=女"# # url的encode方法,参数以字典方式存在
# data = {
#     "wd":"景甜",
#     "sex":"女"
#  }
#
#  #将urlencode传递进去
# a = urllib.parse.urlencode(data)
# print(a)
# 导入
import urllib.request
import urllib.parsefrom demo14_urllib import responsebasic_url =  "https://www.baidu.com/s?"data = {"wd":"景甜","sex":"女"}new_data = urllib.parse.urlencode(data)print(new_data)
# 请求资源路径
url = basic_url + new_data
# User-Agent
# 	Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0
headers ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0"
}
# 请求对象的定制
request = urllib.request.Request(url = url,headers=headers)
#模拟浏览器向浏览器发送请求
response = urllib.request.urlopen(request)# 获取网页源码
content = response.read().decode("utf-8")
#打印数据
print(content)

3. post请求方式

# _*_ coding : utf-8 _*_
# @Time : 2025/2/13 10:27
# @Author : 20250206-里奥
# @File : demo21_get的post请求方法
# @Project : PythonProject10-14# 导入
import urllib.request
import urllib.parse
from idlelib.rpc import response_queuefrom demo17_qingqiuduixaingdedingzhi import request, content# post请求url = "https://fanyi.baidu.com/sug"# 请求头
headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36"
}
# 参数
data = {"kw":"hello"
}
#post请求的参数,必须进行编码
#该data是字符串类型,需要进行编码
# data = urllib.parse.urlencode(data)#data请求的参数,必须进行编码
data = urllib.parse.urlencode(data).encode("utf-8")#post请求的参数不会拼接在url后面,需要放在请求对象的定制中
request = urllib.request.Request(url = url, data=data, headers=headers)# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)# 获取数据
content = response.read().decode("utf-8")
#打印数据
print(content)
# print(type(content))# 将字符串类型转为json对象
import json
obj = json.loads(content)
print(obj)#psot请求特点
# post请求方式参数,必须编码
# 编码之后,必须调用encode()方法
# 参数放在请求对象定制的方法中

http://www.lryc.cn/news/536528.html

相关文章:

  • xml 和json互转工具
  • ElementUI 抽屉组件高度封装
  • 深入解析:如何在C#和C/C++之间安全高效地通过P/Invoke传递多维数组
  • 轻量级在线ETL数据集成工具架构设计与技术实现深度剖析
  • 二、k8s项目的生命周期
  • GPT 系列模型发展史:从 GPT 到 ChatGPT 的演进与技术细节
  • C#语言的云计算
  • 金仓数据库-KingbaseES-学习-01-单机部署(非图形化安装)
  • 海外服务器都有什么作用?
  • git bash在github的库中上传或更新本地文件
  • vue2中 computed 计算属性
  • 自定义基座实时采集uniapp日志
  • 基于YALMIP和cplex工具箱的微电网最优调度算法matlab仿真
  • Effective Objective-C 2.0 读书笔记——内存管理(上)
  • 蓝桥杯-洛谷刷题-day5(C++)(为未完成)
  • conda 修复 libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found 简便方法
  • 数据结构之队列,哈希表
  • 讯方·智汇云校华为授权培训机构的介绍
  • 【16届蓝桥杯寒假刷题营】第1期DAY4
  • 【Linux】cron计划任务定时执行命令
  • rdian是一个结构体,pdian=^Rdian,list泛型做什么用?
  • 【05】RUST错误处理
  • WinForm 防破解、反编译设计文档
  • 1 推荐系统概述
  • Redis初阶笔记
  • electron.vite 项目创建以及better-sqlite3数据库使用
  • 【新品解读】AI 应用场景全覆盖!解码超高端 VU+ FPGA 开发平台 AXVU13F
  • Proxmox VE 8.3 qm 方式导入ESXi Linux OVA UEFI模式虚拟机
  • OpenAI 放王炸,将发布整合多项技术的 GPT-5,并免费无限使用,该模型有哪些技术亮点
  • 【前端框架与库】「深入理解 Vue 插槽」:类型、用法与实际场景解析,增强组件复用性的利器