【发布时间】:2020-01-06 18:52:55
【问题描述】:
我正在尝试通过以下代码获取 html 内容:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class Main {
public static String getHtmlContent(String urlAddress) {
URL url;
try {
url = new URL(urlAddress);
URLConnection conn = url.openConnection();
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuilder stringBuilder = new StringBuilder();
while ((inputLine = br.readLine()) != null) {
stringBuilder.append(inputLine);
}
br.close();
return stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String urlEmpik = getHtmlContent("https://myduolife.com/shop/products/1/780,duolife-keratin-hair-complex.html");
System.out.println(urlEmpik);
}
}
问题是当我进入这个网站并在网站上制作(点击鼠标)“查看源代码”时,HTML 内容与我使用我的(上面的)Java 代码时不同。此代码适用于大多数网站,但有些网站无法正常工作,我的意思是 HTML 源代码不同。不知是什么原因?也许它与某些网站上的某些特殊安全性有关?谢谢你的帮助。
【问题讨论】:
-
没看过,但我猜他们在页面加载时会运行一些 JavaScript,而简单的 HTTP GET 不会重现。尝试在禁用 JavaScript 的浏览器中访问该网站。
-
也许你是对的,听起来很明智,但是如何将 Javascript 转换为 Java 代码呢?如何在禁用 JS 的情况下使用 Java 获取 HTML 内容?
-
你可以试试 Selenium selenium.dev
标签: java html web-scraping