# 百度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_**這些參數的意義不是很明確,此外上面的參數測試可能也不是很全面,理解可能也有偏差,如有錯誤,歡迎交流。