javascript - java的爬虫是不是只能抓到实际存在的数据?对于动态数据好像抓不到?
伊谢尔伦
伊谢尔伦 2017-04-11 11:31:19
[JavaScript讨论组]

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代码

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <p id="dataContainer">
    
    
  </p>
</body>
</html>

dataContainer的p里面的内容是ajax从后台接口获取出来显示的 。

但是我用java爬虫好像 只能抓到如下代码

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <p id="dataContainer">
    
    
  </p>
</body>
</html>

有没有办法把dataContainer的p里面的数据也一起抓出来?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
巴扎黑

需要用httpclient来模拟浏览器请求,来获取。也可以用jsoup, spring resttemplate

PHP中文网

找到填充dataContainer的ajax代码,直接请求那个就可以了
一起抓就需要让一个完整的浏览器来请求页面,处理js代码了,比如.net下的webbrowser控件

PHPz

两个办法,一个找到中间内容ajax的链接,直接请求该链接来获取内容。
一个通过phantomjs,也就是浏览器方式,页面完全加载了,通过浏览器API获取网页内容

PHP中文网

自己写就要找AJAX路径了。。。框架的爬虫简单WebCollector

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号