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>
但是我用java爬虫好像 只能抓到如下代码
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<p id="dataContainer">
</p>
</body>
</html>
有没有办法把dataContainer的p里面的数据也一起抓出来?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
需要用httpclient来模拟浏览器请求,来获取。也可以用jsoup, spring resttemplate
找到填充dataContainer的ajax代码,直接请求那个就可以了
一起抓就需要让一个完整的浏览器来请求页面,处理js代码了,比如.net下的webbrowser控件
两个办法,一个找到中间内容ajax的链接,直接请求该链接来获取内容。
一个通过phantomjs,也就是浏览器方式,页面完全加载了,通过浏览器API获取网页内容
自己写就要找AJAX路径了。。。框架的爬虫简单WebCollector