`
neeleon
  • 浏览: 189482 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java采集csdn论坛源码

    博客分类:
  • java
阅读更多
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class WebContent {
 /**
  * 读取一个网页全部内容
  */
 public String getOneHtml(String htmlurl) throws Exception {
  URL url;
  String temp;
  StringBuffer sb = new StringBuffer();

  url = new URL(htmlurl);
  BufferedReader in = new BufferedReader(new InputStreamReader(url
    .openStream(), "utf-8"));// 读取网页全部内容
  while ((temp = in.readLine()) != null) {
   sb.append(temp);
  }
  in.close();
  return sb.toString();
 }

 /**
  *
  * @param s
  * @return 获得网页标题
  */
 public String getTitle(String s, boolean isnew) {
  String regex;
  String title = "";
  List list = new ArrayList();
  regex = "<title>.*?</title>";
  Pattern pa = Pattern.compile(regex, Pattern.CANON_EQ);
  Matcher ma = pa.matcher(s);
  while (ma.find()) {
   list.add(ma.group());
  }
  for (int i = 0; i < list.size(); i++) {
   title = title + list.get(i);
  }
  return outTag(title);
 }
 
 // 标记替换定义  其中FGF是被替换与要替换标记之间的分隔符
 private static String[] bjs = {"&lt;FGF<", "&gt;FGF76>", "&quot;FGF76\""};

 /**
  * 获得正文与回复,指新帖子
  */
 public String[] getTiezi(String s) {
  String regex;
  List list = new ArrayList();
  regex = "msgfont.*?</div>";
  Pattern pa = Pattern.compile(regex, Pattern.MULTILINE);
  Matcher ma = pa.matcher(s);
  while (ma.find()) {
   list.add(outTag(ma.group().replaceAll("msgfont\">", "").replaceAll("<br />", "\r\n").replaceAll("<br/>", "\r\n").replaceAll("&nbsp;", "")));
  }
  
  String[] reStr = new String[list.size()];
  for (int i = 0; i < reStr.length; i++) {
   reStr[i] = replaceByBj(bjs, (String) list.get(i));
  }
  return reStr;
  
 }
 
 public static String replaceByBj(String[] bjs, String nrstr){
     for(int i=0;i<bjs.length;i++){
      String[] bjd = bjs[i].split("NLLD76");
      nrstr = nrstr.replaceAll(bjd[0], bjd[1]);
     }
     return nrstr;
    }
 
 public static String[] getBjs() {
  return bjs;
 }

 public static void setBjs(String[] bjs) {
  WebContent.bjs = bjs;
 }

 /**
  * @方法名称 获得链接
 */
 public String[] getCsdnLink(String s, boolean isnew) {
  if(!isnew){
   return getCsdnHisLink(s);
  }
  String regex;
  List list = new ArrayList();
  regex = "http://topic.csdn.net/u.*?.html";
  Pattern pa = Pattern.compile(regex, Pattern.MULTILINE);
  Matcher ma = pa.matcher(s);
  while (ma.find()) {
   list.add(ma.group());
  }
  String[] reStr = new String[list.size()];
  for (int i = 0; i < reStr.length; i++) {
   reStr[i] = (String) list.get(i);
  }
  return reStr;

 }
 
 public String[] getCsdnHisLink(String s) {
  String regex;
  List list = new ArrayList();
  regex = "http://topic.csdn.net.*?.html";
  Pattern pa = Pattern.compile(regex, Pattern.MULTILINE);
  Matcher ma = pa.matcher(s);
  while (ma.find()) {
   list.add(ma.group());
  }
  String[] reStr = new String[list.size()];
  for (int i = 0; i < reStr.length; i++) {
   reStr[i] = (String) list.get(i);
  }
  return reStr;

 }

 /**
  *
  * @param s
  * @return 获得链接
  */
 public List getLink(String s) {
  String regex;
  List list = new ArrayList();
  regex = "<a[^>]*href=</a>";
  Pattern pa = Pattern.compile(regex, Pattern.DOTALL);
  Matcher ma = pa.matcher(s);
  while (ma.find()) {
   list.add(ma.group());
  }
  return list;
 }

 /**
  *
  * @param s
  * @return 获得脚本代码
  */
 public List getScript(String s) {
  String regex;
  List list = new ArrayList();
  regex = "<script.*?</script>";
  Pattern pa = Pattern.compile(regex, Pattern.DOTALL);
  Matcher ma = pa.matcher(s);
  while (ma.find()) {
   list.add(ma.group());
  }
  return list;
 }

 /** */
 /**
  *
  * @param s
  * @return 获得CSS
  */
 public List getCSS(String s) {
  String regex;
  List list = new ArrayList();
  regex = "<style.*?</style>";
  Pattern pa = Pattern.compile(regex, Pattern.DOTALL);
  Matcher ma = pa.matcher(s);
  while (ma.find()) {
   list.add(ma.group());
  }
  return list;
 }

 /** */
 /**
  *
  * @param s
  * @return 去掉标记
  */
 public String outTag(String s) {
  return s.replaceAll("<.*?>", "");
 }

 public static void main(String[] args) {
  WebContent w = new WebContent();
  String url = "http://forum.csdn.net/PointForum/Forum/BFTopicList.aspx?Alias=Java&ListType=UnClosedList&page=1";
  try {
   String s = w.getOneHtml(url);
   String[] title2 = w.getTiezi(s);
   for (int i = 0; i < title2.length; i++) {
    System.out.println(title2[i]);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}
分享到:
评论

相关推荐

    Java项目开源源码,共111个

    * 数据采集:使用这些源码可以采集指定网页的数据。 * 自动化操作:使用这些源码可以实现浏览器自动化操作。 Java项目优点 这些Java项目源码具有以下优点: * 便于学习和理解Java编程语言。 * 可以作为实际项目...

    采集蛙-源码

    综上所述,“采集蛙-源码”项目结合了Java的网络爬虫技术和JavaFX的GUI开发,构建了一个能够自动抓取网站源代码的工具,其设计和实现涵盖了多个核心的编程和软件开发概念。对于学习者而言,深入理解这些技术可以帮助...

    java与Melsec A-1E通信 java与PLC通信 源码,java与三菱PLC JAVA与Melsec A-1通信

    开源项目让你也可以尝试玩转工业物联网以及智慧工厂(智能制造),IOT开源网关、SCADA取数开源、PLC数据采集java与三菱 A-1E PLC通信 java与Melsec PLC通信 全开源 springboot与Melsec PLC A-1E通信上位机三菱PLC通信...

    java与Omron Fins通信源码 java与欧姆龙PLC通信 全开源 springboot与欧姆龙PLC fins通信

    JAVA编写OMRON Fins TCP协议与OMRON PLC通讯源码 文件类型:程序源代码 主要功能: 本实例基于OMRON Fins TCP协议,采用JAVA语言编写上位机软件实现Socket与OMRON CP系列PLC通讯,实例中通过发送指令实现与PLC的通讯...

    基于JAVA网络远程监控系统软件的实现(源码)

    通过阅读源码,可以学习到如何使用Java进行网络编程、多线程编程、数据处理和可视化、异常处理等方面的知识。对于想要深入理解Java网络应用开发或者有兴趣构建自己远程监控系统的开发者来说,这是一个宝贵的资源。...

    28【源码】数据可视化:基于 Echarts + Java SpringBoot 动态实时大屏范例 - 数据分析看板.zip

    更多Python&Echarts版的数据可视化大屏源码: ...更多Java SpringBoot&Echarts版的数据可视化大屏源码: https://yydatav.blog.csdn.net/article/details/123652970 更多《工厂订单出入库信息管理系统》案例源码: ...

    基于Java开发的智能电表采集系统源码+项目说明书.zip

    基于Java开发的智能电表采集系统源码+项目说明书.zip 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等...

    Android应用源码安卓源码(172个合集).zip

    Android视频采集+RTSP完整代码(可用) Android远程登录含有loading登录效.zip Angle v1.0_2D游戏引擎.ZIP BOOK看遍所有UI控件.7z BrewClock闹钟.zip BTAndroidWebViewSelection(webview选择文字) cellmap v2.0 ...

    基于Java的现场快递柜状态采集与控制系统后端源码(大学课设).zip

    基于Java的现场快递柜状态采集与控制系统后端源码(大学课设).zip 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如...

    java多线程源码-ETL:该项目是用于多线程ETL的完整程序包-它包含代码,这些代码可以并行使用来自分布式ApacheKafka服务器的消息

    java多线程源码ETL提取,转换和加载 该项目是基于Java Maven的ETL,可以轻松地集成到任何产品。 它是用于多线程ETL的完整软件包-它包含代码,可以并行使用来自分布式Apache Kafka服务器的消息; 其次,它具有易于...

    车牌识别java代码

    - 图像捕获:首先,系统需要获取到包含车牌的图像,这通常通过摄像头或其他图像采集设备完成。 - 预处理:捕获的图像可能包含噪声、模糊、光照不均等问题,需要进行预处理,如灰度化、直方图均衡化、二值化、边缘...

    基于java的语音识别库

    这些函数涵盖了从音频数据采集到特征提取、模型匹配和结果解码等一系列过程。例如,它有功能强大的前端处理模块,可以对输入的音频进行降噪、分帧、加窗等操作;在特征提取阶段,Sphinx4可以计算MFCC(梅尔频率倒谱...

    基于SpringBoot框架搭建的物联网数据采集系统服务器端(源码).zip

    本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何...

    java 基于websocket实现的视频聊天

    在这个Java项目中,WebRTC可能被用作客户端的视频和音频采集以及编码,通过WebSocket将这些媒体数据传输到服务器。WebRTC包括了getUserMedia API(获取用户媒体),RTCPeerConnection(处理音视频流的传输)和...

    上位机源代码java源代码下载

    4. **物联网(IoT)集成**:考虑到是针对硬件设备的数据采集,这个Java应用可能涉及到与IoT设备的接口。这可能需要理解设备的通信协议(如MQTT、Modbus或OPC UA),以及如何使用Java的物联网库(如Paho MQTT Client)...

    新闻网站建设Cms v4.2.1源码

    与前一版本V4.1_1102相比,说明如下: 1、修正了后台频繁开关新窗口后失去焦点的BUG 2、修正了上传控件的安全问题 3、修正了FoxMail、OutLook等客户端收邮件乱码的BUG ...5、修正了采集中“高级过滤”失效的BUG

    基于SpringBoot+Vue实现的资产出入库管理系统仓库管理系统源码+数据库+项目文档,Java毕业设计

    系统给每个资产档案提供一个唯一标识,对物品入库、出库等各个作业环节进行快速批量的数据采集,确保中小企业及时掌握资产库存的真实数据,合理保持和控制企业库存 前端 lVue:Vue 是构建前端界面的核心框架,本系统...

    基于Android和蓝牙的单片机温度采集系统源码.rar

    4. **Android开发**:Android端的代码由Java语言编写,使用Android Studio开发环境。这部分代码负责接收蓝牙传来的温度数据,并在界面上显示。Android Bluetooth API提供了与蓝牙设备交互的接口,包括扫描、连接、...

    基于JAVAweb的宠物管理系统(完整源码+视频+环境).zip

    资源包里包含了所有完整源码、包含环境安装包、环境搭建运行测试视频。 一、设计需求 本系统主要是由RFID自动识别技术,通过无线射频方式对宠物的电子标签进行读取,获取宠物的基本信息和在店内的所有消费,然后将...

    基于JavaGUI+Web Magic爬虫框架实现的医案采集系统.zip

    资源包含文件:lunwen文档+项目源码 用户打开本系统,首先要输入帐号密码,成功通过验证之后,根据用户类型选择进入医生界面或管理员界面。 在医生界面,医生可以选择三种医案录入的方式:手工录入,即医生将病人...

Global site tag (gtag.js) - Google Analytics