鱼C论坛

 找回密码
 立即注册
查看: 1354|回复: 3

[已解决]爬虫中的头部标签header和参数params有什么用?

[复制链接]
发表于 2022-5-21 17:24:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在第三方库requests里,get方法可以添加header和params,但是我随便编两个也能运行,到底这两个参数有什么用呢?
import requests
url = 'https://www.baidu.com'
params={'key1':'value1','key2':'value2'}
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53'}
response=requests.get(url=url,params=params,headers=headers)
print(response.url)

params是随便编的,headers是另一个网址的头部标签,这两个有什么用?
最佳答案
2022-5-21 22:02:36
本帖最后由 白two 于 2022-5-21 22:19 编辑

header 是请求头, 服务器可能会检测你的请求头, 所以尽量让自己的请求头信息足够完善, 不然可能就会被识别出是爬虫,
一般来说就是你电脑的参数信息, 和 cookies 之类的东西, 你 header 里面携带的信息不同, 服务器的响应也可能不同

params 是 网址的参数, 少参数是可以访问的, 多参数能不能访问你自己去试一下

拿鱼c论坛的互助板块举例
https://fishc.com.cn/bestanswer.php?mod=huzhu&fid=173
里面的 mod=huzhu, fid=173 就是 params 参数, 服务器接到这个请求就会拿到这些参数, 就会通过视图函数进行查询等操作来返回信息, 在再加载到 html 上面, 其实就相当于你函数的 形参一样.

以鱼c论坛为例, 它的模板可能是通用的, 里面的内容是空的, 你访问的这个请求会把 mod = huzhu, fid = 173 这个参数传给视图函数,
然后视图函数查询数据库找到 互助 板块内容相关的内容, 再将这个内容返回给客户端(fid是互助里面的板块, 173就是python的内容), 加载到 html 上面

加 params 就是为了定向拿到这一块的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-21 17:35:29 | 显示全部楼层

params 可以设置参数,例如你这里百度就可以利用 params 参数来搜索你想搜索的,得到搜索后的页面,参考代码:
import requests


keyword = "鱼C"

url = 'https://www.baidu.com/s'
params={'wd': keyword}

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53'}
response=requests.get(url=url,params=params,headers=headers)

print(response.text)
print("-"*100)
print(response.url)

服务器会读取它自己需要的参数,你随便传参数有的时候并不不影响

因为服务器也是通过关键字进行获取参数的,例如这里 baidu 就是获取了名位 wb 的参数来知道用户查询的是什么内容

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-21 19:52:04 | 显示全部楼层
Twilight6 发表于 2022-5-21 17:35
params 可以设置参数,例如你这里百度就可以利用 params 参数来搜索你想搜索的,得到搜索后的页面,参考 ...

那就是说,服务器识别了我需要从百度上获取内容,如果我headers不是百度的网页,那它就会自动忽视吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-21 22:02:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 白two 于 2022-5-21 22:19 编辑

header 是请求头, 服务器可能会检测你的请求头, 所以尽量让自己的请求头信息足够完善, 不然可能就会被识别出是爬虫,
一般来说就是你电脑的参数信息, 和 cookies 之类的东西, 你 header 里面携带的信息不同, 服务器的响应也可能不同

params 是 网址的参数, 少参数是可以访问的, 多参数能不能访问你自己去试一下

拿鱼c论坛的互助板块举例
https://fishc.com.cn/bestanswer.php?mod=huzhu&fid=173
里面的 mod=huzhu, fid=173 就是 params 参数, 服务器接到这个请求就会拿到这些参数, 就会通过视图函数进行查询等操作来返回信息, 在再加载到 html 上面, 其实就相当于你函数的 形参一样.

以鱼c论坛为例, 它的模板可能是通用的, 里面的内容是空的, 你访问的这个请求会把 mod = huzhu, fid = 173 这个参数传给视图函数,
然后视图函数查询数据库找到 互助 板块内容相关的内容, 再将这个内容返回给客户端(fid是互助里面的板块, 173就是python的内容), 加载到 html 上面

加 params 就是为了定向拿到这一块的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 05:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表