獲取weibo公共數據

最近在做的一個項目需要抓取新浪微博的公共微博數據,思路就是使用微博提供的API,但是不知道爲什麼public_timeline的接口出現了問題,每次返回的數據都爲空。但是微博API測試工具裏使用public_timeline接口有數據返回,所以只有模擬API測試工具請求才能用程序抓數據。


經過chrome的開發者工具分析,API測試工具是給服務器發送了一個post請求,包括4個請求參數。首先想到簡單粗暴的方法是寫個html form表單提交。但存在着兩個問題:1.請求必須包含cookie信息,所以微博要保持登錄狀態。2.服務器返回的數據直接打印在瀏覽器上,無法用程序獲取。原因是form的submit只是將數據發送到服務器就結束了,純js無法再獲取返回數據。所以想到了用ajax,但是用ajax會存在跨域的問題和無法設置cookie的問題。針對ajax跨域的問題,可以使用jsonp,但是使用jsonp即使jquery ajax內部聲明瞭post提交,實際上還是發送了一個get請求。還有一個解決辦法是在服務器端設置request的header Access-Control-Allow-Origin字段爲*,但是我的程序只是簡單的html+js,沒有服務器端程序。幸運的是chrome有個插件Access-Control-Allow-Origin,安裝了這個插件就能發送跨域的post請求。


但是由於ajax無法發送cookie數據,導致每次發送請求時服務器不能驗證通過,返回的數據總是爲空。html+js的方法暫時不能滿足我的需求。 所以想到了用python的request包,只要用chrome獲取網頁端請求的參數,就可以用python模擬,這樣就解決了問題。

發佈了54 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章