`
xiang37
  • 浏览: 428189 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

采集百度贴吧信息(原创)

阅读更多
package bean;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class GatherMessage {
 
 
 //获取静态页面的HTML源码
    public static String getHtmlContent(String strUrl, String urlCode) {  
      
        try {  
 
            URL url = new URL(strUrl);  
 
            BufferedReader bufReader = new BufferedReader(new InputStreamReader(url  
 
                    .openStream()));  
 
            String str = "";  
 
            StringBuffer strBuf = new StringBuffer("");  
 
            while ((str = bufReader.readLine()) != null) {  
 
                strBuf.append(str + "\r\n");
 
            }  
 
            bufReader.close();
           
            String strToUTF = strBuf.toString();
           
            strToUTF =new String(strToUTF.getBytes(),urlCode);
 
            return strToUTF;
 
        } catch (Exception e) {  
 
            return "error open url:" + strUrl;  
 
        }  
 
    }
   
    public static String getUrlContent(String content,String startStr, String endStr)
    {
     int startULength = startStr.length();
     
     int startU = content.indexOf(startStr);
     
     int endU = content.indexOf(endStr, startU+1);
     
     String urlContent = content.substring(startU+startULength+1, endU);
     
     return urlContent;
    }
   
    //采集超链接的地址
    public static Iterator<String> getHrefIterator(String content, String siteUrl, String startHref, String endHref)
    {
     
     int startHLength = startHref.length();
     String regex = startHref+".[^"+endHref+"]*";//正则表达式
     Pattern pattern = Pattern.compile(regex);
     Matcher matcher = pattern.matcher(content);
     List<String> hrefList = new ArrayList<String>();
     String msg = "";
     String hrefStr = "";
     while (matcher.find())
     {
      msg =matcher.group();
         hrefStr = siteUrl + msg.substring(startHLength);
         hrefList.add(hrefStr);
      }
     Iterator<String> hrefIterator = hrefList.iterator();
     return hrefIterator;
    }
   
    //根据分页规则得到要采集的URL
    public static Iterator<String> getUrlIterator(String startUrl, String urlRule)
    {
     int tempInc = Integer.parseInt(urlRule);
     int start = startUrl.indexOf("(");
     int end = startUrl.indexOf(")");
     int midle = startUrl.indexOf("-");
     int firstNum = Integer.parseInt(startUrl.substring(start+1, midle));
     int endNum = Integer.parseInt(startUrl.substring(midle+1, end));
     String leftStr = startUrl.substring(0,start);
     String rightStr = startUrl.substring(end+1, startUrl.length());
     List<String> urList = new ArrayList<String>();
     int i = firstNum;
     String urlStr = null;
     while(i<=endNum)
     {
      urlStr = leftStr + i + rightStr;
      System.out.println(urlStr);
      urList.add(urlStr);
      i = i+tempInc;
      
     }

     Iterator<String> hrefIterator = urList.iterator();
     return hrefIterator;
    }
 
   
    //采集匹配规则的所有内容
    public static String getUsefullContent(String urlStr, String startStr, String endStr, String urlCode)
    {
     try
     {
     String content = getHtmlContent(urlStr, urlCode);
     String splitcontent[] = content.split(startStr);//将得到的content,分割为若干个段,让后循环对每一段进行采集有效信息
     String usefullContent = "";
     int splitLength = startStr.length();
     int contentLength = content.length();
     int breakLength = splitcontent[0].length() + splitLength + splitcontent[1].length();
     for(int i=1; i<99999; i++)
     {
      
      if(breakLength==contentLength)//当需要采集的信息到最后一个数组时,分割数组的长度等于整体内容的长度
      {
       String tempUsefullContent = splitcontent[i];
          int endIndex = tempUsefullContent.indexOf(endStr);
          String temp = tempUsefullContent.substring(0, endIndex);
          usefullContent = usefullContent.concat(temp);
          System.out.println(breakLength);
          System.out.println(contentLength);
       break;
      }
      else
      {
      String tempUsefullContent = splitcontent[i];
      int endIndex = tempUsefullContent.indexOf(endStr);
      String temp = tempUsefullContent.substring(0, endIndex);
      usefullContent = usefullContent.concat(temp);
      }
      breakLength = breakLength + splitcontent[i+1].length() + splitLength;
     }
     //Iterator<String> hrefIterator = hrefList.iterator();
     return usefullContent;
     }
     catch(Exception e)
     {
      return "对不起,您打开链接失败,请检查网络或者您输入的url地址无效!";
     }
     
     
    }
   
    //保存到Text文档
    public static void saveToText(String Content,String fileName) throws IOException
    {
     byte [] outContent = Content.getBytes();
     
     FileOutputStream out = new FileOutputStream(fileName);
     
     out.write(outContent);
     
     out.close();
    }
   
    //读取Text文档
    public static String readText(String fileName) throws IOException
    {
     File readfile = new File(fileName);
     FileInputStream inStream = new FileInputStream(readfile);
     byte [] readContent = null;
      inStream.read(readContent);
     FileOutputStream out = new FileOutputStream("test.txt");
     out.write(readContent);     
     out.close();
     inStream.close();
     return null;
    }
   
    public static void main(String[] args) throws IOException {

     //贴吧地址
     //String url = "http://tieba.baidu.com/f?z=641553145&ct=335544320&lm=0&sc=0&rn=30&tn=baiduPostBrowser&word=%B9%ED%B4%B5%B5%C6&pn=0";
        //String siteUrl = "http://tieba.baidu.com";
         String urlCode = "gb2312";//采集页面编码
     
        //分页标示
     String startUrl = "http://tieba.baidu.com/f?z=641553145&ct=335544320&lm=0&sc=0&rn=30&tn=baiduPostBrowser&word=%B9%ED%B4%B5%B5%C6&pn=(0-60)";
     String urlRule = "30";
     
     //超链接标示
     //String startHref = "href=";
     //String endHref = ">";
     //int startHLength = startHref.length();
     
     //有用信息标示
     String startInf = "<cc>";
     String endInf = "</cc>";
     
     //String content = getHtmlContent(url, urlCode);//获取整个网页内容
     Iterator<String> urlIterator =  getUrlIterator(startUrl,urlRule);
     //String urlContent = getUrlContent(content, startUrl, urlRule);
     
     /*
     Iterator<String> hrefIterator = getHrefIterator(urlContent, siteUrl, startHref, endHref);
     */     
     int i =0;
     while(urlIterator.hasNext())
     {
      String urlString = urlIterator.next();
      String GatherhtmlContent = getUsefullContent(urlString, startInf ,endInf , urlCode);
      saveToText(GatherhtmlContent,"file"+i+".html");//将每个ULR地址采集到的信息保存到text文档中
      i++;
     }
     
     //String GatherhtmlContent = getUsefullContent("http://localhost/Test.html", startInf ,endInf , urlCode);
     //saveToText(GatherhtmlContent,"Test.html");
     System.out.println("Complete!");
   }
}
分享到:
评论

相关推荐

    众大一键采集百度贴吧内容 v4.0

    - **授权与合规性**:在使用众大一键采集百度贴吧内容时,必须确保遵循百度贴吧的使用协议,尊重原创内容,合理合法地使用抓取的数据,避免侵犯他人版权。 - **服务器性能**:大量的数据采集和处理可能对服务器造成...

    豆豆百度贴吧营销王 v1.0.zip

    豆豆百度贴吧营销王是一款全自动的百度贴吧推广工具,包含帐号注册、帐号激活、发帖回帖文章采集、文章伪原创、关注喜欢贴吧、提升等级、发帖推广、回帖推广等等不同功能。自动换IP,可以使用ADSL模式,代理模式,...

    php百度贴吧小偷天宇版 v1.0

    4.添加缓存功能,采集不到不缓存 5.自定义二级目录功能 6.自定义模板(模板分离,自己可编写模板) 7.网站后台管理功能 8.伪静态规则在后台设置完成后自动生成 9.全站伪原创(更加有利于搜索引擎收录,可以...

    百度贴吧推广大师1.9.9

    1.9.9升级: 1、加大了导入cookie量;...简介:百度贴吧推广大师是一款集百度帐号注册、帐号激活、批量管理、文章伪原创、百度贴吧喜欢、升等级、批量提问、批量回答等不同功能,为一体的超强推广工具。

    百度贴吧推广大师

    2. **内容采集与伪原创**:工具内置文章采集功能,可以自动抓取网络上的相关信息,结合伪原创技术,生成与主题相关的高质量帖子,避免因重复内容导致的帖子被删或账号受限。 3. **关注与互动**:可以自动关注感兴趣...

    百度贴吧推广大师 v1.9.2

    【百度贴吧推广大师 v1.9.2】是一款针对百度贴吧进行自动化营销推广的软件工具,其核心目的是帮助用户高效地在贴吧平台进行品牌宣传、产品推广或信息传播。这款工具集成了多种功能,旨在简化和优化网络推广工作流程...

    百度贴吧推广大师 v1.6.30

    “百度贴吧推广大师 v1.6.30”支持文章采集与伪原创,能够从网络上获取相关素材并进行一定程度的改编,生成独特的帖子内容。这样既能避免因重复内容导致的搜索引擎降权,又能保证帖子的吸引力,增加用户的互动率。 ...

    百度贴吧推广大师 v1.6.40

    2. **文章采集与伪原创**:软件内置文章采集功能,可以从网络上获取相关主题的内容,然后通过伪原创技术对文章进行处理,使得发布的帖子既具有独特性又符合贴吧社区规则。 3. **发帖与回帖**:百度贴吧推广大师能...

    百度贴吧推广大师 v1.5.30

    百度贴吧推广大师是一款全自动的百度贴吧推广工具,包含帐号注册、帐号激活、发帖回帖文章采集、文章伪原创、关注喜欢贴吧、提升等级、发帖推广、回帖推广等等不同功能。自动换IP,可以使用ADSL模式,代理模式,...

    百度贴吧推广大师 v1.7.10

    在技术层面,"百度贴吧推广大师 v1.7.10"依赖于一系列的库文件,如ip.Dat、mqpd2.dat、mqpd.dat等,它们可能是软件运行所需的数据文件或者配置文件,用于存储用户的设置信息和执行推广任务的数据。DBSetting2.dat和...

    百度相册助手 3.0 批量下载

    这时候,“百度相册助手 3.0”应运而生,它是一款专为解决这一问题而设计的实用工具,不仅能够高效地下载百度空间相册中的图片,还贴心地支持百度贴吧的图片批量下载。 首先,让我们来深入了解“百度相册助手 3.0”...

    百度贴吧推广大师 v1.8.4

    2. **文章采集与伪原创**:它具有文章采集功能,可以从网络上抓取相关文章,并通过内置的伪原创算法进行处理,使发布的内容避免重复,提高帖子的原创性和吸引力。 3. **关注与喜欢**:能够自动关注感兴趣的贴吧和...

    百度贴吧推广大师 v1.8.8

    2. **文章采集与伪原创**:对于内容创作者来说,文章采集功能可以帮助快速获取大量素材,而伪原创功能则可以避免因重复内容导致的搜索引擎惩罚,提高帖子的发布成功率。 3. **关注与喜欢**:软件能自动关注感兴趣的...

    百度贴吧推广大师 v1.6.60

    2. **文章采集与伪原创**:软件内置文章采集功能,可以从网络上抓取相关文章,并提供伪原创功能,通过替换关键词、调整句子顺序等方法,使得发布的帖子内容避免重复,增加被搜索引擎收录的概率。 3. **发帖与回帖**...

    石青百度私信助手 v1.2.8.10.zip

    4、支持采集百度空间、百度贴吧、百度知道的百度客户; 5、可以按照不同条件采集百度客户; 6、可以成百上千的管理百度帐号,可以自动发送百度私信信息; 7、可以自动搜索最新代理IP,验证代理,用户不需要自己...

    百度贴吧推广大师 v1.6.80

    该软件支持文章采集和伪原创功能,这意味着用户可以轻松获取相关领域的热门文章,并通过算法处理生成独特的内容,避免重复性过高导致的帖子被删除风险。同时,自动发帖和回帖功能则进一步增强了帖子的曝光度,使信息...

    php百度贴吧小偷天宇版 v1.0.zip

    4.添加缓存功能,采集不到不缓存 5.自定义二级目录功能 6.自定义模板(模板分离,自己可编写模板) 7.网站后台管理功能 8.伪静态规则在后台设置完成后自动生成 9.全站伪原创(更加有利于搜索引擎收录,可以...

    石青百度私信助手 v1.2.0.10

    4、支持采集百度空间、百度贴吧、百度知道的百度客户;5、可以按照不同条件采集百度客户;6、可以成百上千的管理百度帐号,可以自动发送百度私信信息;7、可以自动搜索最新代理IP,验证代理,用户不需要自己去找代理...

    百度贴吧推广大师 v1.5.20

    百度贴吧推广大师是一款全自动的百度贴吧推广工具,包含帐号注册、帐号激活、发帖回帖文章采集、文章伪原创、关注喜欢贴吧、提升等级、发帖推广、回帖推广等等不同功能。自动换IP,可以使用ADSL模式,代理模式,...

Global site tag (gtag.js) - Google Analytics