正文
JAVA下载网页文件代码 java下载网页文件代码大全
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
设计一个JAVA程序,下载由URL指定的网页的源代码,找出其中所有的超链接。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class HttpViewer extends JFrame {
private JTextField urlInput;
private JTextArea viewArea;
public static void main(String[] args) {
new HttpViewer();
}
public HttpViewer() {
this.setTitle("Http Viewer");
this.setSize(800, 600);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
initPanel();
initAction();
this.setVisible(true);
}
// 这个方法用来设置窗口布局
private void initPanel() {
JPanel northPanel = new JPanel();
JLabel urlInputLabel = new JLabel("URL:");
urlInput = new JTextField(60);
northPanel.add(urlInputLabel);
northPanel.add(urlInput);
this.add(northPanel, BorderLayout.NORTH);
JPanel centerPanel = new JPanel();
viewArea = new JTextArea(27, 60);
centerPanel.add(new JScrollPane(viewArea));
this.add(centerPanel);
}
// 这个方法用来设置事件
private void initAction() {
urlInput.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text = urlInput.getText();
if (text == null || text.length() == 0) {
viewArea.setText("您没有输入URL");
return;
}
try {
URL url = new URL(text);
String context = getContent(url);
if (context != null) {
searchFromText(context);
}
} catch (MalformedURLException e1) {
viewArea.setText("您输入的URL不合法:" + text);
}
}
});
}
private String getContent(URL url) {
StringBuffer builder = new StringBuffer();
int responseCode = -1;
HttpURLConnection con = null;
try {
con = (HttpURLConnection) url.openConnection();
con.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");// IE代理进行下载
con.setConnectTimeout(60000);
con.setReadTimeout(60000);
// 获得网页返回信息码
responseCode = con.getResponseCode();
if (responseCode == -1) {
viewArea.setText("连接失败:" + url.toString());
return null;
}
if (responseCode = 400) {
viewArea.setText("请求失败,错误码:" + responseCode);
return null;
}
InputStream is = con.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String str = null;
while ((str = br.readLine()) != null)
builder.append(str);
is.close();
} catch (IOException e) {
e.printStackTrace();
viewArea.setText("IOException: " + url.toString());
} finally {
con.disconnect();
}
return builder.toString();
}
private void searchFromText(String context) {
viewArea.setText("查找URL中:\n");
Pattern pattern = Pattern.compile("a( [^]+)*(.*?)/a");
Matcher matcher = pattern.matcher(context);
while (matcher.find()) {
for (String prop : matcher.group(1).split(" ")) {
int indexOf = prop.indexOf('=');
if (indexOf 0) {
if (prop.substring(0, indexOf).equals("href")) {
String url2 = prop.substring(indexOf + 2, prop.length() - 1);
viewArea.append(url2 + "\n");
}
}
}
}
}
}
求JAVA编写网页下载程序代码
这个事多线程下载一个文件
这个是同时下载多个文件得
希望对你有用,多线程下载这玩意没写过,不过,可以给你个思路,不知正确与否,希望与你有用:
对同一个文件或http建立connection,然后获取整个文件得大小,(只有知道文件大小才能同时使用多线程建立多个连接来分段下载,如果不知道文件大小,想用多线程下载一定要做好线程同步工作,且速度提高不快,而且只能用线程轮流读取同一个输入流,而不能用不同得线程做不同得连接来下载),然后执行数据分段计算,算出每个线程建立连接后需要从哪个偏移量进行下载(需要使用文件得大小除以给定的线程数来算出),之后进行连接,每个线程建立连接后根据算出得下载偏移量将数据指针移到需要下载得位置开始下载,当所有线程下载完毕后再将每个线程下载得文件按下载得前后顺序(这里得顺序意思用一个例子来说明:比如a线程负责下载0到99字节,b线程负责下载100到199字节,c线程下载200到299字节,那么当所有线程下载完毕后需要将先将b线程下载好得文件增加到a线程下载得文件中,再将c线程下载得文件增加到a线程下载得文件中,然后删除b,c线程下载得文件.)合成一个文件.
上面只是我个人意见,不知道是否正确,呵呵.
愿上帝保佑吧.呵呵.
java代码实现网页下载
看你的意思,我觉得你可以去网上查查java网络爬虫的实现,就是自动抓取网页内容,并保存
这里有个链接你可以参考下
JAVA实现文件下载,浏览器端得到数据没反应
建议你
1.重启电脑
2.检查网速
3.换个浏览器试试,试试腾讯电脑管家-软件管理-软件仓库-浏览器-找到你想要的下载就行了
java怎么实现下载指定网页中包含的pdf文件。 求代码?
解析指定页面,得到pdf文件的地址,用URL来取回pdf的输入流,然后写到本地文件。
关于JAVA下载网页文件代码和java下载网页文件代码大全的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。