JAVA通过url获取网页内容

合集下载

java抓取网页内容

java抓取网页内容

con.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));
String s = "";
StringBuffer sb = new StringBuffer("");
String s = "";
StringBuffer sb = new StringBuffer("");
while ((s = br.readLine()) != null) {
i++;
sb.append(s+"\r\n");
}
这种方法抓取一般的网页应该没有问题,但当有些网页中存在一些嵌套的redirect连接时,它就会报Server redirected too many times这样的错误,这是因为此网页内部又有一些代码是转向其它网页的,循环过多导致程序出错。如果只想抓取本URL中的网页内容,而不愿意让它有其它的网页跳转,可以用以下的代码。
JAVA 抓取网页内容2011-01-06 16:43通过JAVA的API可以顺利的抓取网络上的大部分指定的网页内容,现与大家分享一下这方法理解与心得。最简单的一种抓取方法就是:
ห้องสมุดไป่ตู้
URL url = new URL(myurl);
BufferedReader br = new BufferedReader(newInputStreamReader(url.openStream()));
上面的程序抓取回来的全部内容都存放在sb这个字符串,我们就可以通过正则表达式对它进行分析,提取出自己想要的具体的内容,为我所用,呵呵,这是多么美妙的一件事情啊!

java通过url在线预览Word、excel、ppt、pdf、txt文档中的内容(只获得了文字)

java通过url在线预览Word、excel、ppt、pdf、txt文档中的内容(只获得了文字)

java通过url在线预览Word、excel、ppt、pdf、txt文档中的内容(只获得了文字)在页面上显示各种文档中的内容。

在servlet中的逻辑word:BufferedInputStream bis = null;URL url = null;HttpURLConnection httpUrl = null; // 建立链接url = new URL(urlReal);httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源httpUrl.connect();// 获取网络输入流bis = new BufferedInputStream(httpUrl.getInputStream());String bodyText = null;WordExtractor ex = new WordExtractor(bis);bodyText = ex.getT ext();response.getWriter().write(bodyText);excel:BufferedInputStream bis = null;URL url = null;HttpURLConnection httpUrl = null; // 建立链接url = new URL(urlReal);httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源httpUrl.connect();// 获取网络输入流bis = new BufferedInputStream(httpUrl.getInputStream());content = new StringBuffer();HSSFWorkbook workbook = new HSSFWorkbook(bis);for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheetcontent.append("/n");if (null == aSheet) {continue;}for (int rowNum = 0; rowNum <= aSheet.getLastRowNum(); rowNum++) {content.append("/n");HSSFRow aRow = aSheet.getRow(rowNum);if (null == aRow) {continue;}for (short cellNum = 0; cellNum <= aRow.getLastCellNum(); cellNum++) {HSSFCell aCell = aRow.getCell(cellNum);if (null == aCell) {continue;}if (aCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {content.append(aCell.getRichStringCellValue().getString());} else if (aCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {boolean b = HSSFDateUtil.isCellDateFormatted(aCell);if (b) {Date date = aCell.getDateCellValue();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");content.append(df.format(date));}}}}}response.getWriter().write(content.toString());ppt:BufferedInputStream bis = null;URL url = null;HttpURLConnection httpUrl = null; // 建立链接url = new URL(urlReal);httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源httpUrl.connect();// 获取网络输入流bis = new BufferedInputStream(httpUrl.getInputStream());StringBuffer content = new StringBuffer("");SlideShow ss = new SlideShow(new HSLFSlideShow(bis));Slide[] slides = ss.getSlides();for (int i = 0; i < slides.length; i++) {TextRun[] t = slides[i].getTextRuns();for (int j = 0; j < t.length; j++) {content.append(t[j].getText());}content.append(slides[i].getTitle());}response.getWriter().write(content.toString());pdf:BufferedInputStream bis = null;URL url = null;HttpURLConnection httpUrl = null; // 建立链接url = new URL(urlReal);httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源httpUrl.connect();// 获取网络输入流bis = new BufferedInputStream(httpUrl.getInputStream());PDDocument pdfdocument = null;PDFParser parser = new PDFParser(bis);parser.parse();pdfdocument = parser.getPDDocument();ByteArrayOutputStream out = new ByteArrayOutputStream();OutputStreamWriter writer = new OutputStreamWriter(out);PDFTextStripper stripper = new PDFT extStripper();stripper.writeText(pdfdocument.getDocument(), writer);writer.close();byte[] contents = out.toByteArray();String ts = new String(contents);response.getWriter().write(ts);txt:BufferedReader bis = null;URL url = null;HttpURLConnection httpUrl = null; // 建立链接url = new URL(urlReal);httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源httpUrl.connect();// 获取网络输入流bis = new BufferedReader( new InputStreamReader(httpUrl.getInputStream()));StringBuffer buf=new StringBuffer();String temp;while ((temp = bis.readLine()) != null) {buf.append(temp); response.getWriter().write(temp); if(buf.length()>=1000){ break;}}bis.close();。

Java获取网页数据步骤方法详解

Java获取网页数据步骤方法详解

Java获取⽹页数据步骤⽅法详解在很多⾏业当中,我们需要对⾏业进⾏分析,就需要对这个⾏业的数据进⾏分类,汇总,及时分析⾏业的数据,对于公司未来的发展,有很好的参照和横向对⽐。

⾯前通过⽹络进⾏数据获取是⼀个很有效⽽且快捷的⽅式。

⾸先我们来简单的介绍⼀下,利⽤java对⽹页数据进⾏抓取的⼀些步骤,有不⾜的地⽅,还望指正,哈哈。

屁话不多说了。

