爬虫之requests模块发送带header的请求

爬虫之requests模块发送带header的请求

我们先写一个获取百度首页的代码

import requests

url = 'https://www.baidu.com'

response = requests.get(url)

print(response.content.decode())

# 打印响应对应请求的请求头信息
print(response.request.headers)

1.1 思考

  1. 对比浏览器上百度首页的网页源码和代码中的百度首页的源码,有什么不同?

    • 查看网页源码的方法:
      • 右键-查看网页源代码 或
      • 右键-检查
  2. 对比对应url的响应内容和代码中的百度首页的源码,有什么不同?

    • 查看对应url的响应内容的方法:
      1. 右键-检查
      2. 点击 Net work
      3. 勾选 Preserve log      【保持日志,勾选后,再次刷新会把之前的包保存,不会删除】
      4. 刷新页面
      5. 查看Name一栏下和浏览器地址栏相同的url的Response
  3. 代码中的百度首页的源码非常少,为什么?

    • 需要我们带上请求头信息

      回顾爬虫的概念,模拟浏览器,欺骗服务器,获取和浏览器一致的内容

    • 请求头中有很多字段,其中User-Agent字段必不可少,表示客户端的操作系统以及浏览器的信息

1.2 携带请求头发送请求的方法

requests.get(url, headers=headers)     【一般情况下headers只放"User-Agent"就行了,】【加上headers更加模仿的像浏览器】

  • headers参数接收字典形式的请求头
  • 请求头字段名作为key,字段对应的值作为value

1.3 完成代码实现

从浏览器中复制User-Agent,构造headers字典;完成下面的代码后,运行代码查看结果

import requests

url = 'https://www.baidu.com'

headers = {"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"}

# 在请求头中带上User-Agent,模拟浏览器发送请求
response = requests.get(url, headers=headers) 

print(response.content)

# 打印请求头信息
print(response.request.headers)

示例代码展示:

import requests

# 目标url
url = 'https://www.baidu.com'

# 向目标url发送get请求
response = requests.get(url)

print(len(response.content.decode()))
print(response.request.headers)
print(response.content.decode())

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
response1 = requests.get(url, headers=headers)
print(len(response1.content.decode()))
print(response1.request.headers)
print(response1.content.decode())

运行效果:

爬虫之requests模块发送带header的请求_第1张图片

你可能感兴趣的:(爬虫,爬虫,request)