在用Python爬取百度搜索的內容時,發現百度搜索的url很是的長,每每會跟一大段的參數,但其實不少參數都是沒有必要的,如一樣是搜索java關鍵字,能夠經過 http://www.baidu.com/s?wd=java
如此簡單的URL來獲取,而下面這個超級複雜的URL也是一樣進行了關鍵字java的搜索:html
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
那麼後面的那麼多的參數有什麼用呢?java
wd (WorD)
查詢關鍵字,就是你要搜索的內容。python
rn (Record Number)
搜索結果頁每頁顯示的數目,默認爲10,最大能夠設置爲50瀏覽器
pn (Page Number)
顯示結果的頁數,缺省爲0,其它頁面須要每頁遞增rn,如當rn爲默認值時,第三頁的pn應爲20。markdown
ie (Input Encoding)
查詢關鍵字的編碼格式,默認爲gb2312,即爲簡體中文測試
tn
提交的搜索請求的來源,咱們常常能夠看到不少網站上都有嵌入了百度的搜索框,這個參數能夠肯定當前的搜索是來自哪一個網站的。以下面的URL就是經過www.hao123.com網站首頁的百度搜索框搜索獲得的:網站
https://www.baidu.com/s?word=java&tn=sitehao123&ie=utf-8
ui
提交搜索請求的來源站點,這是百度與免費軟件合做時的利益來源,舉例來講咱們使用的一些免費瀏覽器中所提供的百度搜索時,URL地址中都帶有tn=內容,tn=後面的內容就是百度聯盟的帳號。如:Firefox的tn=suvion_dg(tn=suvion_4_dg),傲遊的tn=myie2dg,The World的tn=suvion_4_pg,只要你使用了這些帶有tn=的搜索,只要點擊了其中的廣告,提供該軟件的瀏覽器就會從中賺取利益。搜索結果有個例外,當tn=baidulocal時,你能夠獲得一個無競價無廣告的百度搜索結果.編碼
注:咱們能夠看到不少參數其實都是縮寫,如wd用word也是能夠的url
rsv_bp
這是表示了是百度網頁上的哪個搜索框,如經過百度首頁中間的搜索框進行搜索時,該值爲0,在搜索結果頁上面的搜索框進行搜索時爲1。
rsv_spt
這個參數具體含義不是很清楚,通過測試能夠看出來登陸了百度帳號且在首頁進行搜索時會有這個參數,且值爲1,若是沒有登陸或登陸後在搜索結果頁搜索時不會出現這個參數。網上查找了一些資料,感受比較靠譜的是這表示首頁搜索類型,1表示新版百度首頁搜索(先要登陸百度賬號),2表示百度實時熱點搜索(先要登陸百度賬號),3表示傳統百度首頁搜索。
cl
這個參數是提交的搜索類型,如搜索網頁時爲3,搜索新聞時爲2
oq
這個關鍵詞網上有些帖子說是搜索下拉欄相關的,但根據個人測試,這個參數如今好像就僅僅表明上次的搜索關鍵字。
還有不少參數如rsv_**這些參數的意義不是很明確,此外上面的參數測試可能也不是很全面,理解可能也有誤差,若有錯誤,歡迎交流。
si
在限定的域名中搜索,好比想在本站內搜索可以使用參數si=www.wfshui.com,要使這個參數有效必須結合ct參數一塊兒使用:ct=2097152;
標籤:
原文地址:http://blog.csdn.net/u013291394/article/details/50444369