導航:首頁 > 源碼編譯 > java獲得網頁源碼

java獲得網頁源碼

發布時間:2024-02-02 22:08:35

A. java如何獲取帶有css js 執行完後的網頁源代碼

只能抓取靜態的頁面源代碼,因為很多事件和樣式是動態綁定和執行的,所以不可能獲取到執行完後的代碼的。
public
String
getHtmlContent(String
htmlurl)
{
URL
url;
String
temp;
StringBuffer
sb
=
new
StringBuffer();
try
{
url
=
new
URL(htmlurl);
BufferedReader
in
=
new
BufferedReader(new
InputStreamReader(url.openStream(),
"gbk"));
while
((temp
=
in.readLine())
!=
null)
{
sb.append(temp);
}
in.close();
}
catch
(final
MalformedURLException
me)
{
me.getMessage();
}
catch
(final
IOException
e)
{
e.printStackTrace();
}
return
sb.toString();
}

B. java中如何根據一個網址獲得該網頁的源代碼

package test;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class HttpTest {

private String u;

private String encoding;

public static void main(String[] args) throws Exception {

HttpTest client = new HttpTest("http://www..com/", "UTF-8");

client.run();

}

public HttpTest(String u, String encoding) {

this.u = u;

this.encoding = encoding;

}

public void run() throws Exception {

URL url = new URL(u);// 根據鏈接(字元串格式),生成一個URL對象

HttpURLConnection urlConnection = (HttpURLConnection) url

.openConnection();// 打開URL

BufferedReader reader = new BufferedReader(new InputStreamReader(

urlConnection.getInputStream(), encoding));// 得到輸入流,即獲得了網頁的內容

String line; // 讀取輸入流的數據,並缺兄顯示

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

}

}

C. Java訪問指定URL並獲取網頁源代碼

1.編寫useSourceViewer 類的基本框架,該類僅包括無返回值的main ()方法,該方法從參數中獲取URL,通過輸入緩沖和輸出緩沖將該URL 原碼輸出。
2.編寫useSourceViewer 類,代碼如下:
import java.net.*;
import java.io.*;
public class useSourceViewer
{
public static void main (String[] args)
{
if (args.length > 0)
{
try
{
//讀入URL
URL u = new URL(args[0]);
InputStream in = u.openStream( );
// 為增加性能存儲輸入流
in = new BufferedInputStream(in);
// 將輸入流連接到閱讀器
Reader r = new InputStreamReader(in);
int c;
while ((c = r.read( )) != -1)
{
System.out.print((char) c);
}
Object o = u.getContent( );
System.out.println("I got a " + o.getClass().getName( ));
}
catch (MalformedURLException e)
{
System.err.println(args[0] + " is not a parseable URL");
}
catch (IOException e)
{
System.err.println(e);
}
} // end if
} // end main
} // end SourceViewer}

D. java 獲取網頁源代碼---有效防止亂碼

前段時間做過這類功能,如何有效防止亂碼,我們必須先知道一個網頁的編碼方式,是utf-8,還是gbk。

1.HttpURLConnection.getContentType();直接讀取,效率高,但有很多時候讀不到。只是text/html就完事了,沒有charset.

2.使用第三方的HttpClient,執行效率較高。但讀取網頁頭header也只適用部分站,很多網站服務段不設置,結果就讀成了null.

3.最沒有效率的判斷方法就是使用inputStreamReader先把正頁的html源碼讀取出來,之後截取charset後面編碼。得到編碼之後重新再讀取一遍。但是效率很低。

做個總結:

/**
* 取得頁面編碼
*
* @param url
* @return
*/
public String getCharset(String url) throws Exception {
// log.info("進入讀頁面的關鍵詞:" + keyword);
String charset = "";
int c;
HttpURLConnection httpurlcon = null;
// log.info("url:"+url);
// log.info("charset:"+charset);

log.info("url:" + url);

URL httpurl = new URL(url);
// System.out.println(url+str);

httpurlcon = (HttpURLConnection) httpurl.openConnection();
// google需要身份
httpurlcon.setRequestProperty("User-agent", "Mozilla/4.0");
charset = httpurlcon.getContentType();
log.info("charset1:" + charset);
// 如果可以找到
if (charset.indexOf("charset=") != -1)
charset = charset.substring(charset.indexOf("charset=")
+ "charset=".length(), charset.length());
// 否則讀取response.Header頭
else {
charset = this.getContentCharset();
log.info("charset2:" + charset);
}
// 如果charset還是為空,那麼直接讀網頁來截取
if (charset == null) {
charset = this.readPageCharset(url);
log.info("charset31:" + charset);

}

return charset;
}

E. java 得到網頁源碼為啥跟瀏覽器查看到的網頁源碼不一樣呢

從瀏覽器查看到的源碼是頁面運行過之後的html靜態文件(這個就是最終源碼了),並不是開發時候的頁面源碼。

閱讀全文

與java獲得網頁源碼相關的資料

熱點內容
python數據分析實戰pdf 瀏覽:983
u盤插入文件夾 瀏覽:916
華為amd雲伺服器 瀏覽:495
漢化編程卡是什麼意思 瀏覽:126
python學習pdf 瀏覽:313
祝緒丹程序員那麼可愛拍吻戲 瀏覽:198
asp源碼會員消費系統 瀏覽:113
java反射設置 瀏覽:152
python一行文 瀏覽:439
排序演算法優缺點 瀏覽:563
惡搞加密文件pdf 瀏覽:674
gif怎麼壓縮圖片大小 瀏覽:217
命令選擇當前不可用 瀏覽:158
歐幾里得演算法如何求逆元 瀏覽:506
男中學生上課解壓神器 瀏覽:373
加密狗拔掉之後怎麼辦 瀏覽:27
雲儲存平台源碼 瀏覽:847
解壓文件蘋果手機rar 瀏覽:149
centos開機命令行模式 瀏覽:697
遍歷所有listpython 瀏覽:660