-
定义一个常量 值为需要爬取的url地址
// url地址 private static final String ADDRSS = "http://www.people.com.cn/rss/politics.xml";
-
建立连接 获取读取数据对象
private static InputStream getURLConnection(String addrss) { // 创建一个空的输入流 InputStream inputStream = null; // 判断传入的地址是否为空 为空时 没有直接返回null if (StringUtils.isBlank(addrss))return null; try { // 去掉两端空格 包括/n... URL url = new URL(addrss); // 打开链接 HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); // 设置请求属性 httpURLConnection.setRequestProperty("User-Agent","Nt"); // 建立HttpURLConnection链接 -- 连接成功后会有一个响应200 httpURLConnection.connect(); // 判断是否连接成功 if (httpURLConnection.getResponseCode() == 200){ try { // 连接成功后 获取读取数据的输入流 inputStream = httpURLConnection.getInputStream(); } catch (IOException e) { e.printStackTrace(); } } } catch (MalformedURLException e) { System.out.println("地址转换异常!!!"); } catch (IOException e) { System.out.println("打开链接异常!!!"); } // 返回读取对象 return inputStream;`在这里插入代码片` } -
读取数据
private static StringBuilder getXMLFile(InputStream inputStream, int num) { // 创建一个空的StringBuilder用户保存爬虫下来的数据 StringBuilder stringBuilder = null; // 判断读取文件是否为空 if (inputStream != null){ // 创建文档生成器工厂 documentBuilderFactory documentBuilderFactory = documentBuilderFactory.newInstance(); try { // 创建文档生成器 documentBuilder documentBuilder = documentBuilderFactory.newdocumentBuilder(); stringBuilder = new StringBuilder(); // 将文件生成器转换成文档 document document = documentBuilder.parse(inputStream); // 获取标题链表 NodeList titles = document.getElementsByTagName("title"); // 获取链接链表 NodeList links = document.getElementsByTagName("link"); System.out.println(links.getLength()); for (int i = 1 ,j = 1 ,tl = titles.getLength() ,ul = links.getLength(); i < num+2 && i < tl && j < ul && j < num+2;i++,j++) { // 依次获取链表下title标签 Node title = titles.item(i); // 依次获取链表下link标签 Node link = links.item(j); // 依次获取title下儿子的内容 String titlevalue = title.getFirstChild().getNodevalue(); // 依次获取link下儿子的内容 String linkValue = link.getFirstChild().getNodevalue(); // 判断是否是第一个 if (i == 1){ System.out.println("==========当日 "+titlevalue+" "+linkValue+"==============="); }else{ System.out.println(titlevalue+" "+linkValue); } // 将数据依次附加到StringBuilder中 stringBuilder.append(titlevalue+" "+linkValue); } } catch (ParserConfigurationException e) { System.out.println("创建文档生成器异常!!!"); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // 返回 return stringBuilder; } -
调用
// 传入链接地址 获取读取数据的流 InputStream inputStream = getURLConnection(ADDRSS); // 传入链接地址与查询的数量 获取数据 读取xml文件中的数据 getXMLFile(inputStream,10);
-
效果



