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("***********************************");
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
网络爬虫,爬指定网页的所有连接
共18个文件
class:6个
java:6个
jar:2个
4星 · 超过85%的资源 需积分: 12 85 下载量 17 浏览量
2016-09-02
11:17:40
上传
评论 2
收藏 371KB RAR 举报
温馨提示
简单网络爬虫,原理就是解析网页,取得所有a标签内容,当然只是demo,你可以自己编写规则。附一些测试,包括了从一个很好的电影网站下载电影种子的,还有百度新闻搜索等。
资源推荐
资源详情
资源评论
收起资源包目录
SpliderDemo.rar (18个子文件)
SpliderDemo
.project 387B
src
com
zhy
spider
core
ExtractService.java 3KB
util
TextUtil.java 207B
test
Test.java 5KB
rule
Rule.java 2KB
RuleException.java 539B
bean
LinkTypeData.java 1KB
lib
jsoup-1.7.3.jar 290KB
commons-io-1.4.jar 106KB
.settings
org.eclipse.jdt.core.prefs 598B
org.eclipse.core.resources.prefs 57B
.classpath 555B
bin
com
zhy
spider
core
ExtractService.class 4KB
util
TextUtil.class 545B
test
Test.class 5KB
rule
RuleException.class 746B
Rule.class 2KB
bean
LinkTypeData.class 2KB
共 18 条
- 1
资源评论
- Mrmole2017-08-24还不错的资源,谢谢分享
Alvis_you
- 粉丝: 6
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功