java爬虫怎么抓取js动态生成的内容

JavaScript027

java爬虫怎么抓取js动态生成的内容,第1张

我用Jsoup写爬虫,一般遇到html返回没有的内容。但是浏览器显示有的内容。都是分析页面的http请求日志。分析页面JS代码来解决。

1、有些页面元素被隐藏起来了->换selector解决

2、有些数据保存在js/json对象中->截取对应的串,分析解决

3、通过api接口调用->伪造请求获得数据

还有一个终极方法

4、使用phantomjs或者casperjs这种headless浏览器

String url = try {WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10) //设置webClient的相关参数webClient.getOptions().setJavaScriptEnabled(true) webClient.getOptions().setCssEnabled(false) webClient.setAjaxController(new NicelyResynchronizingAjaxController()) //webClient.getOptions().setTimeout(50000) webClient.getOptions().setThrowExceptionOnScriptError(false) //模拟浏览器打开一个目标网址HtmlPage rootPage = webClient.getPage(url) System.out.println("为了获取js执行的数据 线程开始沉睡等待") Thread.sleep(3000)//主要是这个线程的等待 因为js加载也是需要时间的System.out.println("线程结束沉睡") String html = rootPage.asText() System.out.println(html)} catch (Exception e) {}

js代码是需要js引擎运行的,Python只能通过HTTP请求获取到HTML、CSS、JS原始代码而已。

不知道有没有用Python编写的JS引擎,估计需求不大。

我一般用PhantomJS、CasperJS这些引擎来做浏览器抓取。

直接在其中写JS代码来做DOM操控、分析,以文件方式输出结果。

让Python去调用该程序,通过读文件方式获得内容。