如何抓取一个页面的数据--第一次尝试这方面的的知识
2017-05-12 12:31
351 查看
想尝试去写一个程序来实现登录后可以直接查询到我在学校的成绩,但是没做过这方面的东西,而且计算机网络这门课学一年多了,实在记得东西不多,当锻炼了吧。我想我一步知道应该抓取一个页面的数据,然后再通过fiddler抓包,来获取一些需要发送的东西,这里我尝试第一步:如何抓取一个页面的数据.
通过查询网上资料,见很多很多人使用URL抓取网页内容 ,使用正则表达式去除《div》等元素,第一次就先获取页面的全部数据。这里我准备获取w3.school的页面内容
Java代码:
这里我们使用正则表达式去掉标签,并且只获取网页的一部分数据:
到此我们就实现了如何将网页的内容和需要的数据截取下来,初次尝试,有很多借鉴,希望以后能更熟悉。
通过查询网上资料,见很多很多人使用URL抓取网页内容 ,使用正则表达式去除《div》等元素,第一次就先获取页面的全部数据。这里我准备获取w3.school的页面内容
Java代码:
import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.*; public class CatchData { public static void main(String[] args) { try { catchDa("http://www.w3school.com.cn/"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 读取网页的全部内容 */ public static void catchDa(String url) throws IOException{ InputStream in=null; OutputStream out=null; URL addURL=null; try { addURL=new URL(url); in=addURL.openStream(); out=new FileOutputStream("a.txt",true); byte[]c=new byte[1024]; int n=-1; while((n=in.read(c, 0, 1024))!=-1){ out.write(c, 0, n); } } catch (Exception e) { // TODO: handle exception }finally{ if(in!=null){ in.close(); } if(out!=null){ out.close(); } } } }执行之后:
这里我们使用正则表达式去掉标签,并且只获取网页的一部分数据:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.Writer; import java.net.URL; public class UrlReader { public static String read(String url) throws IOException { StringBuffer html = new StringBuffer(); InputStream openStream = null; URL addrUrl = null; //URLConnection urlConn = null; BufferedReader br = null; try { addrUrl = new URL(url); openStream = addrUrl.openStream(); br = new BufferedReader( new InputStreamReader(openStream,"gbk")); String buf = null; while ((buf = br.readLine()) != null) { html.append(buf + "\r\n"); } } finally { if (br != null) { br.close(); } } return html.toString(); } public static void main(String[] args) { try { String html=read("http://www.w3school.com.cn/"); int beginindex=html.indexOf("<div id=\"w3\">"); int endindex=html.indexOf("<p>"); String text=html.substring(beginindex, endindex); text=text.replaceAll("<div id=\"w3\">", ""); text=text.replaceAll("<h2>", ""); text=text.replaceAll("</h2>", ""); OutputStream out=new FileOutputStream("a.txt",true); out.write(text.getBytes()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
到此我们就实现了如何将网页的内容和需要的数据截取下来,初次尝试,有很多借鉴,希望以后能更熟悉。
相关文章推荐
- 如何抓取到Asp.Net中-doPostBack获取新页面的数据
- Yii:如何在CGridView列表控件使用了Ajax方式更新数据的情况下返回前一个页面
- iOS如何设置一个只会在第一次打开app出现的视图(如登录页面)
- 如何设计数据仓库?粒度问题是一个最重要方面!
- 爬虫如何抓取到asp.net中-dopostback获取新页面的数据
- 爬虫如何抓取到Asp.Net中__doPostBack获取新页面的数据
- 回退上一个页面时如何保证之前的数据还在,即回退时不刷新页面
- JSP如何在servlet将一个数据模型对象传递给jsp页面
- 如何用.net制作一个简易爬虫抓取华为应用市场数据
- 爬虫如何抓取到Asp.Net中-doPostBack获取新页面的数据
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- 请问如何在Web页面中点击一个button之后,用jsp从数据库中读取数据显示到表格里
- 微信小程序编译过程中如何将一个页面的数据传到另一个页面呢
- Silverlight制作一个简单的菜单1-用到的知识讲解 xml数据读取,事件如何传递参数
- .net MVC知识积累,当遇到一个页面有多个数据集合时可以采用哈希表来存贮集合。通过循环来读取数据!
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- 关于如何控制一个页面的Ajax读数据只读一次的简单解决办法!
- 爬虫 抓取数据后 显示到前台页面,jsoup包,ajax,设置一个返回ResponseResult结果集
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- Xcode做一个下载管理器,需要哪些方面的知识,难度如何