Python爬虫——Get和Post请求的使用

1、Get请求

GET请求一般用于我们向服务器获取数据( urllib默认使用get请求),比如搜索:毛不易,地址栏中的 URL 信息:

其中wd 表示搜索字符串的键,而“毛不易”则代表输入的值

在网页地址栏中删除wd后面多余的查询条件,最后显示的 URL 如下:

https://www.baidu.com/s?wd=毛不易

但在上图Headers请求头里,发送的请求是:

https://www.baidu.com/s?wd=%E6%AF%9B%E4%B8%8D%E6%98%93&ie=utf-8&tn=15007414_2_pg

同样删除wd后面多余的查询条件,最后显示的 URL 如下:

https://www.baidu.com/s?wd=%E6%AF%9B%E4%B8%8D%E6%98%93

http://www.baidu.com/s? 后面出现的那个长长的字符串,就是搜索关键字“毛不易”的Unicode的编码格式。

quote()

quote(str):对字符串str进行Unicode编码,如:urllib.parse.quote(‘毛不易’)

import urllib.request
import urllib.parseurl = 'https://www.baidu.com/s?wd='#调用quote()对关键字进行Unicode编码
name = urllib.parse.quote('毛不易')
#打印Unicode编码后的字符串
print(name)  #%E6%AF%9B%E4%B8%8D%E6%98%93
#拼接url
url = url+name
print(url)  #https://www.baidu.com/s?wd=%E6%AF%9B%E4%B8%8D%E6%98%93
#构建请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}
request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
print(content)

执行结果:

urlencode()

urlencode():对查询字符串的字典进行编码,如下:

dict = {'wd':'毛不易','sex':'男','age':30
}
urllib.parse.urlencode(dict)

使用实例:

import urllib.request
import urllib.parsebase_url = 'https://www.baidu.com/s?'
param = {'wd':'毛不易','sex':'男','age':30
}#urlencode()对关键字进行Unicode编码
new_param = urllib.parse.urlencode(param)#打印Unicode编码后的字符串
print(new_param)
#拼接url
url = base_url+new_param
print(url)
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}
request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
print(content)

执行结果:

wd=%E6%AF%9B%E4%B8%8D%E6%98%93&sex=%E7%94%B7&age=30
https://www.baidu.com/s?wd=%E6%AF%9B%E4%B8%8D%E6%98%93&sex=%E7%94%B7&age=30

2、Post请求

post请求的参数不会拼接到ul后面,而是放在定制请求的第二个参数位置上

post请求的参数需要进行两次编码,第一次urlencode:对字典参数进行Unicode编码转成字符串,第二次encode:将字符串数据转换为字节类型

使用实例:

import urllib.request
import urllib.parse
import json#百度翻译
url = 'https://fanyi.baidu.com/sug'headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'}#post请求参数
param = {'kw':'剪刀'
}#post请求参数需要进行两次编码,第一次urlencode:对字典参数进行Unicode编码转成字符串,第二次encode:将字符串数据转换为字节类型
param = urllib.parse.urlencode(param).encode('utf-8')#post定制请求可以使用位置传参
request = urllib.request.Request(url,param,headers)response = urllib.request.urlopen(request)
print(response)#解码读取数据
page = response.read().decode('utf-8')#反序列化,将字节对象转成python对象
content = json.loads(page)
print(content)
print(type(content))

执行结果:

<http.client.HTTPResponse object at 0x000002CFA6D04F60>{'errno': 0, 'data': [{'k': '剪刀', 'v': 'scissors; shears; forfex; clipper; [电影]Scissors'}, {'k': '剪刀石头布', 'v': '名. rock, paper,scissors'}, {'k': '剪刀手爱德华', 'v': '名. Edward Scissorhands'}]}<class 'dict'>

