python爬虫入门(#4)——get方法详解之params参数

前面说过,get 方法是可以向服务器发送信息的,除了可以请求需要的页面之外,也可以发送我们指定的内容,这就是通过 params 参数实现的

request库 ----- get方法 ----- params

这个 params 参数是字典结构,前面说到的 headers 其实也是字典结构,但他们传输的时候是以 json 的方式传输的

首先我们构建一个字典,里面写上我们想要发送的信息

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

params = {
	'myMessage': 'message'
}

url = 'https://www.httpbin.org/get'
response = requests.get(url, headers=headers, params=params)
print(response.text)
print(response.url)

httpbin.org 这个网站会根据我们发送的内容返回对应的信息,所以我们这里获取到的不是网站源码

{
  "args": {
    "myMessage": "message"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "www.httpbin.org", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"
  }, 
  "origin": "1.194.187.57, 1.194.187.57", 
  "url": "https://www.httpbin.org/get?myMessage=message"
}

https://www.httpbin.org/get?myMessage=message

从返回的信息里可以看到,我们发送的内容在 args 里,同时这些内容也会被集成到 url 中,我们最后打印的 url 里就标识了我们所发送的内容,所以我们说使用 get 方法传输信息是不安全的,因为传输的信息会直接在 url 中表示出来

知道了 params 的作用我们就可以拿来做一写我们想做的事情
比如

模拟百度搜索

百度的搜索其实也是使用了 get 方法
比如我们在百度首页搜索 明日方舟
python爬虫入门(#4)——get方法详解之params参数_第1张图片
可以看到网址

https://www.baidu.com/s?wd=明日方舟

这和我们前面加了 params 参数返回的url很像

https://www.httpbin.org/get?myMessage=message

当然,你的网址可能不是这个样子,这是各种原因造成的,但是你把网站按照我的格式打进去绝对可以实现搜索操作

我们看一下这个网址

https://www.baidu.com/s?wd=%E6%98%8E%E6%97%A5%E6%96%B9%E8%88%9F
https://www.baidu.com/s?wd=明日方舟

上面的网址是下面的网址编码的结果,我们写的时候不必在意,浏览器会自动替我们编码,所以可以直接用自然语言

我们来用python试一下模拟百度搜索

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

params = {
	'wd': '明日方舟'
}

url = 'https://www.baidu.com/s'
response = requests.get(url, headers=headers, params=params)
print(response.text)
print(response.url)

注意我们使用的网址是 httsp://www.baidu.com/s
最后有个 s,这个才是搜索的网址
返回的源码太长就不贴了,就只看一下返回的 url

https://www.baidu.com/s?wd=%E6%98%8E%E6%97%A5%E6%96%B9%E8%88%9F

这是编码后的结果,其实和我们直接写成

https://www.baidu.com/s?wd=明日方舟

是一样的效果

你可能感兴趣的:(python爬虫,语言深入)