Java大作业,爬取信息并写入Excel。

项目下载:https://pan.baidu.com/s/1Z1rMWSyaAeGvZCm5CMgexQ(请用eclipse 2018打开,我的jdk版本是1.8)

附我爬取的10000部漫画信息下载地址:https://pan.baidu.com/s/12wCasdunyxGfdRNw84nbHw​​​​​​​

数据图例:

主类代码:(如果有import报错,那么请下载上面的链接把里面lib文件夹下的.jar文件放进自己的项目,并右键jar包选择build path即可,若仍搞不懂请百度)

import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.downloader.selenium.SeleniumDownloader;
import us.codecraft.webmagic.scheduler.RedisScheduler;
import us.codecraft.webmagic.pipeline.FilePipeline;
import org.openqa.selenium.firefox.*;public class Main implements PageProcessor {private Site site = Site.me().setRetryTimes(3).   //失败重试次数setSleepTime(20);   //爬取时间间隔private int Num=0;private String Title;private String Author[]=new String[2];private String Country;private String State;private String Popularity;private String Tag[]=new String[3];private String Type;private String Update;private String BookNum;private String Talk;private String Details;private static WritableWorkbook book;private static WritableSheet Sheet1;private static WritableSheet Sheet2;public void process(Page page) {int StaticNum = 0;page.addTargetRequests(page.getHtml().links().regex("http://manhua.dmzj.com/[a-z 0-9 -]+/").    //筛选网页规则all());Title=page.getHtml().xpath("div[@class='odd_anim_title_m']//span//a//h1/text()").toString();if(Title!=null) {StaticNum=++Num;}Author[0]=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[3]//td//a[1]/text()").toString();Author[1]=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[3]//td//a[2]/text()").toString();Country=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[4]//td//a/text()").toString();State=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[5]//td//a/text()").toString();/*Popularity=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[6]//td[@id='hot_hits']/text()").toString();*//*page.putField("img", page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[6]//td[@id='hot_hits']").toString());Popularity=page.getResultItems().get("img");System.out.println("人气:" + Popularity);*/Tag[0]=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[7]//td//a[1]/text()").toString();Tag[1]=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[7]//td//a[2]/text()").toString();Tag[2]=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[7]//td//a[3]/text()").toString();Type=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[8]//td//a/text()").toString();Update=page.getHtml().xpath("div[@class='anim-main_list']//table//tbody//tr[9]//td//a/text()").toString();/*BookNum=page.getHtml().xpath("span[@id='subscribe_num']/text()").toString();Talk=page.getHtml().xpath("span[@class='comment_num']/text()").toString();Details=page.getHtml().xpath("div[@class='odd_anim_title_m']//a/text()").toString();*/if(Title!=null) {  //读取到有效数据try {Label label=new Label(0,StaticNum,Title);    //标题Sheet1.addCell(label);label=new Label(1,StaticNum,Author[0]);  //作者Sheet1.addCell(label);if(Author[1]!=null) {label=new Label(2,StaticNum,Author[1]);    //第二作者Sheet1.addCell(label);}label=new Label(3,StaticNum,Country); //地区Sheet1.addCell(label);label=new Label(4,StaticNum,State);  //状态Sheet1.addCell(label);label=new Label(5,StaticNum,Tag[0]); //标签1Sheet1.addCell(label);if(Tag[1]!=null) {label=new Label(6,StaticNum,Tag[1]); //标签2Sheet1.addCell(label);if(Tag[2]!=null) {label=new Label(7,StaticNum,Tag[2]); //标签3Sheet1.addCell(label);}}label=new Label(8,StaticNum,Type);    //类型Sheet1.addCell(label);label=new Label(9,StaticNum,Update); //更新Sheet1.addCell(label);book.write(); //写入文件}catch(Exception e) {System.out.println(e); }/*System.out.println("编号:" + Num + "\n" +"作品:" + Title + "\n" +"作者:" + Author[0] + "\n" +"地区:" + Country + "\n" +"状态:" + State + "\n" +//"人气:" + Popularity + "\n" +"标签:" + Tag[0] + Tag[1] + Tag[2] + "\n" +"类型:" + Type + "\n" +"更新:" + Update + "\n" +//"订阅:" + BookNum + "\n" +//"评论:" + Talk + "\n" +//"详情:" + Details + "\n" );*/if(StaticNum==22000) { //抓取数据量try {book.write();   //写入文件book.close(); //关闭文件System.exit(0);   //退出爬虫}catch(Exception e) {System.out.println(e); }}System.out.println(StaticNum);}}public Site getSite() {return site;}public static void main(String[] args) {try {   //创建Excelbook= Workbook.createWorkbook(new File("File.xls"));Sheet1=book.createSheet("表1",0); //创建两个表页Sheet2=book.createSheet("表2",1);System.out.println("创建Excel成功\n");Label label=new Label(0,0,"漫画名"); //填表头Sheet1.addCell(label);label=new Label(1,0,"作者1");   //填表头Sheet1.addCell(label);label=new Label(2,0,"作者2");   //填表头Sheet1.addCell(label);label=new Label(3,0,"地区");    //填表头Sheet1.addCell(label);label=new Label(4,0,"状态");    //填表头Sheet1.addCell(label);label=new Label(5,0,"标签1");   //填表头Sheet1.addCell(label);label=new Label(6,0,"标签2");   //填表头Sheet1.addCell(label);label=new Label(7,0,"标签3");   //填表头Sheet1.addCell(label);label=new Label(8,0,"类型");    //填表头Sheet1.addCell(label);label=new Label(9,0,"连载进度");  //填表头Sheet1.addCell(label);}catch(Exception e) {System.out.println(e);}Spider.create(new Main()).addUrl("http://manhua.dmzj.com").    //起始网页thread(1).    //线程数run();}
}

