基于Webmagic的Java爬虫(二)爬取当前页内容

基于Webmagic的Java爬虫(二)

一、目标:
获取(电影天堂)电影详情页链接,再获取电影名字和下载地址,并在控制台输出。

二、步骤:

  1. 爬取(电影天堂:https://mp.csdn.net) 首页电影详情的所有链接。
    要爬取的内容:
    基于Webmagic的Java爬虫(二)爬取当前页内容_第1张图片
  2. 按 F12 查看页面的源码,写出电影详情页正则://div[@class=‘co_content4’]/ul/a[@href]
    基于Webmagic的Java爬虫(二)爬取当前页内容_第2张图片
  3. 点击电影详情链接,观察地址栏,写出电影详情页的正则,作为判断的依据。正则为:http://www.dytt8.net/html/gndy/\w{4}/\d{8}/\d{5}.html在这里插入图片描述
  4. 查看电影详情页网页源码,写出电影名称和电影下载链接的正则:
    电影名称正则://div[@class=‘title_all’]/h1/font/text()
    电影下载链接正则://a[starts-with(@href,‘ftp’)]/text()
    基于Webmagic的Java爬虫(二)爬取当前页内容_第3张图片基于Webmagic的Java爬虫(二)爬取当前页内容_第4张图片
    三、代码:
package ang.one;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;

/**
 * 爬取电影天堂电影详情页连接
 * @author Ada
 *
 */
public class MovieByWebMagic implements PageProcessor{

		private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);

		public Site getSite() {
			return site;
		}
	 
		public void process(Page page) {
			//电影详情链接movieLink的正则表达式
			String movieLink="http://www.dytt8.net/html/gndy/\\w{4}/\\d{8}/\\d{5}.html";
			//写相应的xpath
			//电影名称
			String movieNameXpath="//div[@class='title_all']/h1/font/text()";
			//电影下载地址
			String movieDownloadXpath="//a[starts-with(@href,'ftp')]/text()";
			//电影网主界面要爬的数据所在的地址链接
			String movieLinkXpath="//div[@class='co_content4']/ul/a[@href]";
			
			//判断是否符合电影详情链接 movieNameXpath 的格式
			if(!page.getUrl().regex(movieLink).match()) {
				page.addTargetRequests(
						page.getHtml().xpath(movieLinkXpath).links().all()
						);
			}
			//get()与toString()方法功能相同
			page.putField("电影名称", page.getHtml().xpath(movieNameXpath).get());
			page.putField("电影链接", page.getHtml().xpath(movieDownloadXpath).toString());
			//跳过空页
	        if (page.getResultItems().get("电影名称")==null){
	            //skip this page
	            page.setSkip(true);
	        }

	}
		
		  public static void main(String[] args) {
		        Spider.create(new MovieByWebMagic()).addUrl("http://www.dytt8.net/")
		                .run();
		    }
}

四、运行结果:
基于Webmagic的Java爬虫(二)爬取当前页内容_第5张图片

你可能感兴趣的:(基于Webmagic的Java爬虫(二)爬取当前页内容)