如何下载网页的确切源代码
How to download the exact source code of the webpage
我想下载网页的源代码。我使用了网址方法,即网址网址=新网址("http://a.html");
和 Jsoup 方法,但没有获得实际源代码中提到的确切数据。 例如-
<input type="image"
name="ctl00$dtlAlbums$ctl00$imbAlbumImage"
id="ctl00_dtlAlbums_ctl00_imbAlbumImage"
title="Independence Day Celebr..."
border="0"
onmouseover="AlbumImageSlideShow('ctl00_dtlAlbums_ctl00_imbAlbumImage','ctl00_dtlAlbums_ctl00_hdThumbnails','0','Uploads/imagegallary/135/Thumbnails/IMG_3206.JPG','Uploads/imagegallary/135/Thumbnails/');"
onmouseout="AlbumImageSlideShow('ctl00_dtlAlbums_ctl00_imbAlbumImage','ctl00_dtlAlbums_ctl00_hdThumbnails','1','Uploads/imagegallary/135/Thumbnails/IMG_3206.JPG','Uploads/imagegallary/135/Thumbnails/');"
src="Uploads/imagegallary/135/Thumbnails/IMG_3206.JPG"
alt="Independence Day Celebr..."
style="height:79px;width:148px;border-width:0px;"
/>
在这个标签中,最后一个属性"style"没有被jsoup的代码检测到。 如果我从 URL 方法下载它,它将样式标签更改为 border="/> 属性。
任何人都可以告诉我下载网页确切源代码的方法吗?我的代码是-
URL url=new URL("http://www.apcob.org/");
InputStream is = url.openStream(); // throws an IOException
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
File fileDir = new File(contextpath+"''extractedtxt.txt");
Writer fw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileDir), "UTF8"));
while ((line = br.readLine()) != null)
{
// System.out.println("line'n "+line);
fw.write("'n"+line);
}
InputStream in = new FileInputStream(new File(contextpath+"extractedtxt.txt";));
String baseUrl="http://www.apcob.org/";
Document doc=Jsoup.parse(in,"UTF-8",baseUrl);
System.out.println(doc);
我遵循的第二种方法是——
Document doc = Jsoup.connect(url_of_currentpage).get();
我想在java中执行此操作,并且发生此问题的网站名称为"http://www.apcob.org/"。
这可能是由于不同的user agent
字符串 - 当您从浏览器浏览页面时,它会发送一个包含浏览器类型的user agent
字符串。一些网站使用不同的页面响应不同的浏览器(例如移动设备)。
尝试添加与浏览器相同的user agent
字符串。
您尝试下载的页面被javascript代码以某种方式修改。Jsoup是一个html解析器。它不运行javascript。
如果您想获取源代码,就像在 Chrome 中看到的那样,请使用以下工具之一:
- UI4J
- 硒
- HtmlUnit
这三者都可以在页面内解析和运行Javascript代码。
我想这会很好,
public static void main(String[] args) throws Exception {
//Only If you're using a proxy
//System.setProperty("java.net.useSystemProxies", "true");
URL url = new URL("http://www.apcob.org/");
HttpURLConnection yc = (HttpURLConnection) url.openConnection();
yc.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36");
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
这是一个获取网页的便捷功能。使用此方法获取 HTML 字符串。然后使用 JSOUP
解析要Document
String
。
public static String fetchPage(String urlFullAddress) throws IOException {
// String proxy = "10.3.100.207";
// int port = 8080;
URL url = new URL(urlFullAddress);
HttpURLConnection connection = null;
// Proxy proxyConnect = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy, port));
connection = (HttpURLConnection) url.openConnection();//proxyConnect);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.addRequestProperty("User-Agent",
"Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10')");
connection.setReadTimeout(5000); // set timeout
connection.addRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
connection.addRequestProperty("Accept-Language", "en-US,en;q=0.5");
connection.addRequestProperty("Accept-Encoding", "gzip, deflate");
connection.addRequestProperty("connection", "keep-alive");
System.setProperty("http.keepAlive", "true");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String urlString = "";
String current;
while ((current = in.readLine()) != null) {
urlString += current;
}
return urlString;
}
如果问题出在 JSOUP 解析器上,请尝试使用 http://jericho.htmlparser.net/docs/index.html。它按原样解析 HTML,而不更正错误。
我注意到的其他几件事:您没有关闭fw
.将UTF8
替换为 UTF-8'。如果你需要解析大量的CSS,试试CSS-Parser
当通过http
获取网页时,Web服务器通常会以某种方式格式化sorce;你不能使用http
获得php
文件的确切sorce。据我所知,完成您要求的唯一方法是使用 ftp
.
- 来自网页的Javascript源代码
- 提取网页的源代码
- 如何从网页获取源代码
- Chrome 调试不会重新加载网页源代码
- 如何以编程方式下载网页的所有内容,而不仅仅是Java中的源代码
- 如何下载网页的确切源代码
- 如何使用R查看网页源代码
- 获取同一网络中网页的源代码
- 如何制作从网页复制HTML源代码的AppleScript
- 在Java中获取网页源代码
- 当你将HTML源代码复制到记事本中的.HTML文件中时,网页会发生什么?
- 使用谷歌浏览器时,什么类型的HTML, javascript或网页源代码会导致Adblock不呈现页面?
- 获取网页源代码后,网页运行Javascript - Java
- 需要在我的网页上显示语法突出显示的源代码
- 如何在JavaScript更改DOM后以编程方式读取网页的源代码
- 外部网页的HTML源代码为字符串
- 什么'用python下载网页源代码的最简单方法是什么?(在应用javascript之后)
- Greasemonkey 替换了网页中的 unityObject 源代码
- 从源代码中没有的网页中提取数据
- 如何下载带有 JavaScript 创建的标签的网页的源代码