每天30分钟 一起来学习爬虫——day7(requests 库的get和post请求)

requests 库

什么是requests

官方文档:http://cn.python-requests.org/zh_CN/latest
requests 是 urllib的一个封装
优点:

  1. 简单易用
  2. url自动转义
  3. 支持python2 python3 ,而且名字一样,无缝对接

下面我们来使用一下

首先 安装requests库,pip install requests 这里说一下,如果安装不成功,需要切换一下国内源,相关切换国内源请看python——pip国那源这个还是切换一下好,以后都方便


好,话不多说,我来直观的感受一下,request的简单易用

先演示一下如何获取响应头、请求头、响应状态码以及cookie

import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
class RequestSpider(object):
    def __init__(self):
        url = 'http://www.baidu.com/'
        self.response = requests.get(url, headers=headers)

    def run(self):
        data = self.response.content
        # 1.获取请求头
        request_headers = self.response.request.headers
        print(request_headers)
        # 2.获取响应头
        response_headers = self.response.headers
        print(response_headers)
        # 3.获取相应状态码
        code = self.response.status_code
        print(code)
        # 4.获取请求的cookie 
        request_cookie = self.response.request._cookies
        print(request_cookie)
        # 如果cookie啥都没有没关系,因为有的网站没有给cookie,百度这个好像有

        # 5.获取响应的cookie
        response_cookie = self.response.cookies
        print(response_cookie)


RequestSpider().run()

requests 的 get

  • 响应对象: request.get(url,headers=headers,params=data)

  • 字符串形式查看相应 r.text

  • 字节类型查看响应 r.conten

  • 查看或者设置编码类型:r.encodin

  • 查看请求的url r.url

  • 查看响应头部 r.headers

  • 查看状态码 r.status_code

  • 查看json格式数据:r.json()

import requests

url = 'http://baidu.com/'
# 定制头部
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
r = requests.get(url,headers=headers)
print(r) r是一个响应对象
print(r.encoding) 查看网页编码
r.encoding = 'utf8'
# 也可以用来修改编码为 utf-8
print(r.text)# 这个是字符串类型
# r.content 字节类

还是get,带参数的get

import requests
# 带参数的get请求
url = 'https://www.baidu.com/s'
data = {
    'ie': 'utf-8',
    'wd': '中国'
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
r = requests.get(url, headers=headers, params=data)
# 自动编码传参,还记的urllib的时候,我们需要自己编码然后传递,这个就十分方便
print(r.url)
# with open('baidu.html', 'wb') as f:
#     f.write(r.content)
# 想写入文件看看的可以写入


post请求

postget 大体相同,只是传参的时候不是给params,而是传给 data

还记的当时我们爬取百度翻译吗,这次我们来爬bing翻译,
在这里插入图片描述详细的就不说了,和上次抓包的过程完全一样,如果有不清楚的请看百度翻译抓取,这里就只放一张图

下面看代码

import requests
# bing 翻译 可以更换formdata中text 的值来查询其他的单词
url = 'https://cn.bing.com/tlookupv3?isVertical=1&&IG=A7EE06275ABF44B6A8DD8CBA094AED1C&IID=translator.5028.3'
formdata = {
    'from': 'en',
    'to': 'zh-Hans',
    'text': 'lion'
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
# formdata传入后自动编码,不需要我们再urllib.pares.urlencode()
r = requests.post(url, data=formdata, headers=headers)

print(r.text)  # 也可以 print(r.json()) 这两个看到的是一样的,
# 不过,json()会直接将字符串转化为字典,

如果之前看了百度翻译抓取的朋友,一定会发现,这次代码简单了些
同样返回了json数据,去解码看看吧


今天我们学了 requsets 的一些基本用法, 看了一些 post 和 get 请求用requests 的 请求方法,明天我们会接着学习 有关 requests 的 代理,ssl认证和cookie


我又来要赞了,如果觉得 可以学到些什么的话,点个赞再走吧,欢迎各位路过的大佬评论指正

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值