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!");
}
}
分享到:
相关推荐
- **授权与合规性**:在使用众大一键采集百度贴吧内容时,必须确保遵循百度贴吧的使用协议,尊重原创内容,合理合法地使用抓取的数据,避免侵犯他人版权。 - **服务器性能**:大量的数据采集和处理可能对服务器造成...
豆豆百度贴吧营销王是一款全自动的百度贴吧推广工具,包含帐号注册、帐号激活、发帖回帖文章采集、文章伪原创、关注喜欢贴吧、提升等级、发帖推广、回帖推广等等不同功能。自动换IP,可以使用ADSL模式,代理模式,...
4.添加缓存功能,采集不到不缓存 5.自定义二级目录功能 6.自定义模板(模板分离,自己可编写模板) 7.网站后台管理功能 8.伪静态规则在后台设置完成后自动生成 9.全站伪原创(更加有利于搜索引擎收录,可以...
1.9.9升级: 1、加大了导入cookie量;...简介:百度贴吧推广大师是一款集百度帐号注册、帐号激活、批量管理、文章伪原创、百度贴吧喜欢、升等级、批量提问、批量回答等不同功能,为一体的超强推广工具。
2. **内容采集与伪原创**:工具内置文章采集功能,可以自动抓取网络上的相关信息,结合伪原创技术,生成与主题相关的高质量帖子,避免因重复内容导致的帖子被删或账号受限。 3. **关注与互动**:可以自动关注感兴趣...
【百度贴吧推广大师 v1.9.2】是一款针对百度贴吧进行自动化营销推广的软件工具,其核心目的是帮助用户高效地在贴吧平台进行品牌宣传、产品推广或信息传播。这款工具集成了多种功能,旨在简化和优化网络推广工作流程...
“百度贴吧推广大师 v1.6.30”支持文章采集与伪原创,能够从网络上获取相关素材并进行一定程度的改编,生成独特的帖子内容。这样既能避免因重复内容导致的搜索引擎降权,又能保证帖子的吸引力,增加用户的互动率。 ...
2. **文章采集与伪原创**:软件内置文章采集功能,可以从网络上获取相关主题的内容,然后通过伪原创技术对文章进行处理,使得发布的帖子既具有独特性又符合贴吧社区规则。 3. **发帖与回帖**:百度贴吧推广大师能...
百度贴吧推广大师是一款全自动的百度贴吧推广工具,包含帐号注册、帐号激活、发帖回帖文章采集、文章伪原创、关注喜欢贴吧、提升等级、发帖推广、回帖推广等等不同功能。自动换IP,可以使用ADSL模式,代理模式,...
在技术层面,"百度贴吧推广大师 v1.7.10"依赖于一系列的库文件,如ip.Dat、mqpd2.dat、mqpd.dat等,它们可能是软件运行所需的数据文件或者配置文件,用于存储用户的设置信息和执行推广任务的数据。DBSetting2.dat和...
这时候,“百度相册助手 3.0”应运而生,它是一款专为解决这一问题而设计的实用工具,不仅能够高效地下载百度空间相册中的图片,还贴心地支持百度贴吧的图片批量下载。 首先,让我们来深入了解“百度相册助手 3.0”...
2. **文章采集与伪原创**:它具有文章采集功能,可以从网络上抓取相关文章,并通过内置的伪原创算法进行处理,使发布的内容避免重复,提高帖子的原创性和吸引力。 3. **关注与喜欢**:能够自动关注感兴趣的贴吧和...
2. **文章采集与伪原创**:对于内容创作者来说,文章采集功能可以帮助快速获取大量素材,而伪原创功能则可以避免因重复内容导致的搜索引擎惩罚,提高帖子的发布成功率。 3. **关注与喜欢**:软件能自动关注感兴趣的...
2. **文章采集与伪原创**:软件内置文章采集功能,可以从网络上抓取相关文章,并提供伪原创功能,通过替换关键词、调整句子顺序等方法,使得发布的帖子内容避免重复,增加被搜索引擎收录的概率。 3. **发帖与回帖**...
4、支持采集百度空间、百度贴吧、百度知道的百度客户; 5、可以按照不同条件采集百度客户; 6、可以成百上千的管理百度帐号,可以自动发送百度私信信息; 7、可以自动搜索最新代理IP,验证代理,用户不需要自己...
该软件支持文章采集和伪原创功能,这意味着用户可以轻松获取相关领域的热门文章,并通过算法处理生成独特的内容,避免重复性过高导致的帖子被删除风险。同时,自动发帖和回帖功能则进一步增强了帖子的曝光度,使信息...
4.添加缓存功能,采集不到不缓存 5.自定义二级目录功能 6.自定义模板(模板分离,自己可编写模板) 7.网站后台管理功能 8.伪静态规则在后台设置完成后自动生成 9.全站伪原创(更加有利于搜索引擎收录,可以...
4、支持采集百度空间、百度贴吧、百度知道的百度客户;5、可以按照不同条件采集百度客户;6、可以成百上千的管理百度帐号,可以自动发送百度私信信息;7、可以自动搜索最新代理IP,验证代理,用户不需要自己去找代理...
百度贴吧推广大师是一款全自动的百度贴吧推广工具,包含帐号注册、帐号激活、发帖回帖文章采集、文章伪原创、关注喜欢贴吧、提升等级、发帖推广、回帖推广等等不同功能。自动换IP,可以使用ADSL模式,代理模式,...