package com.zhy.spider.test;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import com.zhy.spider.bean.LinkTypeData;
import com.zhy.spider.core.ExtractService;
import com.zhy.spider.rule.Rule;
public class Test
{
/**
* 测试本地的一个项目
*/
@org.junit.Test
public void getlocal()
{
Rule rule = new Rule("http://localhost:8111/alvis/mst/showIndex.do",
new String[] { "bs" }, new String[] { "cctv5" },
null, -1, Rule.GET);
List<LinkTypeData> extracts = ExtractService.extract(rule);
printf(extracts);
}
/**
* 测试百度新闻
*/
@org.junit.Test
public void getDatasByCssQueryUserBaidu()
{
Rule rule = new Rule("http://news.baidu.com/ns",
new String[] { "word" }, new String[] { "魔力宝贝" },
null, -1, Rule.GET);
List<LinkTypeData> extracts = ExtractService.extract(rule);
printf(extracts);
}
/**
* 百度搜索 第一页 关于魔力宝贝的网页地址,注这百度又抽了,前几天还可以的,懒的改了
*/
@org.junit.Test
public void getCssQueryUserBaidu()
{
Rule rule = new Rule("http://www.baidu.com/s",
new String[] { "wd" }, new String[] { "魔力宝贝" },
null, -1, Rule.GET);
List<LinkTypeData> extracts = ExtractService.extract(rule);
List<LinkTypeData> results=new ArrayList<LinkTypeData>();
for (LinkTypeData list : extracts) {
if (list.getLinkText().isEmpty()) continue;
if (list.getLinkText().indexOf("魔力宝贝")!=-1) {
results.add(list);
}
}
printf(results);
}
/**
* 测试电影下载http://www.btbbt.cc
*/
@org.junit.Test
public void getQueryBtbbt()
{
//电影频道,得到第一页所有电影的页面连接
List<LinkTypeData> extracts = getLinkTypeData("http://www.btbbt.cc/forum-index-fid-951.htm");
//获得电影连接规则,返回results
List<LinkTypeData> results=new ArrayList<LinkTypeData>();
for (LinkTypeData list : extracts) {
if (list.getLinkText().isEmpty()) continue;
if (list.getLinkText().indexOf("BT下载")!=-1) {
results.add(list);
}
}
//results里的文件名需要过滤一下 ,windows最大文件名260,咱设个200吧
//遍历网页连接,取得下载种子连接
for (LinkTypeData linkTypeData : results) {
String filmName = linkTypeData.getLinkText();
if (filmName.length()>200) linkTypeData.setLinkText((filmName=filmName.substring(0, 200)));
//得到下载种子的页面
List<LinkTypeData> list = getLinkTypeData("http://www.btbbt.cc/"+linkTypeData.getLinkHref());
//获得下载种子的页面规则,返回resultList
List<LinkTypeData> resultList=new ArrayList<LinkTypeData>();
for (LinkTypeData ltd : list) {
if (ltd.getLinkText().isEmpty()) continue;
if (ltd.getLinkText().indexOf("torrent")!=-1) {
resultList.add(ltd);
}
}
//有的文件名会包含torrent,所以删除掉,resultlist只有一个连接
if(resultList.size()>1){
for (LinkTypeData linkTypeData2 : resultList) {
if (!linkTypeData2.getLinkHref().contains("htm")) {
//System.out.println(linkTypeData2.getLinkHref());
resultList.remove(linkTypeData2);
break;
}
}
}
//得到下载种子的地址
List<LinkTypeData> fileDowns = getLinkTypeData("http://www.btbbt.cc/"+resultList.get(0).getLinkHref());
List<LinkTypeData> fileDownresults=new ArrayList<LinkTypeData>();
for (LinkTypeData fileDownList : fileDowns) {
if (fileDownList.getLinkText().isEmpty()) continue;
if (fileDownList.getLinkText().indexOf("本地下载")!=-1) {
fileDownresults.add(fileDownList);
}
}
String url="http://www.btbbt.cc/"+fileDownresults.get(0).getLinkHref();
try {
URL httpurl = new URL(url);
filmName=filmName.replaceAll("/", "");
File f = new File("D:\\"+ filmName+".torrent");
if (!f.exists())
FileUtils.copyURLToFile(httpurl, f);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 根据url返回所有a标签连接
* @return
*/
public List<LinkTypeData> getLinkTypeData(String url){
Rule rule = new Rule(url, null, null, null, -1, Rule.GET);
return ExtractService.extract(rule);
}
/**
* 打印
* @param datas
*/
public void printf(List<LinkTypeData> datas)
{
for (LinkTypeData data : datas)
{
System.out.println(data.getLinkText());
System.out.println(data.getLinkHref());
System.out.println("***********************************");
}
}
}