Excel类:

import jxl.write.Label;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class Excel {private int Raw;public Excel(int Raw) {this.Raw=Raw;}public Label Add(int a,String c) throws RowsExceededException, WriteException {Label label=new Label(a,this.Raw,c);return label;}
}

爬动漫之家手机版网页:

import java.io.File;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;public class AppMain implements PageProcessor {private Site site = Site.me().setRetryTimes(5).    //失败重试次数setSleepTime(50);   //爬取时间间隔private int CodeNum=2;private int SuccessNum=0;private static WritableWorkbook book;private static WritableSheet Sheet1;private static WritableSheet Sheet2;public void process(Page page) {String Title;String Author[]=new String[2];String Tag[]=new String[3];String Type;String Country;String State;String UpdateTime;String Details;for(int i=0;i<5;i++)page.addTargetRequest("https://m.dmzj.com/info/" + (++CodeNum) + ".html");//CodeNum+=;Title=page.getHtml().xpath("div[@class='BarTit']/text()").toString();if(Title!=null) {UpdateTime=page.getHtml().xpath("span[@class='date']/text()").toString();Author[0]=page.getHtml().xpath("div[@class='sub_r']//p[1]//a[1]/text()").toString();Author[1]=page.getHtml().xpath("div[@class='sub_r']//p[1]//a[2]/text()").toString();Tag[0]=page.getHtml().xpath("div[@class='sub_r']//p[2]//a[1]/text()").toString();Tag[1]=page.getHtml().xpath("div[@class='sub_r']//p[2]//a[2]/text()").toString();Tag[2]=page.getHtml().xpath("div[@class='sub_r']//p[2]//a[3]/text()").toString();Type=page.getHtml().xpath("div[@class='sub_r']//p[3]//a[1]/text()").toString();Country=page.getHtml().xpath("div[@class='sub_r']//p[3]//a[2]/text()").toString();State=page.getHtml().xpath("div[@class='sub_r']//p[3]//a[3]/text()").toString();Details=page.getHtml().xpath("p[@class='txtDesc autoHeight']/text()").toString();try {if(CodeNum<49020) {SuccessNum++;Excel a=new Excel(SuccessNum);Sheet1.addCell(a.Add(0, Title));Sheet1.addCell(a.Add(1, Author[0]));if(Author[1]!=null) Sheet1.addCell(a.Add(2, Author[1]));Sheet1.addCell(a.Add(3, Tag[0]));if(Tag[1]!=null) {Sheet1.addCell(a.Add(4, Tag[1]));if(Tag[2]!=null) Sheet1.addCell(a.Add(5, Tag[2]));}Sheet1.addCell(a.Add(6, Type));Sheet1.addCell(a.Add(7, Country));Sheet1.addCell(a.Add(8, State));Sheet1.addCell(a.Add(9, UpdateTime));Sheet1.addCell(a.Add(10, Details));}if(CodeNum>=49020) {    //抓取数据量try {book.write();   //写入文件book.close(); //关闭文件System.exit(0);   //退出爬虫}catch(Exception e) {System.out.println(e); }}System.out.println(SuccessNum);//System.out.println("漫画名:" + Title);/*System.out.println("作者:" + Author[0] + " " + Author[1]);System.out.println("标签:" + Tag[0] + " " + Tag[1] + " " + Tag[2]);System.out.println("类型:" + Type);System.out.println("地区:" + Country);System.out.println("状态:" + State);System.out.println("最近更新时间:" + UpdateTime);System.out.println(Details);*/}catch(Exception e) {System.out.println(e);}}else System.out.println(SuccessNum);}public Site getSite() {return site;}public static void main(String[] args) {try {    //创建Excelbook= Workbook.createWorkbook(new File("File.xls"));Sheet1=book.createSheet("表1",0); //创建两个表页Sheet2=book.createSheet("表2",1);System.out.println("创建Excel成功\n");Label label=new Label(0,0,"漫画名"); //填表头Sheet1.addCell(label);label=new Label(1,0,"作者1");   //填表头Sheet1.addCell(label);label=new Label(2,0,"作者2");   //填表头Sheet1.addCell(label);label=new Label(3,0,"标签1");   //填表头Sheet1.addCell(label);label=new Label(4,0,"标签2");   //填表头Sheet1.addCell(label);label=new Label(5,0,"标签3");   //填表头Sheet1.addCell(label);label=new Label(6,0,"类型");    //填表头Sheet1.addCell(label);label=new Label(7,0,"地区");    //填表头Sheet1.addCell(label);label=new Label(8,0,"状态");    //填表头Sheet1.addCell(label);label=new Label(9,0,"最近更新时间");    //填表头Sheet1.addCell(label);label=new Label(10,0,"详情");   //填表头Sheet1.addCell(label);}catch(Exception e) {System.out.println(e);}Spider.create(new AppMain()).addUrl("https://m.dmzj.com").thread(1).run();}
}