Python爬虫——Get和Post请求的使用相关推荐

  1. Requests如何在Python爬虫中实现post请求 ?

    urllib库作为python基础的工具,想必大家已经学的差不多了.作为一个有理想,有抱负的小白当然要向python大神进阶.小编查询了一些资料,发现Requests库也是不错的选择.post请求和r ...

  2. Python爬虫的两种请求方式,读者都了解吗?

    Python爬虫中的get和post请求 前言 Python爬虫请求数据有get和post两种请求方式,也许读者对于它们的应用已经掌握到炉火纯青的地步了,但是关于它们的基本语法是否了解吗? 文章目录 ...

  3. 3.每天进步一点点-Python爬虫需要了解HTTP 请求报文

    14天学习训练营导师课程: 杨鑫<Python 自学编程基础> 杨鑫< Python 网络爬虫基础> 杨鑫< Scrapy 爬虫框架实战和项目管理> 文章目录 1. ...

  4. Python——爬虫【Requests设置请求头Headers】

    1.为什么要设置headers? 在请求网页爬取的时候,输出的text信息中会出现抱歉,无法访问等字眼,这就是禁止爬取,需要通过反爬机制去解决这个问题. headers是解决requests请求反爬的 ...

  5. Python爬虫(一)_HTTP的请求与响应

    HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Prot ...

  6. python爬虫(二)_HTTP的请求和响应

    HTTP和HTTPS HTTP(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Prot ...

  7. Python爬虫:scrapy框架请求参数meta、headers、cookies一探究竟

    对于scrapy请参数,会经常用到,不过没有深究 今天我就来探索下scrapy请求时所携带的3个重要参数headers, cookies, meta 原生参数 首先新建myscrapy项目,新建my_ ...

  8. python 爬虫 使用requests模拟请求后台,返回为 空 问题

    个人在爬虫时遇到的问题,在此记录一下 看看请求时携带 cookie 了没 具体cookie,根据具体网页分析 import requests cookies = {...} headers = {.. ...

  9. python爬虫进阶:异步请求几秒钟爬光网站的全部美女图片

    aiohttp模块 参考aiohttp库简单教程 - 简书 什么是aiohttp aiohttp是一个为Python提供异步HTTP 客户端/服务端编程,基于asyncio的异步库.asyncio可以 ...

最新文章

  1. C语言应用于LR中-如何得到数组长度
  2. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 J Beautiful Numbers
  3. centos 添加用户
  4. 电脑下载python多少位的在哪看-python64位
  5. c中嵌入Python,提供灵活性
  6. 抛硬币直到连续若干次正面
  7. UVA - 11181 数学
  8. Disable anchor tag的javascript代码(兼容IE和Firefox)
  9. 采取监测记录网络运行状态_广播播控监测自动化系统改造探析
  10. 查询集-104.课时104.【Django视图高级】QueryDict的用法讲解(Av61533158,P104)
  11. php http请求 微信,微信小程序封装http请求类的代码实例
  12. restlet java_restlet(javase版本) 的最基本使用
  13. VS2017 安装xamarin 开发安卓程序教程
  14. 【复盘】目前实训三班级复盘遇到的问题
  15. python安装numpy库出错_numpy安装失败-小失误
  16. 408计算机组成原理学习笔记——存储系统
  17. 台式电脑显示配置100%请勿关闭计算机,Win7关机提示“配置Windows Update已完成30%请勿关闭计算机”怎么解决...
  18. CLIP CLAP
  19. Spark性能调优 之 合理规划资源配置
  20. 【模拟】变态杀人狂(约瑟夫问题)

热门文章

  1. oracle 默认escape_ORACLE中ESCAPE关键字用法
  2. 后端修行 - JD-GUI 反编译class文件
  3. 当前日期往前推N天或者N个月
  4. 一生必读经典书籍大全
  5. 正直的人就一定吃亏吗?———林格谈创业的智慧与勇气(3)
  6. 空調如何影響家居風水_家居风水自查
  7. kali rolling linux 安装BCM43142网卡驱动
  8. mysql 索引 unique_MySQL UNIQUE索引
  9. zipslack安装方法(安装在ext3上成功运行)(转)
  10. Arduino双控开关