使用java+WebMagic实现电影资源链接爬取

1、首先百度搜索webmagic网站,网址如下:https://github.com/code4craft/webmagic/releases/tag/WebMagic-0.7.3

2、接下来下载webmagic-0.7.3-all.tar.gz 压缩包解压

3、创建一个项目,在项目中创建一个lib文件夹,将WebMagic中的jar包复制到lib文件夹里面,选取所有的jar包(按下shift可以全选),右键->build path,然后创建一个class 文件,具体执行代码如下:

package test20190428;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;

/*
 * 使用WebMagic,不要忘记导包:最新版:WebMagic-0.7.3
 * test:爬取最大资源网中所有电影网址
 * */
public class MovieProcessor implements PageProcessor{
	
	private static int count=1;
	
	@Override
	public Site getSite() {
		// TODO Auto-generated method stub
		Site site = Site.me();
		site.setTimeOut(3000);
		site.setRetrySleepTime(3);
		site.setSleepTime(1000);
		return site;
	}

	@Override
	public void process(Page page) {
		// TODO Auto-generated method stub
		//当count=1时,进入第一层,获取网站一共多少页,获取列表页
		if(count==1)
		{		
			String pagenumber = page.getHtml().regex("1/\\d+页").get();
			//将页数进行截取
			String pagenum=pagenumber.substring(2,pagenumber.length()-1);
			//截取后将pagenum字符串转换为int,然后遍历所有的页数
			//Integer.parseInt(pagenum)
			for(int i=2;i<=Integer.parseInt(pagenum);i++)
			{
				//http://zuidazy.net/?m=vod-index-pg-511.html
				//url进行拼接
				String url="http://zuidazy.net/?m=vod-index-pg-"+i+".html";
				//将url
	            page.addTargetRequest(url);
			}
			count++;
		}
		
		//进入第二层,获取每个列表的详情页面链接
		if(count==2)
		{
			///?m=vod-detail-id-47219.html
			//xpath://input[@name='copy_sel']/@value
			List  all1=page.getHtml().regex("/?m=vod-detail-id-\\d+.html").all();
			Set set = new TreeSet();
			set.addAll(all1);
			Iterator iterator = all1.iterator();
			while(iterator.hasNext())
			{
				String url2="http://zuidazy.net/?"+iterator.next();
				 page.addTargetRequest(url2);
			}
			count++;
		}
		
		//进入每部电影界面,获取所有电影网址
		if(count==3)
		{
			//获取标题,之后截取标题
			List  all2 = page.getHtml().xpath("//h2").all();
			//获取每部电视剧的链接
			List  all3 = page.getHtml().xpath("//input[@name='copy_sel']/@value").all();
			for(int i=0;i list=new ArrayList();
				list.add(all2.get(i).substring(4, all2.get(i).length()-5));
			}
			
			for(int j = 0 ; j < all3.size() ; j++) {
				  System.out.println(all3.get(j));
			}
		}
		
	}	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MovieProcessor mp = new MovieProcessor();
		Spider create=Spider.create(mp);
		create.addUrl("http://zuidazy.net/?m=vod-index.html");
		create.thread(5);
		create.run();
	}

}

 运行结果:

使用java+WebMagic实现电影资源链接爬取_第1张图片

 

你可能感兴趣的:(java)