91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Java實現追書神器

發布時間:2021-10-19 11:44:34 來源:億速云 閱讀:148 作者:iii 欄目:開發技術

本篇內容介紹了“怎么用Java實現追書神器”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數據。

怎么用Java實現追書神器

還是之前一樣的配方,不過這次加了jsoup和javax.mail。為什么要發送郵件呢?那是因為我想要定時去檢測網站的小說有沒有更新,如果更新了,就及時把最新的章節通過郵件的形式發送給我,那不是更好嗎?

這樣我就可以立刻知道小說有沒有更新了,然后更新的話,去自己的郵箱看就行了。

郵箱里面是肯定沒有廣告的啦!

public static HashMap cache = new HashMap<>();
public static Map cookies = new HashMap<>();
public static String url = https://www.biquwx.la/xxx/;

首先,定義幾個成員變量,分別是緩存cache,cookie 和 url。我就不用數據庫了,用一個靜態的HashMap來做緩存。cookie是每次爬取網頁后保存的,就是盡量模擬得像我瀏覽器訪問。最后是url,就是小說網站的實際地址,大概是這么一個目錄。

怎么用Java實現追書神器

如果有更新,那就一定會出現在這個網頁!

下面是我發送請求的代碼:

Connection con = Jsoup.connect(url)
				.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0")
                .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
                .header("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
                .header("Accept-Encoding", "gzip, deflate")
                .header("Connection","keep-alive")
                .header("Upgrade-Insecure-Requests", "1").cookies(cookies);

為了不希望他一下子發送太多郵件,我單獨設置了一個起始章節,放在txt文本里面的。

怎么用Java實現追書神器

里面就一個最新的章節標題:

怎么用Java實現追書神器

已經發送過的章節,我把它放到緩存中,不再重復發送:

//先檢查是否已經在緩存中
if(cache.containsKey(element.text())){
	System.out.println(element.text()+ "已經發送,無需重復發送!");
	continue;
}

最后,再用Java發送一份郵件到自己的郵箱就可以啦!

MailAccount account = new MailAccount();
account.setHost("smtp.163.com");
account.setPort(Integer.valueOf(465));
account.setAuth(true);
account.setSslEnable(Boolean.valueOf(true));
account.setConnectionTimeout(1000L);
account.setSocketFactoryFallback(true);
account.setFrom("你的發送郵箱");
account.setUser("你的發送郵箱");
account.setPass("你發送郵箱的授權碼");
MailUtil.send(account, "xxxxxxxxx@qq.com",element.text() , content, true, new File[0]);
System.out.println("發送成功!");

我用的是163郵箱,然后發到對應的qq郵箱。

下面是我成功收到的小說章節郵件:

怎么用Java實現追書神器

配上定時任務,效果是達到了, 但是這個還是得放在服務器上運行才好,不然總不可能一直開著電腦吧,哈哈。

全部源代碼如下:

/**
     * 自動發送小說最新章節
     */
	public static void sendMail() throws IOException{
		System.out.println("開始準備爬取..");
		Connection con = Jsoup.connect(url)
				.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0")
                .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
                .header("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
                .header("Accept-Encoding", "gzip, deflate")
                .header("Connection","keep-alive")
                .header("Upgrade-Insecure-Requests", "1").cookies(cookies);
 
		Response execute = con.execute();
		
		cookies = execute.cookies();
		
		String body = execute.body().toString();
		
		Document doc = Jsoup.parse(body);
		
		Elements as = doc.getElementsByTag("a");
		boolean shouldSend = false;
		
		String start = FileUtil.readString("C:/start.txt", "UTF-8"); //讀取開始章節,如果服務重啟,必須重新修改該文件
		
		for (Iterator iterator = as.iterator(); iterator.hasNext();) {
			Element element = (Element) iterator.next();
			
			if(element.text().equals(start)){
				shouldSend = true;
			}
			
			if(shouldSend && element.text().startsWith("第")){
				//先檢查是否已經在緩存中
				if(cache.containsKey(element.text())){
					System.out.println(element.text()+ "已經發送,無需重復發送!");
					continue;
				}
				con = Jsoup.connect(url + element.attr("href"));
				String content = Jsoup.parse(con.execute().body()).getElementById("content").html();
				
				cache.put(element.text(), "");
				
				MailAccount account = new MailAccount();
			     account.setHost("smtp.163.com");
			     account.setPort(Integer.valueOf(465));
			     account.setAuth(true);
			     account.setSslEnable(Boolean.valueOf(true));
			     account.setConnectionTimeout(1000L);
			     account.setSocketFactoryFallback(true);
			     account.setFrom("你的發送郵箱");
			     account.setUser("你的發送郵箱");
			     account.setPass("授權碼");
			    // MailUtil.send(account, "你的接收郵箱",element.text() , content, true, new File[0]);
			     System.out.println("發送成功!");
			}
	
		}
	}

“怎么用Java實現追書神器”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泽普县| 崇文区| 郎溪县| 疏附县| 同德县| 浦城县| 吴江市| 沙雅县| 施甸县| 东乌| 万全县| 灌阳县| 棋牌| 南雄市| 顺平县| 万安县| 罗江县| 海宁市| 舞钢市| 仁寿县| 德钦县| 宁夏| 大田县| 醴陵市| 洛川县| 安西县| 屏东市| 饶阳县| 科尔| 阳东县| 鲁山县| 额尔古纳市| 盐津县| 常德市| 双辽市| 定边县| 平顶山市| 河北省| 若尔盖县| 临桂县| 大港区|