1. 程式人生 > >java獲取微信公總號推送的所有資訊的url,用於爬取微信推送的文章內容

java獲取微信公總號推送的所有資訊的url,用於爬取微信推送的文章內容

場景描述:

    在使用者提出需要爬取微信公總號推送訊息的時候,感覺是懵逼的,之前從來沒爬取過,無從下手,沒辦法顧客是上帝,既然使用者提出了需求,我們只能想法去解決問題。

    然後根據使用者提供微信公總號  安泰科現貨報價 去爬取,發現公總號推送的訊息的url並不是固定不變的,這咋整。好在對於我們開發人員來說有度娘,ok,百度一下,發現搜狗微信能解決該問題。寫了一個測試發現,果然能解決,之後就有了這篇博文,用來記錄,免得忘記,也多少能給大家一些參考,廢話不多說,言歸正傳:

首先需要jsoup的jar包,我用的1.10.2版本。

		<!-- jsoup -->
		<dependency>
		    <groupId>org.jsoup</groupId>
		    <artifactId>jsoup</artifactId>
		    <version>1.10.2</version>
		</dependency>

然後是測試類的程式碼,簡單的註釋已經寫上,如下

package crawler;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.junit.Test;

/**
 * 微信公總號測試類
 * @author siqiangming 2018年5月9日 上午9:59:18
 */
public class WeChatTest{
	@Test
	public void getFirst(){
		String baseUrl = "http://weixin.sogou.com/weixin?type=1&ie=utf8&query=";//搜狗微信的基礎地址
    	String searchUrl = baseUrl + "gh_3756da4d163e";//加上安泰科現貨價格的微信公總號
    	Document document = getDocument(searchUrl);
    	String listUrl = document.select(".tit a").attr("href");//查詢到所有列表資訊的url
    	System.out.println(listUrl);
    	System.out.println("-----------------------");
    	Document doc = getDocument(listUrl);
    	//擷取前10條推送資訊的json中的list資料
    	String jsonList = doc.html().split("var msgList = ")[1].split("seajs.use")[0].trim();
    	//截取出來第一條資訊的url
    	String url = jsonList.split("content_url\":\"")[1].split("\",\"copyright_stat")[0].replaceAll("amp;", "");
    	if(url.startsWith("/s")){//如果url以/s開頭,處理成http格式
    		url = "http://mp.weixin.qq.com" + url;
    	}
    	System.out.println(url);
    	//獲取第一條推送資訊的標題
    	String title = jsonList.split("title\":\"")[1].split("\"},\"comm_msg_info")[0];
    	System.out.println(title);
	}
	
	/**
	 * 獲取頁面
	 * @author siqiangming 2018年5月9日 下午2:23:01
	 * @param url url
	 * @return
	 */
	public Document getDocument(String url){
		Document document = null;
		try {
			document = Jsoup.connect(url).get();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return document;
	}
}
ok,url已經獲取到,剩下的爬取的就省略了。