ajax异步加载网页爬虫

一般的网页,使用httpclient就能做到,但httpclient的设计初衷是一个基于http协议的客户端,它并不是一个浏览器,也不具备浏览器的功能,所以针对ajax异步加载的网页,就无能为力了.
我本想也用java来做ajax异步加载网页的爬虫,只可惜使用selenium的jar包时,出了很多问题,我没能解决.最后还是选择用了Python来写.

搭建环境

1.下载selenium,selenium可以用来模拟浏览器,它和浏览器驱动或者无界面浏览器驱动完美结合.
下载,我们用Python的开发库:
Python开发库:
https://pypi.python.org/pypi/selenium/
java开发包:
http://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java

python install -U selenium

ajax异步加载网页爬虫_第1张图片

2.下载PhantomJS,这是一个无界面浏览器,通常用于web测试,用来做爬虫是非常不错的,当然,也可以用其他浏览器驱动.
下载地址:
http://phantomjs.org/
给phantomJS配置环境变量:
我直接把phantomJS.exe放到jdk的bin目录下,这样就不用配置了.

简单例子

from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get("http://bkjw.sxu.edu.cn/")
assert '山西大学教务网络管理系统' in driver.title
print(driver.title)
driver.quit()

需要注意的是get方法会一直等到页面被完全加载,然后才会继续程序
而ajax是异步加载网页,会导致WebDriver 不知道什么时候加载玩了网页

网上有一篇selenium的教程,讲得不错
http://cuiqingcai.com/2599.html

你可能感兴趣的:(java爬虫)