请求库,即可以模仿浏览器对网站发起请求的模块(库)。

requests模块

  使用requests可以模拟浏览器的请求,requests模块的质是封装了urllib3模块的功能,比起之前用到的urllib,requests模块的api更加便捷

  requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求,但是selenium模块就可以执行js的操作。

安装:

pip3 install requests

  

请求方式:主要用到的就get和post两种

#各种请求方式:常用的就是requests.get()和requests.post()
import requests

r = requests.get('https://api.github.com/events')
r = requests.post('http://httpbin.org/post', data = {'key':'value'})
r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
#GET请求
HTTP默认的请求方法就是GET
     * 没有请求体
     * 数据必须在1K之内!
     * GET请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:
       1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
       2. 点击页面上的超链接也一定是GET请求
       3. 提交表单时,表单默认使用GET请求,但可以设置为POST


#POST请求
(1). 数据不会出现在地址栏中
(2). 数据的大小没有上限
(3). 有请求体
(4). 请求体中如果存在中文,会使用URL编码!


#!!!requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据

 

基于GET的请求方式

一、基本请求的代码

import requests
response=requests.get('http://http://www.cnblogs.com/')
print(response.text)

二、GET请求的参数

  GET请求的参数放在url的问号后面,以键值对形式传参

方式一:自行拼接参数(原理就是这样,不过我们一般都用方式二的形式)

#在请求头内将自己伪装成浏览器,否则百度不会正常返回页面内容
import requests

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/62.0.3202.75 Safari/537.36',
                      })
print(response.text)


#如果查询关键词是中文或者有其他特殊符号,则不得不进行url编码后再拼接
from urllib.parse import urlencode
wd='苍老师'
encode_res=urlencode({'k':wd},encoding='utf-8')
keyword=encode_res.split('=')[1]#拿到编码后的字符串
print(keyword)
# 然后拼接成url
url='https://www.baidu.com/s?wd=%s&pn=1' %keyword

response=requests.get(url,
                      headers={
                        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36',
                      })
res1=response.text
View Code

相关文章: