从零开始学爬虫(9)——requests模块发送带headers的请求和带参数的请求

一、发送简单的请求

Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库。与urllib相比,Requests更加方便,可以节约我们大量的工作,建议爬虫使用Requests库。具体可以参考这篇文章:《Python爬虫之requests库》

下面来完成一个小需求:通过requests向百度首页发送请求,获取百度首页的数据
常用的方法:

  • response.text
  • response.content
  • response.status_code
  • response.request.headers
  • response.headers

实现代码:

import requests
response = requests.get("http://www.baidu.com")

在这里插入图片描述

二、发送带header的请求

在上图中,可以看到返回response.request.headers的时候,默认的user-Agent是python-requests/2.22.0,这个时候,网站就会知道访问自己的家伙是个程序(或者起码不是一个正常的浏览器),然后网站就可能会进行一些欺骗的操作来返回一些虚假的信息给爬虫。

因此,请求带上header的目的就是模拟浏览器,欺骗服务器,获取和浏览器一致的内容

header的形式:字典
例如:

header = {
	"User-Agent":"Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/54.0.2840.99 Safari/537.36"
}

用法:requests.get(url,headers = header)

效果图:
在这里插入图片描述
此时返回的数据才是百度真实的页面源码

发送带参数的请求

当我们使用百度搜索Python的时候,我们看一下他的导航栏会变成什么样子(注意观察,会发现参数与参数之间使用&连接):
在这里插入图片描述
然而在这一堆参数里面,我们尝试着删除那些我们看不懂的参数(这些参数可能是由js生成的),我们留下关键的参数wd=Python,然后我们会发现网页依旧可以搜索到我们想要的数据:
在这里插入图片描述
因此,发送带参数的请求时,我们注意下列几点:

  • 参数的形式:字典
  • kw = {‘wd’:‘Python’}
  • 用法:requests.get(url,params = kw)
  • 注意:url里面不用自己写问号,url写根网址就行

使用实例:
在这里插入图片描述

课后题目:

获取新浪首页,查看response.text和response.content.decode()的区别

使用response.text时:
在这里插入图片描述
使用content时:
在这里插入图片描述
区别在于解码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值