百度URL参数解析

百度URL参数解析



在用Python爬取百度搜索的内容时,发现百度搜索的url非常的长,往往会跟一大段的参数,但其实很多参数都是没有必要的,如同样是搜索java关键字,可以通过 http://www.baidu.com/s?wd=java 如此简单的URL来获取,而下面这个超级复杂的URL也是同样进行了关键字java的搜索:

http://www.baidu.com/s?wd=java&rsv_spt=1&rsv_iqid=0xd3c8c51900052eb3&issp=1&f=8
&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&oq=python%20org&inputT=801
&rsv_t=8810tNAXi7Yc2PivScHthQ7bBz%2B4eIBHvrdmB59u%2FlLVYrhnyyTg1%2FYJzQM9EAEgSPn5
&rsv_pq=8f0a85f900051202&rsv_sug3=15&rsv_sug2=0&rsv_sug7=000&rsv_sug4=801&rsv_sug=2

那么后面的那么多的参数有什么用呢?

wd

查询关键字,就是你要搜索的内容。

rn

搜索结果页每页显示的数目,默认为10,最大可以设置为50

pn

显示结果的页数,缺省为0,其它页面需要每页递增rn,如当rn为默认值时,第三页的pn应为20。

ie

查询关键字的编码格式,默认为gb2312,即为简体中文

tn

提交的搜索请求的来源,我们经常可以看到很多网站上都有嵌入了百度的搜索框,这个参数可以确定当前的搜索是来自哪个网站的。如下面的URL就是通过www.hao123.com网站首页的百度搜索框搜索得到的:

https://www.baidu.com/s?word=java&tn=sitehao123&ie=utf-8

注:我们可以看到很多参数其实都是缩写,如wd用word也是可以的

rsv_bp

这是表示了是百度网页上的哪一个搜索框,如通过百度首页中间的搜索框进行搜索时,该值为0,在搜索结果页上面的搜索框进行搜索时为1。

rsv_spt

这个参数具体含义不是很清楚,经过测试可以看出来登录了百度账号且在首页进行搜索时会有这个参数,且值为1,如果没有登录或登录后在搜索结果页搜索时不会出现这个参数。网上查找了一些资料,感觉比较靠谱的是这表示首页搜索类型,1表示新版百度首页搜索(先要登录百度帐号),2表示百度实时热点搜索(先要登录百度帐号),3表示传统百度首页搜索。

cl

这个参数是提交的搜索类型,如搜索网页时为3,搜索新闻时为2

oq

这个关键词网上有些帖子说是搜索下拉栏相关的,但根据我的测试,这个参数现在好像就仅仅代表上次的搜索关键字。

还有很多参数如rsv_**这些参数的意义不是很明确,此外上面的参数测试可能也不是很全面,理解可能也有偏差,如有错误,欢迎交流。

时间: 2024-12-13 18:32:47

百度URL参数解析的相关文章

把URL参数解析成一个Json对象

问题:请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象.           eg:var obj=parseQueryString(url); 创建对象的三种形式:        一:                var Person=new Object();                Person.name="Sun";                Person.age=24;        二:         

java 获取url及url参数解析

java  获取url及url参数解析 一.url编码:URLEncoder.encode(userName); 二.url解码: URLDecoder.decode(userName);

五种URL参数解析方法的性能比较

因为在最近项目中需要解析日志中的 URL 的参数,所以我对比了一下五种不同 的 URL 参数解析方法的性能.URL 参数解析方法: httpclient org.apache.http.client.utils.URLEncodedUtils URLEncodedUtils.parse(query, Charset.forName("UTF-8"));jettyUtil org.eclipse.jetty.util.UrlEncoded MultiMapvalues = new Mul

js js获取url及url参数解析

js获取url及url参数解析 一.获取url: var url=window.location.herf; 二.url参数解析: function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var obj= new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("

URL 参数解析

url参数解析为对象 url参数解析为数组 URLSearchParams(兼容性有待提高,慎用) url参数解析为对象 const urlQueryToObject = (url) => { if((/\?/).test(url)) { const arr = url.split('?')[1].split('&'); return arr.reduce((acc,value,index) => {value.replace(/(\w+)=(\w+)/,(match,p1,p2) =

封装一个方法:把URL参数解析为一个对象,来获取地址栏url里面的传递的参数。

URL参数解析 //获取url方法 //window.location.href // function getUrlkey(url){ var params = {}, arr = url.split("?"); if (arr.length <= 1) return params; arr = arr[1].split("&"); for(var i=0, l=arr.length; i<l; i++){ var a = arr[i].spl

URL参数解析方法

这几天遇到这样一个需求,需要在不同页面之前传递参数,一般我们都是通过URL来传递,如下 window.open('test.html?id=123&name=456') 然后在新窗口的时候我们再用window.location.search方法获取?后面的参数内容,但是拿到的内容是"?id=123&name=456"这样的形式,我们还需要进行一系列的字符串处理才能拿到我们需要的信息,这样就比较麻烦一些了,所以我们就基于这个需求封装一个工具方法来把参数后面的内容解析成一个

编写一个参数JavaScript函数parseQueryString,它的用途是把url参数解析为一个对象

var url = "http://www.taobao.com/index.php?key0=0&key1=1&key2=2............."; var obj = parseQueryString(url); function parseQueryString(argu){ var str = argu.split('?')[1]; var result = {}; var temp = str.split('&'); for(var i=0; i

js url参数解析获取

function get_url_parm_list(str){ var params=str.substr(str.indexOf('?')+1); var param_list=[]; while(params.indexOf('=')!=-1){ var ind=params.indexOf('='); var k=params.substr(0,ind); var sp=params.indexOf('&'); if(sp==-1){ var v=params.substr(ind+1)