黑马程序员技术交流社区
标题: 【上海校区】Python中requests库的基本使用 [打印本页]
作者: sunyakai 时间: 2019-11-29 10:19
标题: 【上海校区】Python中requests库的基本使用
本帖最后由 sunyakai 于 2019-11-29 10:23 编辑
介绍:使用requests可以模拟浏览器请求,requests库发送请求将网页内容下载下来后,并不会执行js代码,需要我们自己分析目标站点然后发起新的request请求
一.安装requests库
[Python] 纯文本查看 复制代码
pip3 install requests
各种请求方式:常用requests.get()和requests.post()
[Python] 纯文本查看 复制代码
import requests
r = requests.get('https://api.github.com/events')
r1 = requests.post('http://httpbin.org/post',data={'key':'value'})
二.基于GET请求
基本参数 :method,url , params , data , json , headers , cookies
其它参数 :files , auth , proxies...
1、基于GET请求(无参数)
[Python] 纯文本查看 复制代码
import requests
response = requests.get('http://dig.chouti.com/')
print(response)
print(response.text)
print(response.url)
2、带参数的GET请求-->params
[Python] 纯文本查看 复制代码
#请求头内将自己伪装成浏览器,否则百度不会正常返回页面内容
import requests
#在headers请求头中将自己伪装成浏览器,否则百度不会正常返回页面内容;
#将参数直接写到请求url的后面,只能用于英文和数字,中文或者其它特殊字符必须使用params参数带值过去;
response = requests.get('https://www.baidu.com/s?wd=python&pn=1',
headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', })
print(response.text)
#如果出现关键词是中文或者其它特殊字符,即通过params带参数
wd = 'alck老师'
pn = 1
response_2 = requests.get('https://www.baidu.com/s', params={'wd':wd, 'pn':pn },
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', })
print(response_2.text)
print(response_2.url)
二.基于POST请求
1.介绍#GET请求:
HTTP默认的请求方法就是GET,特点如下:
没有请求体 ;
数据必须在1K之内;
GET请求数据会暴露在浏览器的地址栏中;#GET请求常用的操作:
在浏览器的地址栏中直接给出URL,那么一定就是GET请求;
点击页面上的超链接也一定是GET请求;
提交表单时,表单默认使用GET请求,但可以设置为POST;
#POST请求
数据不会出现在地址栏中;
数据的大小没有上限;
有请求体;
请求体中如果存在中文,会使用URL编码;
requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据。
2.发送post请求
[Python] 纯文本查看 复制代码
import requests
import json
#1、基本POST实例
url = 'https://api.github.com/some/endpoint'
payload = {'key1':'value1','key2':'value2'}
ret = requests.post(url=url,data = payload )
print(ret.text)
三.其他的请求方式
[Python] 纯文本查看 复制代码
requests.get(url, params=None, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.options(url, **kwargs)
# 以上方法均是在此方法的基础上构建
requests.request(method, url, **kwargs)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |