java爬取读者文摘文章(java爬虫入门实战练习)

java爬虫入门练习实战
代码仅用于学习研究
代码直接可以运行(需要Jsoup包),需要在E盘下面创建一个FileTest文件夹存储文件或修改代码中的文件路径。

import java.io.File;
import java.io.FileOutputStream;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
 

public class testDUZHE {
 
    public static void main(String[] args) throws Exception {
        // 第一步:访问读者首页
        String url = "https://www.dzwzzz.com/";
        Document document = Jsoup.connect(url).get();
        
        // 第二步:解析页面
        Elements datatime = document.select("a");
        //获取a标签
        for(int num=0;num<datatime.size();num++) {
        	//判断文章链接
        	if(datatime.get(num).attr("href").charAt(4)=='_') {
        		//获取a标签中href属性的值
        		String deHref = datatime.get(num).attr("href");
        		System.out.println("==================\n\n\n");
        		System.out.println("开始获取"+deHref.substring(0, 4)+"年第"+deHref.substring(5,7)+"期");
        		System.out.println("\n\n\n==================");
        		//根据a标签的值创建不同年份期刊的文件夹
        		File fileTest = new File("E:/FileTest/"+datatime.get(num).text());
        		fileTest.mkdirs();//创建文件夹
        		//访问不同期刊页面
        		String DuZhe = "https://www.dzwzzz.com/"+deHref;
        		Document  newdocu = Jsoup.connect(DuZhe).get();
        		//获取a标签
        		Elements a_Elements = newdocu.select("a");
        		for(int i=0;i<a_Elements.size();i++) {
        			//判断是否是文章链接
        			if (a_Elements.get(i).attr("href").charAt(0)=='d'
        					&&a_Elements.get(i).attr("href").charAt(1)=='u')
        			{
        				//访问文章所在页
						String purpose = "https://www.dzwzzz.com/"+deHref.substring(0, 8)+a_Elements.get(i).attr("href");
						Document finaldocu = Jsoup.connect(purpose).get();
						//获取文章标题
						Elements h1_elements = finaldocu.select("h1");
						String title = h1_elements.text();
						//获取文章内容
						Elements p_Elements = finaldocu.select("p");
						String Content = p_Elements.text();
						//创建txt文件
						File file = new File("E:/FileTest/"+datatime.get(num).text()+"/"+title+".txt");
			            //创建文件输出流
						FileOutputStream fileOutputStream = new FileOutputStream(file,true);
						//这里的true功能是不覆盖原有内容,所以多次运行程序会造成重复
			       		//将文章内容写入文件
						fileOutputStream.write(Content.getBytes());
			       		fileOutputStream.close();
			       		System.out.println("文章地址"+purpose);
			       		System.out.println(title+"  下载成功!");
					}
        		}
        	}
        }

    }
 
}

文章链接

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值