[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] (已结贴)求助大神,抓取html指定内容并输出(不限语言,欢迎各种脚本大神)

本帖最后由 heiben 于 2014-11-28 20:34 编辑

要求是抓取一个目录下的所有html的指定内容,并将其按照格式输出(txt,xls)
在淘宝上找人代写,结果有人说可以,有人不行。
详细要求:






html样本与最终结果放在云盘
http://yunpan.cn/cAXcBy2N7Ij6H  提取码 7b4e


求大神帮助,自己用java写了一些如下:

用Python的Beautiful soup应该更快解决,抓取
  1. <tr class="unaccorg">
复制代码
这一部分的内容就可将检查点的大部分都抓取了,但难点就在如何连同基线项,等级与检查点等都关联上。。结果只要不合规的,也就是打红色交叉
的。

最终结果的输出要与excel的相同。
  1. import java.io.BufferedReader;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;
  7. import java.io.PrintWriter;
  8. import java.net.URL;
  9. import java.net.URLConnection;
  10. import java.util.regex.*;
  11. public class Test {
  12. public static void main(String[] args) {
  13. try {
  14. URL url = new URL("http://127.0.0.1/html/10.248.1.68(80).html");
  15. URLConnection conn = url.openConnection();
  16. conn.setDoOutput(true);
  17. InputStream in = null;
  18. in = url.openStream();
  19. String content = pipe(in,"utf-8");
  20. //System.out.println(content);
  21.     String Regex=">IP地址</th><td>(.*?)</td></tr>(.*?)>安全评估分</th><td>(.*?)</td></tr>(.*?)src=\"images/blank.gif\"(.*?)</td><td colspan='1' rowspan='1' width='40px'>(.*?)</td><td colspan='1' rowspan='1' width='40px'>(.*?)</td><td colspan='1' rowspan='1' width='30px'>(.*?)</th><td colspan='1' rowspan='1' width='150px'>(.*?)</td><td>(.*?)";
  22.     String html=content;
  23.    
  24.     Pattern p1=Pattern.compile(Regex);
  25.     Matcher m=p1.matcher(html);
  26.   
  27.     while(m.find())
  28.     {
  29.      //System.out.println(m.group());
  30.      System.out.println("IP地址:"+m.group(1)+"\r\n检查分:"+m.group(3)+"\r\n基线项:"+m.group(5)+"\r\n风险等级:"+m.group(7)+"\r\n检查点:"+m.group(9));
  31.     }
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. }
  35. }
  36. static String pipe(InputStream in,String charset) throws IOException {
  37.         StringBuffer s = new StringBuffer();
  38.         if(charset==null||"".equals(charset)){
  39.          charset="utf-8";
  40.         }
  41.         String rLine = null;
  42.         BufferedReader bReader = new BufferedReader(new InputStreamReader(in,charset));
  43.         PrintWriter pw = null;
  44.       
  45. FileOutputStream fo = new FileOutputStream("test.html");
  46. OutputStreamWriter writer = new OutputStreamWriter(fo, "utf-8");
  47. pw = new PrintWriter(writer);
  48.         while ( (rLine = bReader.readLine()) != null) {
  49.             String tmp_rLine = rLine;
  50.             int str_len = tmp_rLine.length();
  51.             if (str_len > 0) {
  52.               s.append(tmp_rLine);
  53.               pw.println(tmp_rLine);
  54.               pw.flush();
  55.             }
  56.             tmp_rLine = null;
  57.        }
  58.         in.close();
  59.         pw.close();
  60.         return s.toString();
  61. }
  62. }
复制代码

回复 2# DAIC


    。。。500块人民币。。我还不如先自己试试,或者问问大神们的意见再说说看。。如果有大神可以解决,我300人民币给他

TOP

回复 5# tmplinshi


    感谢5楼啦。。已经汇款给楼主。看来语言真的不在于是否强大,而是在于所编写的人和编写人的思路。

没想到这么快就可以结贴了。。

TOP

返回列表