python - 如何爬取帶有日期選擇的ajax網站?
問題描述
需要爬取三峽水庫的實時水情數據,可以在網頁中選擇日期顯示水情信息,如果一天天選擇再復制數據發現很是耗時,我現在需要將下圖中三峽水利樞紐2014年-2016年每天的數據爬下來。
網址如下:http://www.ctgpc.com.cn/sxjt/...
通過瀏覽器自帶的檢查工具,右鍵檢查元素,查看 network,查看調用的 ajax API 地址:初步分析后發現是通過ajax調用了以下網址,并用POST傳遞了一個日期數據,例如今天2017-02-15給該網址:http://www.ctgpc.com.cn/eport...
Header如下:
Response如下:
之前有搜索到類似的問題:https://segmentfault.com/q/10...但是按照回答并沒能解決我的疑惑,因此在這里求助各位前輩,麻煩大家了
問題解答
回答1:可以利用requests庫模擬post提交。 從游覽器檢查工具可以看到傳的參數是time:2017-02-07。定義data={'time': 日期譬如2017-02-07}。 然后你可以寫個循環,循環一次日期往后加一天。然后就r = requests.post('url', data=data, header=****)。 取出數據保存入庫。每次循環嫌慢的話,可以加上gevent這個協程庫加快速度,看你也就想抓2年的數據循環365*2次就OK了
回答2:你已經看到了那個包含數據的請求,那么你的問題是什么呢?
回答3:抓包,再模擬post或get看看下面的內容Python爬蟲聯想詞視頻和代碼https://zhuanlan.zhihu.com/p/...
跟黃哥學Python爬蟲抓取代理IP和驗證。https://zhuanlan.zhihu.com/p/...跟黃哥學Python爬蟲抓取代理IPhttps://zhuanlan.zhihu.com/p/...
回答4:都已經拿到Json串了,數據更好拿了啊
相關文章:
1. docker-machine添加一個已有的docker主機問題2. node.js - node express 中ajax post請求參數接收不到?3. html - 用ajax提交表單后,返回驗證數據在頁面location.href跳轉到主頁,怎么傳遞session給主頁4. angular.js - grunt server 報錯5. apache - nginx 日志刪除后 重新建一個文件 就打不了日志了6. java - tomcat服務經常晚上會掛,求解?7. java - 原生CGLib內部方法互相調用時可以代理,但基于CGLib的Spring AOP卻代理失效,為什么?8. 網站被黑,請教下大神,怎么對datebase.php內容加密。9. mysql - sql查詢語句問題10. mysql的主從復制、讀寫分離,關于從的問題
