社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
导入jar包,这是目标链接https://www.iyiou.com/kcjiedu/1.html,它是有分页的,所以根据分页网址的变化生成分页对应的网址,爬取下载内容到本地磁盘
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
/**
*
*/
package TestJava;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* @author 杨光宇
* 2019年12月10日
*/
public class day10 {
public static void main(String[] args) throws Exception {
//爬取目标https://www.iyiou.com/kcjiedu/1.html
String url="https://www.iyiou.com/kcjiedu/1.html";
Document doc = Jsoup.connect(url).get();
//因为分页,所以我们获取他最后一页的数字
int end =Integer.parseInt(doc.select(".end").text());
//循环每一页 仔细观察网址的变化只是在最后数字发生了变化
for (int i = 1; i <= end; i++) {
//将地址的1替换成每页的数字生成一个新的url
String replaceUrl = url.replaceAll("1", String.valueOf(i));
System.out.println("获取链接的全部文章链接:"+replaceUrl);
try {
getAticleUrl(replaceUrl);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void getAticleUrl(String url) throws Exception{
Document doc = Jsoup.connect(url).get();
//查找class为newestArticleList的div 并从里面获取a标签属性
Elements select = doc.select(".newestArticleList a");
//这里他是有两个href地址的,有一个图片链接和一个文本链接 所以我们弄一个丢一个即可
int i=0;
for (Element element : select) {
i++;
if(i%2==0){
continue;
}
String aticleUrl=element.attr("href");
System.out.println(" 单个文章链接:"+aticleUrl);
//开始正式爬去单个链接
getAticle(aticleUrl);
}
}
public static void getAticle(String url) throws Exception{
System.out.println(" 开始爬去文章标题:"+url);
Document doc = Jsoup.connect(url).get();
//获取标题
Elements select_title = doc.select("#post_title");
//直接把非文件名字符替换
String textTitle = select_title.text().replaceAll("[\s\\/:\*\?\"<>\|]", "");
System.out.println(" 文章的标题"+textTitle);
//创建txt文件以文章标题为文件名
String path="d:/pic/pa/aticle/"+textTitle+".txt";
//创建文件
File file = new File(path);
if(!file.exists()){
file.createNewFile();
}
//获取内容
Elements select_description = doc.select("#post_description");
String text_description = select_description.text();
//下载文章
loadStr(path, text_description);
}
public static void loadStr(String path,String text_description) throws Exception{
//要写入文件所以创建BufferedWriter
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(path)));
//想着匹配到多个空格就进行一个换行 不知道能不能行通 不喜欢忽略
String[] split = text_description.split(" ");
for (String str : split) {
bw.write(str+"rn");
}
//关闭流
if(bw!=null){
bw.close();
}
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!