Requests基本使用

1 Requests介绍:

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 哦!

2 安装

利用pip安装

pip install requests

3 基本请求

r = requests.get('https://www.baidu.com/')

r = requests.post('https://www.baidu.com/')

r = requests.put('https://www.baidu.com/')

r = requests.delete('https://www.baidu.com/')

r = requests.head('https://www.baidu.com/')

r = requests.options('https://www.baidu.com/t')

3.1 get请求

需求:爬取搜狗首页的页面源码数据
import requests
1.指定url
url = 'https://www.sogou.com/'
2.发起请求
response = requests.get(url=url)#get返回一个响应对象
3.获取响应数据
page_text = response.text #获取字符串形式的响应数据
print(page_text)
4.持久化存储
with open('./sogou.html','w',encoding='utf-8') as fp:
    fp.write(page_text)

3.2 post请求

参数是字典,我们也可以传递JSON类型的参数

需求:将北京所有肯德基餐厅的位置信息进行爬取
import requests
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
city = input('enter a city name:')
for page in range(5):
    data = {
        'cname': '',
        'pid': '',
        'keyword': city,
        'pageIndex': str(page),
        'pageSize': '10',
    }
#参数动态化使用的是data参数
data_dict = requests.post(url=url,data=data).json()
print(data_dict)

3.3自定义请求头

伪装请求头是采集时经常用的,我们可以用这个方法来隐藏

url = 'https://www.sogou.com/web?query=jay'
headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
}
#UA伪装
response = requests.get(url=url,headers=headers)

# response.encoding#返回响应数据原始的编码格式
response.encoding = 'utf-8'
page_text = response.text
with open('./jay.html','w',encoding='utf-8') as fp:
    fp.write(page_text)

3.4设置超时时间

可以通过timeout获取超时时间,一旦超过这个时间还没有获取相应内容,就会提示错误。

req =requests.get("http://www.kfc.com.cn", timeout=0.1)

3.5代理访问

采集时为了避免被封IP,经常会使用代理,requests也有相应的proxies属性

import requests

url = 'https://www.baidu.com/'
proxies ={
    'http':'http://123.101.231.234:9999',
    'http':'http://183.166.103.22:9999'
}

data_dict = requests.get(url=url,proxies=proxies)
print(data_dict)
#如果代理需要密码

proxies ={
    'http':'http://user:pass@123.101.231.234:9999'
}

3.6 session自动保存cookies

session的意思是保持会话,比如登录后继续操作(记录身份信息),而requests是单次的请求,身份信息不会被记录

import requests

#创建一个session对象
s= requests.sessions()
#用session对象发出get请求,设置cookies
data_dict = s.get('https://www.baidu.com/cookies/sessioncoo')
print(data_dict)

3.7 ssl验证

访问https页面

import requests

url = 'https://www.12306.cn/mormhweb/'
headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
}
#禁用安全请求警告
requests.packages.urllib3.disable_warnings()

data_dict = requests.get('https://www.baidu.com/',verify=False,headers=headers)
print(data_dict.text)

4 获取相应请求信息

代码含义
req.json()获取响应内容(以json字符串的方式)
req.text获取响应内容(以字符串的方式)
req.content获取响应内容(以字节的方式)
req.headers获取响应头内容
req.url获取访问地址
req.encoding获取网页编码
req.encoding获取网页编码
req.cookie获取cookie信息
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值