其实⼀般分为以下步骤:1:通过HttpClient请求到达某⽹页的url访问地址(特别需要注意的是请求⽅式)2:获取⽹页源码3:查看源码是否有我们需要提取的数据4:对源码进⾏拆解,⼀般使⽤分割,正则或者第三⽅jar包5:获取需要的数据对⾃⼰创建的对象赋值6:数据提取保存下⾯简单的说⼀下在提取数据中的部分源码,以及⽤途:/*** 向指定URL发送GET⽅法的请求** @param url* 发送请求的URL* @param param* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。

* @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通⽤的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建⽴实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 定义 BufferedReader输⼊流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream())); //这⾥如果出现乱码,请使⽤带编码的InputStreamReader构造⽅法,将需要的编码设置进去String line;while ((line = in.readLine()) != null) {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();}}return result;}解析存储数据public Bid getData(String html) throws Exception {//获取的数据,存放在到Bid的对象中,⾃⼰可以重新建⽴⼀个对象存储Bid bid = new Bid();//采⽤Jsoup解析Document doc = Jsoup.parse(html);// System.out.println("doc内容" + doc.text());//获取html标签中的内容trElements elements = doc.select("tr");System.out.println(elements.size() + "****条");//循环遍历数据for (Element element : elements) {if (element.select("td").first() == null){continue;}Elements tdes = element.select("td");for(int i = 0; i < tdes.size(); i++){this.relation(tdes,tdes.get(i).text(),bid,i+1);}}return bid;}得到的数据Bid {h2 = '详见内容',itemName = '诉讼服务中⼼设备采购',item = '货物/办公消耗⽤品及类似物品/其他办公消耗⽤品及类似物品',itemUnit = '详见内容',areaName = '港北区',noticeTime = '2018年10⽉22⽇ 18:41',itemNoticeTime = 'null',itemTime = 'null',kaibiaoTime = '2018年10⽉26⽇ 09:00',winTime = 'null',kaibiaoDiDian = 'null',yusuanMoney = '¥67.00元(⼈民币)',allMoney = 'null',money = 'null',text = ''}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

JAVA使用爬虫抓取网站网页内容的方法_java_脚本之家

JAVA使用爬虫抓取网站网页内容的方法_java_脚本之家

9
HttpClient client = new HttpClient();
10
String response = null ;
11
12
String keyword = null ;
13
PostMethod postMethod = new PostMethod(url);
14
// try {
15
16
68 69
.getOutputStream());
70
out.write(strPostRequest);
71
out.flush();
72 73
out.close();
74
}
// 读取内容
BufferedReader rd = new BufferedReader( new InputStreamReader(
56 57
System.setProperty( ".client.defaultReadTimeout" , "5000" );
58
try {
59
URL newUrl = new URL(strUrl);
60 61
HttpURLConnection hConnect = (HttpURLConnection) newUrl
33
.getBytes( "ISO‐8859‐1" ), "gb2312" );
34
//这里要注意下 gb2312要和你抓取网页的编码要一样
35
36
String p = response.replaceAll( "//&[a‐zA‐Z]{1,10};" , "" )

Java抓取网页内容三种方式

Java抓取网页内容三种方式

java抓取网页内容三种方式2011-12-05 11:23一、GetURL.javaimport java.io.*;import .*;public class GetURL {public static void main(String[] args) {InputStream in = null;OutputStream out = null;try {// 检查命令行参数if ((args.length != 1)&& (args.length != 2))throw new IllegalArgumentException("Wrong number of args");URL url = new URL(args[0]); //创建 URLin = url.openStream(); // 打开到这个URL的流if (args.length == 2) // 创建一个适当的输出流out = new FileOutputStream(args[1]);else out = System.out;// 复制字节到输出流byte[] buffer = new byte[4096];int bytes_read;while((bytes_read = in.read(buffer)) != -1)out.write(buffer, 0, bytes_read);}catch (Exception e) {System.err.println(e);System.err.println("Usage: java GetURL <URL> [<filename>]");}finally { //无论如何都要关闭流try { in.close(); out.close(); } catch (Exception e) {}}}}运行方法:C:\java>java GetURL http://127.0.0.1:8080/kj/index.html index.html 二、geturl.jsp<%@ page import="java.io.*" contentType="text/html;charset=gb2312" %> <%@ page language="java" import=".*"%><%String htmpath=null;BufferedReader in = null;InputStreamReader isr = null;InputStream is = null;PrintWriter pw=null;HttpURLConnection huc = null;try{htmpath=getServletContext().getRealPath("/")+"html\\morejava.html"; pw=new PrintWriter(htmpath);URL url = new URL("http://127.0.0.1:8080/kj/morejava.jsp"); //创建 URL huc = (HttpURLConnection)url.openConnection();is = huc.getInputStream();isr = new InputStreamReader(is);in = new BufferedReader(isr);String line = null;while(((line = in.readLine()) != null)) {if(line.length()==0)continue;pw.println(line);}}catch (Exception e) {System.err.println(e);}finally { //无论如何都要关闭流try { is.close(); isr.close();in.close();huc.disconnect();pw.close(); } catch (Exception e) {}}%>OK--,创建文件成功三、HttpClient.javaimport java.io.*;import .*;public class HttpClient {public static void main(String[] args) {try {// 检查命令行参数if ((args.length != 1) && (args.length != 2))throw new IllegalArgumentException("Wrong number of args");OutputStream to_file;if (args.length == 2)to_file = new FileOutputStream(args[1]);//输出到文件elseto_file = System.out;//输出到控制台URL url = new URL(args[0]);String protocol = url.getProtocol();if (!protocol.equals("http"))throw new IllegalArgumentException("Must use 'http:' protocol"); String host = url.getHost();int port = url.getPort();if (port == -1) port = 80;String filename = url.getFile();Socket socket = new Socket(host, port);//打开一个socket连接InputStream from_server = socket.getInputStream();//获取输入流PrintWriter to_server = new PrintWriter(socket.getOutputStream());//获取输出流to_server.print("GET " + filename + "\n\n");//请求服务器上的文件to_server.flush(); // Send it right now!byte[] buffer = new byte[4096];int bytes_read;//读服务器上的响应,并写入文件。

java利用url实现网页内容的抓取

java利用url实现网页内容的抓取

java利⽤url实现⽹页内容的抓取闲来⽆事,刚学会把git部署到远程服务器,没事做,所以简单做了⼀个抓取⽹页信息的⼩⼯具,⾥⾯的⼀些数值如果设成参数的话可能扩展性能会更好!希望这是⼀个好的开始把,也让我对字符串的读取掌握的更加熟练了,值得注意的是JAVA1.8⾥⾯在使⽤String拼接字符串的时候,会⾃动把你要拼接的字符串⽤StringBulider来处理,⼤⼤优化了String 的性能,闲话不多说,show my XXX code~运⾏效果:⾸先打开百度百科,搜索词条,⽐如“演员”,再按F12查看源码然后抓取你想要的标签,注⼊LinkedHashMap⾥⾯就ok了,很简单是吧!看看代码罗import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import .HttpURLConnection;import .URL;import java.util.*;/*** Created by chunmiao on 17-3-10.*/public class ReadBaiduSearch {//储存返回结果private LinkedHashMap<String,String> mapOfBaike;//获取搜索信息public LinkedHashMap<String,String> getInfomationOfBaike(String infomationWords) throws IOException {mapOfBaike = getResult(infomationWords);return mapOfBaike;}//通过⽹络链接获取信息private static LinkedHashMap<String, String> getResult(String keywords) throws IOException {//搜索的urlString keyUrl = "/search?word=" + keywords;//搜索词条的节点String startNode = "<dl class=\"search-list\">";//词条的链接关键字String keyOfHref = "href=\"";//词条的标题关键字String keyOfTitle = "target=\"_blank\">";String endNode = "</dl>";boolean isNode = false;String title;String href;String rLine;LinkedHashMap<String,String> keyMap = new LinkedHashMap<String,String>();//开始⽹络请求URL url = new URL(keyUrl);HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream(),"utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);//读取⽹页内容while ((rLine = bufferedReader.readLine()) != null){//判断⽬标节点是否出现if(rLine.contains(startNode)){isNode = true;}//若⽬标节点出现,则开始抓取数据if (isNode){//若⽬标结束节点出现,则结束读取,节省读取时间if (rLine.contains(endNode)) {//关闭读取流bufferedReader.close();inputStreamReader.close();break;}//若值为空则不读取if (((title = getName(rLine,keyOfTitle)) != "") && ((href = getHref(rLine,keyOfHref)) != "")){keyMap.put(title,href);}}}return keyMap;}//获取词条对应的urlprivate static String getHref(String rLine,String keyOfHref){String baikeUrl = "";String result = "";if(rLine.contains(keyOfHref)){//获取urlfor (int j = rLine.indexOf(keyOfHref) + keyOfHref.length();j < rLine.length()&&(rLine.charAt(j) != '\"');j ++){result += rLine.charAt(j);}//获取的url中可能不含baikeUrl,如果没有则在头部添加⼀个if(!result.contains(baikeUrl)){result = baikeUrl + result;}}return result;}//获取词条对应的名称private static String getName(String rLine,String keyOfTitle){String result = "";//获取标题内容if(rLine.contains(keyOfTitle)){result = rLine.substring(rLine.indexOf(keyOfTitle) + keyOfTitle.length(),rLine.length());//将标题中的内容含有的标签去掉result = result.replaceAll("<em>|</em>|</a>|<a>","");}return result;}}以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,同时也希望多多⽀持!。

JavaURL类getContent_方法的技术内幕与纯文本处理器的实现

JavaURL类getContent_方法的技术内幕与纯文本处理器的实现

【摘要】:在Java 的网络编程中,我们可以通过创建针对某一资源的URL,然后调用其g etContent()方法来获取资源的内容。

本文通过讨论URL 类的g etContent()方法实现的机制,实现了一个可以处理纯文本文件内容的文本处理器。

【关键词】:URL 解码处理器InternetJava 是针对网络编程的程序设计语言,为了访问Internet 尤其是WWW 网上的资源,Java 提供了支持统一资源定位符URL 访问网络资源的一组类。

使用这些类,用户不需要考虑URL 中标识的各种协议的处理过程,就可以直接获得URL 所指向的资源信息。

而且这些类对HTTP 协议提供了更加广泛的支持,给访问Internet 资源的Java 应用程序开发提供了很大方便。

当用户创建了一个URL 后,最简单的方法就是通过URL 的getContent ()方法来生成一个可利用的Java 对象,从而可以在Java 应用程序中使用它们。

如果某Web 站点上有一个纯文本文件,我们如何将它也生成一个适当的Java 对象呢?本文就通过探讨URL 类getContent()方法的幕后操作和 包中与之相关的几个类和接口,来实现获取纯文本文件内容的getContent()方法。

1. 调用URL 对象getContent()方法时幕后操作的讨论[1]调用一般URL 实例的getContent()方法时,背后实际发生了什么呢?首先,它生成一个与资源的连接,提供一个URLCon-nection 对象。

然后在新的URLConnection 对象上调用getContent ()方法(getContent()也是URLConnection 类的方法)。

URLConnec- tion 对象与一个ContentHandlerF actory 对象相联系,后者能通过其独有的createContentHandler()方法生成适当的内容处理器。

这个工厂化方法所取的变元是一个指定MIME 类型的字符串(String)。

JavaHttpURLConnection抓取网页内容解析gzip格式输入流数据并转换为S。。。

JavaHttpURLConnection抓取网页内容解析gzip格式输入流数据并转换为S。。。

JavaHttpURLConnection抓取⽹页内容解析gzip格式输⼊流数据并转换为S。

最近GFW为了刷存在感,搞得⼤家是头晕眼花,修改hosts ⼏乎成了每⽇必备⼯作。

索性写了⼀个⼩程序,给办公室的同事们分享,其中有个内容就是抓取⽹络上的hosts,废了⼀些周折。

我是在⼀个博客上抓取的。

但是这位朋友的博客应该是在做防盗链,但他的⽅式⽐较简单就是5位数的⼀个整形随机数。

这⾥折腾⼀下就ok了。

要命的是他这个链接的流类型居然是gzip。

这个郁闷好久,⼀直以为是编码格式导致解析不出来结果,后来发现是gzip搞的。

主要的⼀段代码做个记录吧。

1/**2 * ⽹络⼯具类⽤于抓取上的hosts数据3 *4 * @author tone5*/6public class NetUtil {78private final static String ENCODING = "UTF-8";9private final static String GZIPCODING = "gzip";10private final static String HOST = "/pub/hosts.php";11private final static String COOKIE = "hostspasscode=%s; Hm_lvt_e26a7cd6079c926259ded8f19369bf0b=1421846509,1421846927,1421847015,1421849633; Hm_lpvt_e26a7cd6079c926259ded8f19369bf0b=1421849633" 12private final static String OFF = "off";13private final static String ON = "on";14private final static int RANDOM = 100000;15private static String hostspasscode = null;16private static NetUtil instance;1718public static NetUtil getInstance() {19if (instance == null) {20 instance = new NetUtil();21 }22return instance;23 }2425private NetUtil() {26 hostspasscode = createRandomCookies();27 }2829/**30 * 获取html内容31 *32 * @param gs33 * @param wk34 * @param twttr35 * @param fb36 * @param flkr37 * @param dpbx38 * @param odrvB39 * @param yt40 * @param nohl41 * @return42*/43public String getHtmlInfo(boolean gs, boolean wk, boolean twttr, boolean fb,44boolean flkr, boolean dpbx, boolean odrv,45boolean yt, boolean nohl) throws Exception {46 HttpURLConnection conn = null;4748 String result = "";4950//String cookie = "hostspasscode="+hostspasscode+"; Hm_lvt_e26a7cd6079c926259ded8f19369bf0b=1421846509,1421846927,1421847015,1421849633; Hm_lpvt_e26a7cd6079c926259ded8f19369bf0b=1421849633";51 String cookie = String.format(COOKIE, hostspasscode);5253//URL url = new URL("/pub/hosts.php?passcode=13008&gs=on&wk=on&twttr=on&fb=on&flkr=on&dpbx=on&odrv=on&yt=on&nolh=on");54 URL url = new URL(createUrl(hostspasscode, gs, wk, twttr, fb, flkr, dpbx, odrv, yt, nohl));55//System.out.println(cookie);56// System.out.println(url.toString());5758 conn = (HttpURLConnection) url.openConnection();5960 conn.setConnectTimeout(5 * 1000);61 conn.setDoOutput(true);62//get⽅式提交63 conn.setRequestMethod("GET");64//凭借请求头⽂件65 conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");66 conn.setRequestProperty("Accept-Encoding", "gzip, deflate");67 conn.setRequestProperty("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");68 conn.setRequestProperty("Connection", "keep-alive");69 conn.setRequestProperty("Cookie", cookie);70 conn.setRequestProperty("Host", "");71 conn.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0");7273// conn.setRequestProperty("Referer", "/pub/gethosts.php");74// conn.setRequestProperty("X-Requested-With", "XMLHttpRequest");7576 conn.connect();7778 String encoding = conn.getContentEncoding();7980 result = readStream(conn.getInputStream(), encoding);81//测试进度条显⽰82// result = readStream(new FileInputStream(new File("/home/tone/Resident.Evil.Damnation.2012.1080p.BluRay.x264.DTS-WiKi.mkv")), "11");8384 conn.disconnect();85if (nohl) {86 result=getLocalHost()+result;87 }8889return result;90 }9192/**93 * 读取将InputStream中的字节读以字符的形式取到字符串中,如果encoding是gzip,那么需要先有GZIPInputStream进⾏封装95 * @param inputStream InputStream字节流96 * @param encoding 编码格式97 * @return String类型的形式98 * @throws IOException IO异常99*/100private String readStream(InputStream inputStream, String encoding) throws Exception {101 StringBuffer buffer = new StringBuffer();102 ProgressMonitorInputStream pmis = null;103104 InputStreamReader inputStreamReader = null;105 GZIPInputStream gZIPInputStream = null;106if (GZIPCODING.equals(encoding)) {107 gZIPInputStream = new GZIPInputStream(inputStream);108 inputStreamReader = new InputStreamReader(ProgressUtil.getMonitorInputStream(gZIPInputStream, "获取⽹络数据"), ENCODING); 109110 } else {111112 inputStreamReader = new InputStreamReader(ProgressUtil.getMonitorInputStream(inputStream, "获取⽹络数据"), ENCODING); 113 }114115116char[] c = new char[1024];117118int lenI;119while ((lenI = inputStreamReader.read(c)) != -1) {120121 buffer.append(new String(c, 0, lenI));122123 }124if (inputStream != null) {125 inputStream.close();126 }127if (gZIPInputStream != null) {128 gZIPInputStream.close();129 }130if (pmis!=null) {131 gZIPInputStream.close();132 }133134135return buffer.toString();136137138 }139140/**141 * ⽣成随机Cookies数组142 *143 * @return五位随机数字144*/145private String createRandomCookies() {146147return String.valueOf(Math.random() * RANDOM).substring(0, 5);148149 }150151/**152 * ⽣成链接字符串153 *154 * @param hostspasscode155 * @param gs156 * @param wk157 * @param twttr158 * @param fb159 * @param flkr160 * @param dpbx161 * @param odrvB162 * @param yt163 * @param nohl164 * @return165*/166private String createUrl(String hostspasscode, boolean gs, boolean wk, boolean twttr, boolean fb,167boolean flkr, boolean dpbx, boolean odrv,168boolean yt, boolean nohl) {169 StringBuffer buffer = new StringBuffer();170 buffer.append(HOST);171 buffer.append("?passcode=" + hostspasscode);172if (gs) {173 buffer.append("&gs=" + ON);174 } else {175 buffer.append("&gs=" + OFF);176 }177if (wk) {178 buffer.append("&wk=" + ON);179 } else {180 buffer.append("&wk=" + OFF);181 }182if (twttr) {183 buffer.append("&twttr=" + ON);184 } else {185 buffer.append("&twttr=" + OFF);186 }187if (fb) {188 buffer.append("&fb=" + ON);189 } else {190 buffer.append("&fb=" + OFF);191 }192if (flkr) {193 buffer.append("&flkr=" + ON);194 } else {195 buffer.append("&flkr=" + OFF);196 }197if (dpbx) {198 buffer.append("&dpbx=" + ON);199 } else {200 buffer.append("&dpbx=" + OFF);201 }202if (odrv) {203 buffer.append("&odrv=" + ON);204 } else {205 buffer.append("&odrv=" + OFF);207if (yt) {208 buffer.append("&yt=" + ON);209 } else {210 buffer.append("&yt=" + OFF);211 }212if (nohl) {213 buffer.append("&nohl=" + ON);214 } else {215 buffer.append("&nohl=" + OFF);216 }217return buffer.toString();218 }219220private String getLocalHost() throws Exception {221222 StringBuffer buffer=new StringBuffer();223 String hostName=OSUtil.getInstance().getLocalhostName(); 224 buffer.append("#LOCALHOST begin"+"\n");225 buffer.append("127.0.0.1\tlocalhost"+"\n");226if (hostName!=null&&!"".equals(hostName)) {227 buffer.append("127.0.1.1\t"+hostName+"\n");228 }229230 buffer.append("#LOCALHOST end"+"\n");231return buffer.toString();232233234235 }236237 }。

java 爬虫案例

java 爬虫案例

java 爬虫案例Java爬虫案例1. 爬取网页内容Java爬虫可以通过发送HTTP请求获取网页的内容。

可以使用Java 的URLConnection或者HttpClient等工具类库发送GET或POST请求,并获取返回的网页内容。

通过解析网页的HTML结构,可以提取出所需的信息。

2. 提取网页中的链接爬虫可以通过解析网页的HTML结构,提取出所有的链接。

可以使用Java的正则表达式、Jsoup等工具来解析网页。

通过遍历网页中的链接,可以进一步获取其他网页的内容。

3. 爬取图片Java爬虫可以通过解析网页的HTML结构,提取出图片的链接,然后使用Java的IO流将图片保存到本地或者其他存储介质中。

可以使用Java的正则表达式、Jsoup等工具来解析网页,并使用Java 的IO流进行文件的读写操作。

4. 爬取表格数据Java爬虫可以通过解析网页的HTML结构,提取出表格中的数据。

可以使用Java的正则表达式、Jsoup等工具来解析网页,并通过遍历表格的行和列,提取出所需的数据。

5. 登录网站爬取数据有些网站需要登录才能获取到数据,Java爬虫可以模拟登录过程,发送POST请求并携带登录信息,然后获取登录后的网页内容。

可以使用Java的URLConnection或者HttpClient等工具类库发送POST 请求,并获取返回的登录后的网页内容。

6. 爬取动态网页有些网页内容是通过JavaScript动态生成的,Java爬虫可以使用无头浏览器(headless browser)来模拟浏览器的行为,执行JavaScript代码,并获取动态生成的网页内容。

可以使用Java的Selenium等工具来模拟浏览器的行为。

7. 爬取API数据有些网站提供了API接口,Java爬虫可以通过发送HTTP请求并携带相应的参数,获取API返回的数据。

可以使用Java的URLConnection或者HttpClient等工具类库发送HTTP请求,并解析API返回的数据。

java获取在线文档数据的方法

java获取在线文档数据的方法

要获取在线文档数据,可以使用Java的网络编程功能来连接文档所在的服务器,并从服务器上下载文档数据。

以下是一些可能有用的方法:
1. 使用Java的URL类获取文档数据:使用URL类中的openStream()方法可以打开一个与指定URL相关的数据流,然后可以使用Java IO库中的类来读取该数据流并获取文档数据。

2. 使用Java的URLConnection类获取文档数据:使用URLConnection类中的getInputStream()方法可以打开一个与指定URL相关的输入流,然后可以使用Java IO库中的类来读取该输入流并获取文档数据。

3. 使用Java的HttpClient类获取文档数据:HttpClient类可以用于发送HTTP请求并接收HTTP响应。

可以使用HttpClient类中的execute()方法发送HTTP GET请求以获取文档数据,然后可以使用Java IO库中的类来读取响应数据。

4. 使用第三方库来获取文档数据:有许多第三方库可用于从Web上获取数据,例如Jsoup和Apache HttpClient。

这些库通常提供更高级的API和更多的功能,可以使获取在线文档数据变得更加容易和灵活。

无论使用哪种方法,都需要确保在处理完数据后关闭所有打开的资源,例如输入/输出流、套接字和HTTP连接。

这可以通过使用Java
的try-with-resources语句来实现。

java获取url参数的方法

java获取url参数的方法

java获取url参数的方法Java获取URL参数是我们在开发Java Web应用中常见的需求,通常我们需要从URL中获取参数来完成特定的业务逻辑。

本文将为您详细讲解如何使用Java获取URL参数的方法。

步骤一:获取请求对象在Java Servlet中,我们可以通过HttpServletRequest对象来获取客户端的请求信息。

它提供了一系列方法,可以获取客户端请求的方式、URL、参数等信息。

下面是一个示例代码:```protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String url = request.getRequestURL().toString();String method = request.getMethod();String query = request.getQueryString();Map<String, String[]> paramMap =request.getParameterMap();}```这里我们通过request对象获取了请求的URL、请求方式、请求参数以及请求参数的Map集合。

步骤二:获取URL参数上一步我们已经获取了请求参数的Map集合,接下来,我们需要从Map集合中获取我们需要的参数值。

我们可以通过以下的方法获取单个参数值:```String value = request.getParameter("key");```其中,"key"是参数名称。

如果参数不存在,则返回null。

如果需要获取多个参数值,我们可以通过以下方法:```String[] values = request.getParameterValues("key");```这里的"key"仍然是参数名称。

JAVA抓取网站数据

JAVA抓取网站数据

JAVA抓取网站数据JAVA抓取网站数据00可以使用抓取的类库包括JDK自带URL或第三方的HttpClient,这里使用URL基础类库访问网络。

其实,用JDK自带的URL模拟网站请求,并返回数据是个模板式的过程,只可能有时候碰到多重跳转,或重定向而采取多个模板式过程而已。

一般流程类似:1将要模拟的请求地址传递给URL2通过URL获得一个连接对象,URLConnection或将其转化为子类HttpURLConnection我常用HttpURLConnection,有时候死活连不上可以尝试切换使用,呵呵。

3通过setRequestProperty函数来设置请求参数,请求方式,具体设置哪些参数对应网站有所不同。

4通过连接对象的函数来设置:诸如禁止自动跳转重定向,超时的时间,输入输出设定等。

5调用connect(),开始连接地址。

5如果请求为get,附带参数;或post,附带表单信息,则通过getOutputStream函数传递,这个函数自带connect()过程,所以第5步有这方法存在则省略。

注:output必须在input之前执行,否则抛异常。

6 通过getResponseCode得到连接并发送参数后返回的状态码:可能为跳转地址,重定向地址,也可能为直接返回数据。

注:在第3或4步中设置setInstanceFollowRedirects(false);便于分析每次请求后的流程,是得到数据还是跳转了地址等等。

200成功连接服务,但不表示满足网站的业务需求,比如登录成功等。

301 302跳转或重定向可以通过getHeaderField("location");得到接下来转向地址500 与服务器连接失败,首先检测User-Agent请求头模拟信息是否准确。

7 通过getInputStream()得到请求成功后的信息数据流。

8 通过IO可以尝试测试返回的数据信息,如果是压缩包或者文件可以通过IO来下载保存9第一次请求不需要Cookie信息,但是如果需要接下来的请求,可能会涉及需要登录以后才可以操作的流程,所以需要把第一次生成的session传递下去。

JAVA爬虫获取网页URL源码

JAVA爬虫获取网页URL源码

package fileAndStringOperate;import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.OutputStream;public class ReadFileToString {public static void main(String []args) throws IOException{String fileData = readtxt("D:\\IR\\1\\JAVA网络爬虫.txt");CountRelatedDocument(fileData);//MyWebRec []myWebRec = new MyWebRec[2000];ClassifyURL(fileData);}private static String readtxt(String filePath) throws IOException{ BufferedReader br=new BufferedReader(new FileReader(filePath));String str="";String r=br.readLine();while(r!=null){str+=r+"\n";r=br.readLine();}return str;}private static char[][] readtxtToChar(String filePath) throws IOException{ char [][]data = null;int currentline = 0;BufferedReader br=new BufferedReader(new FileReader(filePath));String str="";String r=br.readLine();while(r!=null){str+=r+"\n";data[currentline++] = str.toCharArray();r=br.readLine();}return data;}private static int CountRelatedDocument(String fileData){int cntRelated = 0;int currentLine = 1;int baiduCnt = 0;int bingCnt = 0;int sogouCnt = 0;int _360Cnt = 0;int State = 0;boolean baiduY[] = new boolean[51];boolean bingY[] = new boolean[51];boolean sogouY[] = new boolean[51];boolean _360Y[] = new boolean[51];char []fileChar = fileData.toCharArray();for(int i = 0; i < fileChar.length;i ++){if(fileChar[i] == '#' && fileChar[i+1] == '*'){State++;System.out.println("分点:"+currentLine);}if(fileChar[i] == '\n')currentLine ++;if(currentLine %3 == 0){if(fileChar[i] == 'Y'||fileChar[i] == 'y'){if(State == 1){baiduCnt ++;baiduY[currentLine/3] = true;}else if(State == 2){bingCnt ++;bingY[currentLine/3 - 50 ] = true;//System.out.println(currentLine/3 - 50);}else if(State == 3){sogouCnt ++;sogouY[currentLine/3 - 100] =true;}else if(State == 4){_360Cnt ++;_360Y[currentLine/3 - 150] = true;}cntRelated++;}}}try{CaculatePR(baiduY,bingY,_360Y,sogouY,cntRelated);}catch(Exception e){e.getMessage();}System.out.println("cntRelated = "+cntRelated);System.out.println("baiduCnt = "+baiduCnt);System.out.println("bingCnt = "+bingCnt);System.out.println("sohuCnt = "+sogouCnt);System.out.println("_360Cnt = "+_360Cnt);System.out.println("currentLine = " + currentLine);return cntRelated;}private static void ClassifyURL(String fileData){String str1[] = fileData.split("\n");for(int i = 0;i < str1.length;i ++){if(str1[i].startsWith("#*"))str1[i] = str1[i].substring(10);}}private static void CaculatePR(boolean baiduY[],boolean bingY[],boolean _360Y[],boolean sogouY[],int cntRelated) throws IOException{double baiduP[] = new double [51];double baiduR[] = new double [51];double bingP[] = new double [51];double bingR[] = new double [51];double sogouP[] = new double [51];double sogouR[] = new double [51];double _360P[] = new double [51];double _360R[] = new double [51];int cntBaidu = 0;int cntBing = 0;int cntSogou = 0;int cnt360 = 0;//System.out.println("Related:"+cntRelated);for(int i = 1;i <= 50;i ++){if(baiduY[i] == true)cntBaidu ++;if(bingY[i] == true)cntBing ++;if(sogouY[i] == true)cntSogou ++;if(_360Y[i] == true)cnt360 ++;baiduP[i] = 1.000000*cntBaidu/i;baiduR[i] = 1.000000*cntBaidu/cntRelated;bingP[i] = 1.000000*cntBing/i;bingR[i] = 1.000000*cntBing/cntRelated;sogouP[i] = 1.000000*cntSogou/i;sogouR[i] = 1.000000*cntSogou/cntRelated;_360P[i] = 1.000000*cnt360/i;_360R[i] = 1.000000*cnt360/cntRelated;//System.out.print(cntBaidu+"\t"+cntBing+"\t"+cntSogou+"\t"+cnt360+"\n");}CaculateMAP(baiduP,bingP,sogouP, _360P);File file = new File("D:/JAVA网络爬虫.txt");FileWriter out = new FileWriter(file); //文件写入流//将数组中的数据写入到文件中。

java如何获取浏览器的访问网址及其内容

java如何获取浏览器的访问网址及其内容
getServerName:请求的服务器.
getProtocol:使用协议.getMethod:请求方法.
getServerPort:请求端口号.
getContextPath:Context路径.
getServletPath: Servlet路径.
getRequestURI:URI路径.
getQueryString:查询字符串.
getRemoteAddr:使用者主机IP.
getRemotePort:使用者使用端口号.追问
我的意思是:例如,你正在上网,然后我通过这个就可以知道你上的什么网站,什么内容。
还有上边的如果行。
请问它在那个包里?
以下文字资料是由历史新知网wwwlishixinzhicom小编为大家搜集整理后发布的内容让我们赶快一起来看一下吧
java如何获取浏览器的访问网址及其内容
通过request俩获取,以下是request的方法介绍:
getParameterNames:取得客户端所发出的请求参数名称.
getParameter:可以让您指定请求参数名称,以取得对应的设定值.

发送HTTPS请求,获得网页内容的java方法

发送HTTPS请求,获得网页内容的java方法

发送HTTPS请求,获得网页内容的java方法这是一个java方法,其功能是发送https请求,获得相应的页面内容..最后返回字符串/*** 发送HTTPS请求,获得网页内容* @param urlstr* @return* @throws IOException*/@Testpublic String testHtml2(String urlstr) {//System.out.println("############");String sCurrentLine;String sTotalString;sCurrentLine = "";sTotalString = "";String hsUrl = "https://localhost:8443/BestServer/login!Checking.do?string="+ urlstr;URL url ;try {url = new URL(hsUrl);HttpsURLConnection con = (HttpsURLConnection) url.openConnection();X509TrustManager xtm = new X509TrustManager() {@Overridepublic X509Certificate[] getAcceptedIssuers() {// TODO Auto-generated method stubreturn null;}@Overridepublic void checkServerTrusted(X509Certificate[] arg0, String arg1)throws CertificateException {// TODO Auto-generated method stub}@Overridepublic void checkClientTrusted(X509Certificate[] arg0, String arg1)throws CertificateException {// TODO Auto-generated method stub}};TrustManager[] tm = { xtm };SSLContext ctx = SSLContext.getInstance("TLS");ctx.init(null, tm, null);con.setSSLSocketFactory(ctx.getSocketFactory());con.setHostnameVerifier(new HostnameVerifier() {@Overridepublic boolean verify(String arg0, SSLSession arg1) {return true;}});InputStream l_urlStream = con.getInputStream();;BufferedReader l_reader = new BufferedReader(new InputStreamReader(l_urlStream));while ((sCurrentLine = l_reader.readLine()) != null) {sTotalString += sCurrentLine + "\r\n";}//System.out.println(sT otalString.trim());} catch (Exception e) {e.printStackTrace();}return sT otalString.trim();}。

java通过url读取文件内容示例

java通过url读取文件内容示例

java通过url读取⽂件内容⽰例复制代码代码如下:using System;using System.Collections;using ponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;using System.IO;using ;using System.Text;using System.Text.RegularExpressions;namespace eMeng.Exam{/// <summary>/// GetPageHtml 的摘要说明。

/// </summary>public class GetPageHtml : System.Web.UI.Page{protected System.Web.UI.WebControls.Button WebClientButton;protected System.Web.UI.WebControls.Button WebRequestButton;protected System.Web.UI.WebControls.TextBox ContentHtml;protected System.Web.UI.WebControls.TextBox UrlText;protected System.Web.UI.WebControls.Button GetText;private string PageUrl = "";private void Page_Load(object sender, System.EventArgs e){}#region Web Form Designer generated codeoverride protected void OnInit(EventArgs e){InitializeComponent();base.OnInit(e);}/// <summary>/// 设计器⽀持所需的⽅法 - 不要使⽤代码编辑器修改/// 此⽅法的内容。

JAVA通过url获取网页内容

JAVA通过url获取网页内容

import java.io.*;import .URL;import .URLConnection;public class TestURL {public static void main(String[] args) throws IOException {test4();test3();test2();test();}/*** 获取URL指定的资源。

** @throws IOException*/public static void test4() throws IOException {URL url = new URL("/attachment/200811/200811271227767778082.jpg");//获得此URL 的内容。

Object obj = url.getContent();System.out.println(obj.getClass().getName());}/*** 获取URL指定的资源** @throws IOException*/public static void test3() throws IOException {URL url = new URL("/down/soft/45.htm");//返回一个URLConnection 对象,它表示到URL 所引用的远程对象的连接。

URLConnection uc = url.openConnection();//打开的连接读取的输入流。

InputStream in = uc.getInputStream();int c;while ((c = in.read()) != -1)System.out.print(c);in.close();}/*** 读取URL指定的网页内容** @throws IOException*/public static void test2() throws IOException {URL url = new URL("/down/soft/45.htm");//打开到此URL 的连接并返回一个用于从该连接读入的InputStream。

获取页面URL两种方式

获取页面URL两种方式

获取页⾯URL两种⽅式⼀:⽤java代码获取1//获取URL中的请求参数。

即?后的条件 code=12 String queryString = request.getQueryString() ;34 //获取URI。

/doctor/demo5 String requestURI = request.getRequestURI() ;67 //获取URL(不带请求参数)。

即协议+ip地址+端⼝号+请求⽅法 http://localhost:8080/doctor/demo8 StringBuffer requestURL = request.getRequestURL() ;910 //返回调⽤servlet请求的URL部分。

/doctor/demo11 String servletPath = request.getServletPath() ;121314 //获取ip地址。

localhost15 String serverName = request.getServerName();1617 //获取请求协议 http18 String scheme = request.getScheme();1920 //获取端⼝号 808021 int serverPort = request.getServerPort();⼆:在页⾯中获取1//设置或获取对象指定的⽂件名或路径。

/doctor/demo2 window.location.pathname;34 //设置或获取整个 URL 为字符串。

http://localhost:8080/doctor/demo?code=15 window.location.href;67 //设置或获取与 URL 关联的端⼝号码。

80808 window.location.prot;910 //设置或获取 URL 的协议部分。

http:11 window.location.protocol;1213 //设置或获取 location 或 URL 的 hostname 和 port 号码。

java简单实现抓取动态网页数据

java简单实现抓取动态网页数据

java简单实现抓取动态⽹页数据java简单实现抓取动态⽹页数据在这⾥我分享⼀段简单的获取js执⾏后的⽹页数据!1.先建⽴⼀个maven⼯程在这⾥我随便建了⼀个web⼯程!根据你安装的Google路径⽐如:C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe3.在环境变量中的系统变量 path 中配置:C:\\Program Files (x86)\\Google\\Chrome\\Application5.测试是否配置成功如果启动浏览器说明配置成功了System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); WebDriver webDriver = new ChromeDriver();setProperty (String prop, String value);参数:prop - 系统属性的名称。

value - 系统属性的值。

返回:系统属性的值,如果没有值,则返回null。

6.获取⽹页js执⾏后页⾯全部数据System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); WebDriver webDriver = new ChromeDriver();webDriver.get("/?fr=mhd_card");//写⼊你要抓取的⽹址WebElement webElement = webDriver.findElement(By.xpath("/html"));//获取页⾯全部信息String htmlText=webElement.getAttribute("outerHTML");webDriver.close();//必须关闭资源WebDriver 获取⽹页数据信息,由By来定位,通过WebElement来解析数据!如果有兴趣的可以去看API!简单描述⼀下如何获取节点数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

import java.io.*;
import .URL;
import .URLConnection;
public class TestURL {
public static void main(String[] args) throws IOException {
test4();
test3();
test2();
test();
}
/**
* 获取URL指定的资源。

*
* @throws IOException
*/
public static void test4() throws IOException {
URL url = new
URL("/attachment/200811/200811271227767778082.jpg");
//获得此URL 的内容。

Object obj = url.getContent();
System.out.println(obj.getClass().getName());
}
/**
* 获取URL指定的资源
*
* @throws IOException
*/
public static void test3() throws IOException {
URL url = new URL("/down/soft/45.htm");
//返回一个URLConnection 对象,它表示到URL 所引用的远程对象的连接。

URLConnection uc = url.openConnection();
//打开的连接读取的输入流。

InputStream in = uc.getInputStream();
int c;
while ((c = in.read()) != -1)
System.out.print(c);
in.close();
}
/**
* 读取URL指定的网页内容
*
* @throws IOException
*/
public static void test2() throws IOException {
URL url = new URL("/down/soft/45.htm");
//打开到此URL 的连接并返回一个用于从该连接读入的InputStream。

Reader reader = new InputStreamReader(new BufferedInputStream(url.openStream()));
int c;
while ((c = reader.read()) != -1) {
System.out.print((char) c);
}
reader.close();
}
/**
* 获取URL的输入流,并输出
*
* @throws IOException
*/
public static void test() throws IOException {
URL url = new URL("/62575/120430");
//打开到此URL 的连接并返回一个用于从该连接读入的InputStream。

InputStream in = url.openStream();
int c;
while ((c = in.read()) != -1)
System.out.print(c);
in.close();
}
}
魔域私服/t6NqB0FRx5YZ。

相关文档
最新文档