java爬虫 爬取动漫之家10000部漫画信息相关推荐

  1. 【python】使用爬虫爬取动漫之家漫画更新信息

    网站名称为: https://manhua.dmzj.com/update_1.shtml 本篇仅在于交流学习 1.首先将相应的库导入: import re import requests from ...

  2. python 爬取动漫之家,下载漫画

    #!/usr/bin/python3 # -*- coding: utf-8 -*-import requests # 发送http请求 from bs4 import BeautifulSoup # ...

  3. java爬虫爬取笔趣阁小说

    java爬虫爬取笔趣阁小说 package novelCrawler;import org.jsoup.Connection; import org.jsoup.HttpStatusException ...

  4. python java 爬数据_如何用java爬虫爬取网页上的数据

    当我们使用浏览器处理网页的时候,有时候是不需要浏览的,例如使用PhantomJS适用于无头浏览器,进行爬取网页数据操作.最近在进行java爬虫学习的小伙伴们有没有想过如何爬取js生成的网络页面吗?别急 ...

  5. Java爬虫 --- 爬取王者荣耀英雄图片

    Java爬虫 - 爬取王者荣耀英雄图片 import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Docu ...

  6. Java爬虫 爬取某招聘网站招聘信息

    Java爬虫 爬取某招聘网站招聘信息 一.系统介绍 二.功能展示 1.需求爬取的网站内容 2.实现流程 2.1数据采集 2.2页面解析 2.3数据存储 三.获取源码 一.系统介绍 系统主要功能:本项目 ...

  7. Java爬虫爬取wallhaven的图片

    Java爬虫爬取wallhaven的图片 参考文章:JAVA Jsoup爬取网页图片下载到本地 需要的jar包:jsuop wallhaven网站拒绝java程序访问,所以要伪装报头. 发送请求时 C ...

  8. 我的第一个开源项目:Java爬虫爬取旧版正方教务系统课程表、成绩表

    Java爬虫爬取旧版正方教务系统课程表.成绩表 一.项目展示 1.正方教务系统 首页 2.爬虫系统 首页: 成绩查询: 课表查询: 二.项目实现 1.爬取思路描述 无论是成绩查询或课表查询亦或者其它的 ...

  9. Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情

    Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情 先识别商品url,区分平台提取商品编号,再根据平台带着商品编号爬取数据. 1.导包 <!-- 爬虫相关Jar包依赖 --><d ...

最新文章

  1. 交叉表 列字段排序_PowerBI创建日期表
  2. 简单dfs序 + 树链剖分
  3. linux下elasticsearch的安装
  4. 怎么new一个指针_C++知识点 34:指针运算符重载 -- 智能指针
  5. 在使用 Go 两年之后,我又转回 PHP 了
  6. 提升网页加载速度—预加载VS预读取
  7. 第2章 程序的灵魂-算法
  8. gps高斯utm_高斯投影与UTM投影的区别
  9. Gradle 下载失败的问题解决
  10. 【网络流量识别技术之初级入门篇】
  11. Kinect黑客:机械人科技未来的转变者
  12. Panda白话 - G1垃圾收集器
  13. C++ std::condition_variable::notify_one()与notify_all()
  14. MySQL数据库30条规范解读
  15. arduino笔记15:按键开关输入
  16. 免费的pr模板以及素材分享
  17. Hadoop架构、组件、及其术语汇总和理解
  18. 白盒测试案例分析(在十个球中找一个假球),并在Junit下进行测试
  19. 网络协议 -- UDP协议(2)单播
  20. Audio CODEC 基本知识及应用

热门文章

  1. Google Maps无声导航的秘密
  2. 掌握对计算机的注销操作,多掌握一些电脑操作技巧,工作起来少求人!
  3. 华为自带计算机叫什么名字,华为手机自带铃声是什么歌 华为手机默认铃声介绍...
  4. 什么是华为认证?HCIA HCIP HCIE分别是什么认证体系?
  5. 游戏配音基础知识解读
  6. 服务机器人有关的计算机技术,《服务机器人科技发展“十二五”专项规划》解读...
  7. js获取html中多个id,js获取数据库中多个id然后进行操作
  8. win10安装cuda9.1
  9. 基于MATLAB计算MIMO信道容量(附完整代码与分析)
  10. IoT Master 物联大师