爬虫中通过什么模拟浏览器工作?重点来啦!那就是requests模块。
requests模块
requests文档http://docs.python-requests.org/zh_CN/latest/index.html
requests模块的作用:
• 发送http请求,获取响应数据
requests模块是一个第三方模块,需要在你的python(虚拟)环境中额外安装
• pip/pip3 install requests
安装完成之后我们就可以模拟浏览器向外发出请求了。
如何实现呢?首先看一下发出get请求的代码实现:
# 需求:通过requests向百度首页发送请求,获取该页面的源码
# 步骤1: 导入requests模块
import requests
# 步骤2: 确定访问目标url
url = 'https://www.baidu.com'
# 步骤3. 向目标url发送get请求
response = requests.get(url)
# 步骤4: 打印响应内容
print(response.text)
就这样轻松的我们通过requests模块跟百度打了一个“招呼”,但是说真的,挺假的!!!因为假装的不像呗!
所有浏览器在访问百度的时候都是该带都带着,比如上面提到的请求行,请求头或者请求体的内容。
我们这个是赤裸裸的访问哪,人家百度也挺好脾气的,没有说你是爬虫我就不给你东西了。但是怎样才能伪装的更像一些呢。
最基本的就是添加请求头了,大家可以通过开发者工具中的Network自行观察。
我们这里怎么添加呢?
大家运行代码可以发现,会打印出很多的内容,那这个内容是什么呢?这就是服务器收到了你的请求,把你想要的东西给你了。
我们打印出来看起来很乱,但是浏览器可是这些标签的翻译专家,所以浏览器上你看到的是一个百度的首页面,但是我们通过程序看到的是像下面一样的代码。
而通过浏览器的开发者工具Network看就整齐很多,因为浏览器就是干这个没办法。
但是上面大家看到的只是响应体的内容,因为在HTTP协议中,响应也是分成了三部分:就是响应行,响应头和响应体。我们在浏览器中看到的都是响应体的内容显示。