web中一项很对用户体验重要的技术ajax
传统的Web应用允许用户端填写表单, 当送出表单时就向网页服务器发送一个请求。服务器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML码往往是相同的。
AJAX应用可以仅向服务器发送并取回必须的数据,并在客户端采用JavaScript处理来自服务器的回应。因为在服务器和浏览器之间交换的数据大量减少(大约只有原来的5%)
以上资料引用自维基百科
对于采用了ajax异步加载的网页,一些信息无法直接在html源代码中读取,所以常见的download+parse思路行不通。对于应对这种情况,强大的网友给出了两大思路:
1.模拟浏览器行为,即执行javascript代码,直接得到处理后的html文件再进行解析。
可用的工具--phantomjs+selenium。其中phantomjs用于执行js代码,selenium是web自动化测试工具(在这儿用于模拟用户点击网页url的动作)
优势:代码量少,通用性高。
劣势:占用资源高,即耗时长。
2.分析ajax对应的XMLHttpRequest(XHR),数据总是在存数据库中的,只要能分析出相应的api就算达到目的了。
可以借助chrome的开发者工具,右键->查看->network->xhr
优势:省流量,避免下载冗余html,因此理论效率很高。
劣势:有可能分析不出来。
以上经验来源于selenium+phantomjs, pyspider爬虫教程