httpclient+Jsoup爬取网页数据

情景说明:网页的数据格式比较简单,只是把小说内容爬取到本地保存,没有遇到反爬。

使用到的依赖如下:


    org.apache.httpcomponents
    httpclient
    4.5.3



    org.jsoup
    jsoup
    1.11.3

网页代码:

 
 
 
第十一章 末代皇帝&最后一个克格勃(3)-龙族3·黑月之潮(中)

 
 
 








 

龙族3·黑月之潮(中)


  返回首页龙族3·黑月之潮(中)  > 第十一章 末代皇帝&最后一个克格勃(3)

 
 

第十一章 末代皇帝&最后一个克格勃(3)

 
 
 
    
 
    
 
 
 
 
  御神刀斩落,带着大片的弧光。橘正宗血光飞溅,战栗着倒地。

  怀刃插在地上,橘正宗用来握刀的右手五指尽落,因此他没能把怀剑插进自己的肚子里。

  源稚生面无表情地收刀回鞘,从怀里抽出手帕沿着断指根部扎紧来止血。他的刀术极精,一刀斩断橘正宗的五指,却还留下短短的指根来止血。

 

  1937年12月,南京被攻克,之后的六个星期中。城里有三十万平民被屠杀。南京城里西方桥民的证词是审判战犯的关键证据,一位法国天主教堂的修女说,日军甚至冲进西方教堂开设的育婴堂。强暴藏身在里面的中国女人。老嬷嬷让中国女人们穿上修女的衣服,秘密地带他们出城。他们在江边被日本军队拦截,藤原胜少校发现他们都是假修女,于是所有女人都遭到了强暴,反抗者被用刺刀刨开了肚子。没有遭到侵害的只有带队的那位老嬷嬷,但她目睹了那血腥残酷的一幕后无法忍受,于是开枪自杀。死前她诅咒说神会惩罚罪人,用雷电用火焰……”

  【THEEND】

 
 
 
 
 
 

 
 
 
 
 


 

 

网站就不给看了用***替代一下,下面直接上代码

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.*;

/*
爬取网站小说
 */
public class CaptureDemo {
    public static void main(String[] args) {
        for (int page = 345; page <= 360 ; page++) {
            String url = "http://www.********.cc/longzu3heiyuezhichaoxia/"+page+".html";
            String bookContent = getBookContent(url);
            System.out.println(bookContent);
            File file = new File("E:\\龙族3-黑月之潮(下).txt");
            saveToLocal(bookContent, file);
            System.out.println(url+" is over.");
        }
    }

    // 保存数据到本地文件中
    private static String saveToLocal(String bookContent, File file) {
        FileWriter fw = null;
        try {
            // 如果文件存在就在文件中追加内容,不存在就创建
            fw = new FileWriter(file,true);
            fw.write(bookContent);
            fw.flush();
            fw.close();
            return "scueess";
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "failed";
    }

    // 获取目标信息
    private static String getBookContent(String url) {
        StringBuffer sb = new StringBuffer("\n");
        // 爬取网页信息
        CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
        try {
            HttpGet httpGet = new HttpGet(url);
            CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpGet);
            try {
                // 获取响应实体
                HttpEntity entity = closeableHttpResponse.getEntity();
                // 打印响应状态
                if (entity != null){
                    System.out.println(entity.toString());
                    // 将获取的网页数据以utf8编码读取出来
                    String html = EntityUtils.toString(entity, "utf8");
                    // Jsoup 解析网页数据
                    Document document = Jsoup.parse(html);
                    // 获取目标内容
                    Element bookText = document.getElementById("BookText");
                    // 章节标题
                    Elements chaptertitle = document.getElementsByClass("chaptertitle");
                    String headTitle = chaptertitle.text();
                    String content = bookText.text().replaceAll(" ","\n");

                    return sb.append(headTitle).append("\n").append(content).append("\n\n").toString();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

 

仅做学习记录。

你可能感兴趣的:(后端)