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. css3 - 微信前端页面遇到的transition过渡动画的bug2. javascript - Ajax返回json格式之后的数据解析后取出来的数据为undefined?3. css - 文字排版问题,内容都是动态抓出来的,字数不一定。如何对齐啊4. 网页爬虫 - 关于Python的编码与解码问题5. 前端 - WebStrom安装了angularjs插件,但是没有语法提示6. git - 在web应用分布式部署的情况下怎么进行配置更新7. 微信开放平台 - ios APP能不能打开微信然后通过微信跳转到指定的URL?8. selenium-selenium-webdriver - python 将当前目录加入到 环境变量9. javascript - imgzoom插件所引发的bug血案!!!!10. php ZipArchive关于不同目录文件压缩

网公网安备