java獲取微信公總號推送的所有資訊的url,用於爬取微信推送的文章內容
阿新 • • 發佈:2019-02-10
場景描述:
在使用者提出需要爬取微信公總號推送訊息的時候,感覺是懵逼的,之前從來沒爬取過,無從下手,沒辦法顧客是上帝,既然使用者提出了需求,我們只能想法去解決問題。
然後根據使用者提供微信公總號 安泰科現貨報價 去爬取,發現公總號推送的訊息的url並不是固定不變的,這咋整。好在對於我們開發人員來說有度娘,ok,百度一下,發現搜狗微信能解決該問題。寫了一個測試發現,果然能解決,之後就有了這篇博文,用來記錄,免得忘記,也多少能給大家一些參考,廢話不多說,言歸正傳:
首先需要jsoup的jar包,我用的1.10.2版本。
<!-- jsoup --> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.2</version> </dependency>
然後是測試類的程式碼,簡單的註釋已經寫上,如下
ok,url已經獲取到,剩下的爬取的就省略了。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; } }