java代码
import java.io.*; import java.net.*; public class CatchPage { public static void main(String[] args) { // 定义即将访问的链接 String url = "http://127.0.0.1:8080/Tests3/admin/login.jsp"; // 定义一个字符串用来存储网页内容 String result = ""; // 定义一个缓冲字符输入流 BufferedReader in = null; try { // 将string转成url对象 URL realUrl = new URL(url); // 初始化一个链接到那个url的连接 URLConnection connection = realUrl.openConnection(); // 开始实际的连接 connection.connect(); // 初始化 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream(),"utf-8")); // 用来临时存储抓取到的每一行的数据 String line; while ((line = in.readLine()) != null) { //遍历抓取到的每一行并将其存储到result里面 result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } System.out.println(result); } }
这是html代码
dataContainer的p里面的内容是ajax从后台接口获取出来显示的 。
但是我用java爬虫好像 只能抓到如下代码
有没有办法把dataContainer的p里面的数据也一起抓出来?
自己写就要找AJAX路径了。。。框架的爬虫简单WebCollector
两个办法,一个找到中间内容ajax的链接,直接请求该链接来获取内容。
一个通过phantomjs,也就是浏览器方式,页面完全加载了,通过浏览器API获取网页内容
找到填充dataContainer的ajax代码,直接请求那个就可以了
一起抓就需要让一个完整的浏览器来请求页面,处理js代码了,比如.net下的webbrowser控件
需要用httpclient来模拟浏览器请求,来获取。也可以用jsoup, spring resttemplate