
querylist采集微信公眾號文章
querylist采集微信公眾號文章(讓歷史消息頁(yè)面重新超鏈接添加到有外鏈權限的公眾號圖文當中外鏈的入口)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 116 次瀏覽 ? 2022-03-27 20:18
胖友們,早上好!
對公眾號添加外鏈的限制,真是讓運營(yíng)商頭疼!因為只有開(kāi)通了微信認證和微信支付的賬號才有外鏈權限。
除服務(wù)號外,公眾號的軍隊訂閱號僅被授權與媒體主體和政府號開(kāi)通微信支付。
而現在,即使是有外鏈權限的公眾號,也無(wú)法直接超鏈接到圖文中的歷史新聞頁(yè)面!
于是出現了兩個(gè)問(wèn)題:
如何讓歷史新聞頁(yè)面重新添加具有外鏈權限的公眾號圖文超鏈接?
對于沒(méi)有外鏈權限的訂閱號,如何在公眾號中添加外鏈入口?
那么135編輯器就產(chǎn)生了解決這兩個(gè)問(wèn)題的工具:
生成短鏈接
圖像.png
我們先解決第一個(gè)問(wèn)題:讓“歷史消息頁(yè)面鏈接”在圖文消息中超鏈接。
先復制“歷史新聞頁(yè)面”鏈接,粘貼后復制生成的短鏈接。
灰色.gif
然后使用超鏈接按鈕將此鏈接超鏈接到具有外部鏈接權限的公眾號圖像和文本。
微信鏈接被識別和檢測。在我們生成一個(gè)短鏈接后,如果我們無(wú)法檢測到歷史新聞頁(yè)面的鏈接,我們可以加入它!
我們來(lái)解決第二個(gè)問(wèn)題:讓沒(méi)有外鏈權限的公眾號的圖文有外鏈的入口。
用鼠標點(diǎn)擊并拖動(dòng)生成的二維碼在新窗口中打開(kāi),右擊圖片,選擇復制圖片,然后將二維碼圖片粘貼到圖片和文字中。
沒(méi)有外鏈權限的公眾號可以放入二維碼,用戶(hù)可以識別二維碼進(jìn)入外鏈界面。 查看全部
querylist采集微信公眾號文章(讓歷史消息頁(yè)面重新超鏈接添加到有外鏈權限的公眾號圖文當中外鏈的入口)
胖友們,早上好!
對公眾號添加外鏈的限制,真是讓運營(yíng)商頭疼!因為只有開(kāi)通了微信認證和微信支付的賬號才有外鏈權限。
除服務(wù)號外,公眾號的軍隊訂閱號僅被授權與媒體主體和政府號開(kāi)通微信支付。
而現在,即使是有外鏈權限的公眾號,也無(wú)法直接超鏈接到圖文中的歷史新聞頁(yè)面!
于是出現了兩個(gè)問(wèn)題:
如何讓歷史新聞頁(yè)面重新添加具有外鏈權限的公眾號圖文超鏈接?
對于沒(méi)有外鏈權限的訂閱號,如何在公眾號中添加外鏈入口?
那么135編輯器就產(chǎn)生了解決這兩個(gè)問(wèn)題的工具:
生成短鏈接
圖像.png
我們先解決第一個(gè)問(wèn)題:讓“歷史消息頁(yè)面鏈接”在圖文消息中超鏈接。
先復制“歷史新聞頁(yè)面”鏈接,粘貼后復制生成的短鏈接。
灰色.gif
然后使用超鏈接按鈕將此鏈接超鏈接到具有外部鏈接權限的公眾號圖像和文本。

微信鏈接被識別和檢測。在我們生成一個(gè)短鏈接后,如果我們無(wú)法檢測到歷史新聞頁(yè)面的鏈接,我們可以加入它!
我們來(lái)解決第二個(gè)問(wèn)題:讓沒(méi)有外鏈權限的公眾號的圖文有外鏈的入口。
用鼠標點(diǎn)擊并拖動(dòng)生成的二維碼在新窗口中打開(kāi),右擊圖片,選擇復制圖片,然后將二維碼圖片粘貼到圖片和文字中。
沒(méi)有外鏈權限的公眾號可以放入二維碼,用戶(hù)可以識別二維碼進(jìn)入外鏈界面。
querylist采集微信公眾號文章(Python模擬操作微信App的所有歷史數據方法(詳見(jiàn))(圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 374 次瀏覽 ? 2022-03-27 20:04
鯤之鵬技術(shù)人員將在本文中介紹一種采集通過(guò)模擬微信App操作來(lái)指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket和Cookie)。
為了得到這四個(gè)參數,我們需要模擬App的運行,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(見(jiàn)詳情)。對于 HTTP 集成抓包,我們之前已經(jīng)介紹過(guò) Mitmproxy(詳見(jiàn))。
我們需要模擬微信的操作,完成以下步驟:
1.啟動(dòng)微信應用
2. 點(diǎn)擊“通訊錄”
3.點(diǎn)擊“公眾號”
4.點(diǎn)擊公眾號成為采集
5.點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”
此時(shí),我們可以從響應數據中捕獲__biz、appmsg_token和pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下圖。
通過(guò)以上四個(gè)參數,我們可以構造API請求獲取歷史列表文章,直接調用API接口獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變offset參數,可以得到所有的歷史數據。
# Cookie
headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'}
url = 'https://mp.weixin.qq.com/mp/profile_ext?'
data = {}
data['is_ok'] = '1'
data['count'] = '10'
data['wxtoken'] = ''
data['f'] = 'json'
data['scene'] = '124'
data['uin'] = '777'
data['key'] = '777'
data['offset'] = '0'
data['action'] = 'getmsg'
data['x5'] = '0'
# 下面三個(gè)參數需要替換
# https://mp.weixin.qq.com/mp/pr ... Dhome應答數據里會(huì )暴漏這三個(gè)參數
data['__biz'] = 'MjM5MzQyOTM1OQ=='
data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~'
data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE'
url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集流程操作截圖如下:
輸出截圖如下:
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。 查看全部
querylist采集微信公眾號文章(Python模擬操作微信App的所有歷史數據方法(詳見(jiàn))(圖))
鯤之鵬技術(shù)人員將在本文中介紹一種采集通過(guò)模擬微信App操作來(lái)指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket和Cookie)。

為了得到這四個(gè)參數,我們需要模擬App的運行,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(見(jiàn)詳情)。對于 HTTP 集成抓包,我們之前已經(jīng)介紹過(guò) Mitmproxy(詳見(jiàn))。
我們需要模擬微信的操作,完成以下步驟:
1.啟動(dòng)微信應用
2. 點(diǎn)擊“通訊錄”
3.點(diǎn)擊“公眾號”
4.點(diǎn)擊公眾號成為采集
5.點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”


此時(shí),我們可以從響應數據中捕獲__biz、appmsg_token和pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下圖。



通過(guò)以上四個(gè)參數,我們可以構造API請求獲取歷史列表文章,直接調用API接口獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變offset參數,可以得到所有的歷史數據。
# Cookie
headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'}
url = 'https://mp.weixin.qq.com/mp/profile_ext?'
data = {}
data['is_ok'] = '1'
data['count'] = '10'
data['wxtoken'] = ''
data['f'] = 'json'
data['scene'] = '124'
data['uin'] = '777'
data['key'] = '777'
data['offset'] = '0'
data['action'] = 'getmsg'
data['x5'] = '0'
# 下面三個(gè)參數需要替換
# https://mp.weixin.qq.com/mp/pr ... Dhome應答數據里會(huì )暴漏這三個(gè)參數
data['__biz'] = 'MjM5MzQyOTM1OQ=='
data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~'
data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE'
url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集流程操作截圖如下:

輸出截圖如下:

以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
querylist采集微信公眾號文章(querylist采集微信公眾號文章的信息濃縮了怎么辦?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 124 次瀏覽 ? 2022-03-27 08:04
querylist采集微信公眾號文章的信息。微信公眾號文章一般放在一個(gè)列表,每一條信息就像一個(gè)信息庫。針對每一個(gè)信息庫,可以有多次搜索機會(huì ),即可以多次批量提取微信公眾號文章鏈接。base64解碼。通過(guò)這兩步,可以在很大程度上避免抄襲問(wèn)題。但是從搜索的角度來(lái)說(shuō),很難區分可能有質(zhì)量的文章是來(lái)自公眾號的,還是其他平臺。傳統方法包括人工打標簽和用python的base64解碼。前者可能有累積性問(wèn)題,后者不可控性很大。
有靠譜的文章可以搜索到的地方也就是微信公眾號了,公眾號現在增多了不少,一百來(lái)個(gè)還算是正常的量。所以這個(gè)數量的文章就是信息的濃縮了。以前大部分都是人工一個(gè)個(gè)搜索來(lái)的,包括文章標題里的id,但是現在這方面做的比較好的只有搜狗和百度了。比如你想找來(lái)自“吃瓜群眾”的第一篇文章的鏈接,就搜索“吃瓜群眾#閱讀量6000+"然后就能搜到來(lái)自“看雪論壇”的所有來(lái)自“吃瓜群眾”的內容;找一篇發(fā)于10年前的新聞聯(lián)播的文章的鏈接,只需要搜索“新聞聯(lián)播#閱讀量4000+",就能搜索到內容發(fā)布于2007年的新聞了。
微信公眾號除了文章還有公眾號文章,其實(shí)就是一個(gè)文章列表庫,可以按類(lèi)別索引,但需要文章發(fā)布的時(shí)候才會(huì )更新。因此可以一個(gè)一個(gè)搜索。但搜索出來(lái)的文章質(zhì)量應該很高,本身微信里就是有百家號的內容,質(zhì)量應該比較高。不過(guò)有些公眾號圖文消息多,那么就需要用關(guān)鍵詞進(jìn)行定位了。主要是可以搜索的手段很多,也有很多方法,也有很多局限。以后能用到的方法應該會(huì )越來(lái)越多,有時(shí)候覺(jué)得還是文章質(zhì)量高,分類(lèi)定位合理方便處理。 查看全部
querylist采集微信公眾號文章(querylist采集微信公眾號文章的信息濃縮了怎么辦?)
querylist采集微信公眾號文章的信息。微信公眾號文章一般放在一個(gè)列表,每一條信息就像一個(gè)信息庫。針對每一個(gè)信息庫,可以有多次搜索機會(huì ),即可以多次批量提取微信公眾號文章鏈接。base64解碼。通過(guò)這兩步,可以在很大程度上避免抄襲問(wèn)題。但是從搜索的角度來(lái)說(shuō),很難區分可能有質(zhì)量的文章是來(lái)自公眾號的,還是其他平臺。傳統方法包括人工打標簽和用python的base64解碼。前者可能有累積性問(wèn)題,后者不可控性很大。
有靠譜的文章可以搜索到的地方也就是微信公眾號了,公眾號現在增多了不少,一百來(lái)個(gè)還算是正常的量。所以這個(gè)數量的文章就是信息的濃縮了。以前大部分都是人工一個(gè)個(gè)搜索來(lái)的,包括文章標題里的id,但是現在這方面做的比較好的只有搜狗和百度了。比如你想找來(lái)自“吃瓜群眾”的第一篇文章的鏈接,就搜索“吃瓜群眾#閱讀量6000+"然后就能搜到來(lái)自“看雪論壇”的所有來(lái)自“吃瓜群眾”的內容;找一篇發(fā)于10年前的新聞聯(lián)播的文章的鏈接,只需要搜索“新聞聯(lián)播#閱讀量4000+",就能搜索到內容發(fā)布于2007年的新聞了。
微信公眾號除了文章還有公眾號文章,其實(shí)就是一個(gè)文章列表庫,可以按類(lèi)別索引,但需要文章發(fā)布的時(shí)候才會(huì )更新。因此可以一個(gè)一個(gè)搜索。但搜索出來(lái)的文章質(zhì)量應該很高,本身微信里就是有百家號的內容,質(zhì)量應該比較高。不過(guò)有些公眾號圖文消息多,那么就需要用關(guān)鍵詞進(jìn)行定位了。主要是可以搜索的手段很多,也有很多方法,也有很多局限。以后能用到的方法應該會(huì )越來(lái)越多,有時(shí)候覺(jué)得還是文章質(zhì)量高,分類(lèi)定位合理方便處理。
querylist采集微信公眾號文章(微信小程序中如何打開(kāi)公眾號中的文章(圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2022-03-25 21:12
本文文章主要介紹微信小程序如何獲取公眾號文章文章的列表和展示。文中的介紹很詳細,有一定的參考價(jià)值。有興趣的朋友一定要閱讀!
如何在微信小程序中打開(kāi)公眾號中的文章,步驟比較簡(jiǎn)單。
1、公共賬號設置
如果小程序想要獲取公眾號的資料,公眾號需要做一些設置。
1.1 綁定小程序
公眾號需要綁定目標小程序,否則無(wú)法打開(kāi)公眾號的文章。
在公眾號管理界面,點(diǎn)擊小程序管理-->關(guān)聯(lián)小程序
輸入小程序的AppID進(jìn)行搜索綁定。
1.2 公眾號開(kāi)發(fā)者功能配置
?。?)在公眾號管理界面,點(diǎn)擊開(kāi)發(fā)模塊中的基本配置選項。
(2) 打開(kāi)開(kāi)發(fā)者密碼(AppSecret),注意保存和更改密碼。
(3)設置IP白名單。這個(gè)是發(fā)起請求的機器的外網(wǎng)IP。如果是在自己的電腦上,就是你電腦的外網(wǎng)IP。如果部署到服務(wù)器上,它是服務(wù)器的外部IP。
2、獲取文章信息的步驟
以下僅用于演示。
在實(shí)際項目中,可以在自己的服務(wù)器程序中獲取,而不是直接在小程序中獲取。畢竟需要用到appid、appsecret等高度機密的參數。
2.1 獲取 access_token
access_token是公眾號全球唯一的API調用憑證。公眾號調用各個(gè)API時(shí)需要access_token。API 文檔
private?String?getToken()?throws?MalformedURLException,?IOException,?ProtocolException?{
//?access_token接口https請求方式:?GET?https://api.weixin.qq.com/cgi- ... ECRET
String?path?=?"?https://api.weixin.qq.com/cgi- ... 3B%3B
String?appid?=?"公眾號的開(kāi)發(fā)者ID(AppID)";
String?secret?=?"公眾號的開(kāi)發(fā)者密碼(AppSecret)";
URL?url?=?new?URL(path+"&appid="?+?appid?+?"&secret="?+?secret);
HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();?
connection.setRequestMethod("GET");
connection.connect();
InputStream?in?=?connection.getInputStream();
byte[]?b?=?new?byte[100];
int?len?=?-1;
StringBuffer?sb?=?new?StringBuffer();
while((len?=?in.read(b))?!=?-1)?{
sb.append(new?String(b,0,len));
}
System.out.println(sb.toString());
in.close();
return?sb.toString();
}
2.2 獲取文章的列表
API 文檔
private?String?getContentList(String?token)?throws?IOException?{
String?path?=?"?https://api.weixin.qq.com/cgi- ... ot%3B?+?token;
URL?url?=?new?URL(path);
HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();?
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("content-type",?"application/json;charset=utf-8");
connection.connect();
//?post發(fā)送的參數
Map?map?=?new?HashMap();
map.put("type",?"news");?//?news表示圖文類(lèi)型的素材,具體看API文檔
map.put("offset",?0);
map.put("count",?1);
//?將map轉換成json字符串
String?paramBody?=?JSON.toJSONString(map);?//?這里用了Alibaba的fastjson
OutputStream?out?=?connection.getOutputStream();
BufferedWriter?bw?=?new?BufferedWriter(new?OutputStreamWriter(out));
bw.write(paramBody);?//?向流中寫(xiě)入參數字符串
bw.flush();
InputStream?in?=?connection.getInputStream();
byte[]?b?=?new?byte[100];
int?len?=?-1;
StringBuffer?sb?=?new?StringBuffer();
while((len?=?in.read(b))?!=?-1)?{
sb.append(new?String(b,0,len));
}
in.close();
return?sb.toString();
}
測試:
@Test
public?void?test()?throws?IOException?{
String?result1?=?getToken();
Map?token?=?(Map)?JSON.parseObject(result1);
String?result2?=?getContentList(token.get("access_token").toString());
System.out.println(result2);
}
轉換為json格式,參數說(shuō)明見(jiàn)上述API文檔
第二張圖片中的url是公眾號文章的地址,獲得的tem物品數量就會(huì )有多少物品。只要得到以上結果,在小程序中打開(kāi)公眾號文章就有過(guò)半成功了。
最后可以在小程序中使用組件打開(kāi),src中文章的url地址。
以上就是微信小程序文章文章《如何獲取公眾號文章文章的列表和展示》的全部?jì)热?,感謝閱讀!希望分享的內容對您有所幫助。更多相關(guān)知識,請關(guān)注易宿云行業(yè)資訊頻道! 查看全部
querylist采集微信公眾號文章(微信小程序中如何打開(kāi)公眾號中的文章(圖))
本文文章主要介紹微信小程序如何獲取公眾號文章文章的列表和展示。文中的介紹很詳細,有一定的參考價(jià)值。有興趣的朋友一定要閱讀!
如何在微信小程序中打開(kāi)公眾號中的文章,步驟比較簡(jiǎn)單。
1、公共賬號設置
如果小程序想要獲取公眾號的資料,公眾號需要做一些設置。
1.1 綁定小程序
公眾號需要綁定目標小程序,否則無(wú)法打開(kāi)公眾號的文章。
在公眾號管理界面,點(diǎn)擊小程序管理-->關(guān)聯(lián)小程序

輸入小程序的AppID進(jìn)行搜索綁定。

1.2 公眾號開(kāi)發(fā)者功能配置
?。?)在公眾號管理界面,點(diǎn)擊開(kāi)發(fā)模塊中的基本配置選項。

(2) 打開(kāi)開(kāi)發(fā)者密碼(AppSecret),注意保存和更改密碼。
(3)設置IP白名單。這個(gè)是發(fā)起請求的機器的外網(wǎng)IP。如果是在自己的電腦上,就是你電腦的外網(wǎng)IP。如果部署到服務(wù)器上,它是服務(wù)器的外部IP。

2、獲取文章信息的步驟
以下僅用于演示。
在實(shí)際項目中,可以在自己的服務(wù)器程序中獲取,而不是直接在小程序中獲取。畢竟需要用到appid、appsecret等高度機密的參數。
2.1 獲取 access_token
access_token是公眾號全球唯一的API調用憑證。公眾號調用各個(gè)API時(shí)需要access_token。API 文檔
private?String?getToken()?throws?MalformedURLException,?IOException,?ProtocolException?{
//?access_token接口https請求方式:?GET?https://api.weixin.qq.com/cgi- ... ECRET
String?path?=?"?https://api.weixin.qq.com/cgi- ... 3B%3B
String?appid?=?"公眾號的開(kāi)發(fā)者ID(AppID)";
String?secret?=?"公眾號的開(kāi)發(fā)者密碼(AppSecret)";
URL?url?=?new?URL(path+"&appid="?+?appid?+?"&secret="?+?secret);
HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();?
connection.setRequestMethod("GET");
connection.connect();
InputStream?in?=?connection.getInputStream();
byte[]?b?=?new?byte[100];
int?len?=?-1;
StringBuffer?sb?=?new?StringBuffer();
while((len?=?in.read(b))?!=?-1)?{
sb.append(new?String(b,0,len));
}
System.out.println(sb.toString());
in.close();
return?sb.toString();
}
2.2 獲取文章的列表
API 文檔
private?String?getContentList(String?token)?throws?IOException?{
String?path?=?"?https://api.weixin.qq.com/cgi- ... ot%3B?+?token;
URL?url?=?new?URL(path);
HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();?
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("content-type",?"application/json;charset=utf-8");
connection.connect();
//?post發(fā)送的參數
Map?map?=?new?HashMap();
map.put("type",?"news");?//?news表示圖文類(lèi)型的素材,具體看API文檔
map.put("offset",?0);
map.put("count",?1);
//?將map轉換成json字符串
String?paramBody?=?JSON.toJSONString(map);?//?這里用了Alibaba的fastjson
OutputStream?out?=?connection.getOutputStream();
BufferedWriter?bw?=?new?BufferedWriter(new?OutputStreamWriter(out));
bw.write(paramBody);?//?向流中寫(xiě)入參數字符串
bw.flush();
InputStream?in?=?connection.getInputStream();
byte[]?b?=?new?byte[100];
int?len?=?-1;
StringBuffer?sb?=?new?StringBuffer();
while((len?=?in.read(b))?!=?-1)?{
sb.append(new?String(b,0,len));
}
in.close();
return?sb.toString();
}
測試:
@Test
public?void?test()?throws?IOException?{
String?result1?=?getToken();
Map?token?=?(Map)?JSON.parseObject(result1);
String?result2?=?getContentList(token.get("access_token").toString());
System.out.println(result2);
}

轉換為json格式,參數說(shuō)明見(jiàn)上述API文檔


第二張圖片中的url是公眾號文章的地址,獲得的tem物品數量就會(huì )有多少物品。只要得到以上結果,在小程序中打開(kāi)公眾號文章就有過(guò)半成功了。
最后可以在小程序中使用組件打開(kāi),src中文章的url地址。

以上就是微信小程序文章文章《如何獲取公眾號文章文章的列表和展示》的全部?jì)热?,感謝閱讀!希望分享的內容對您有所幫助。更多相關(guān)知識,請關(guān)注易宿云行業(yè)資訊頻道!
querylist采集微信公眾號文章(如何用微信公眾號同SAPC4C的ODataAPI.?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 151 次瀏覽 ? 2022-03-25 07:24
最近有很多朋友問(wèn)我微信上SAP系統和微信公眾號的整合,所以我把當時(shí)寫(xiě)的英文版翻譯成中文重新發(fā)布到我的公眾號上。
需要注意的是,三年后,微信公眾號的開(kāi)發(fā)流程可能會(huì )發(fā)生變化,請自行識別。系統集成了微信公眾號,三年前我選擇了SAP Cloud for Customer。
永遠記住,我們系列的目標是學(xué)習如何使用微信公眾號與SAP系統(SAP Cloud for Customer,以下簡(jiǎn)稱(chēng)C4C)集成。要實(shí)現這個(gè)目標,需要通過(guò)微信公眾號使用SAP C4C的OData API。
作為學(xué)習的第一步,我們首先學(xué)習如何調用微信公眾號上的通用API,而不是SAP C4C OData API。
假設這樣一個(gè)簡(jiǎn)單的場(chǎng)景:用戶(hù)關(guān)注微信公眾號后,通過(guò)微信應用向公眾號發(fā)送了一些短信。公眾號收到這些短信后,會(huì )轉發(fā)到本系列第一篇文章中提到的微信消息服務(wù)器文章微信開(kāi)發(fā)環(huán)境搭建。此時(shí),微信消息服務(wù)器收到轉發(fā)的文本信息后,會(huì )調用一些帶有人工智能的API,并通過(guò)微信APP將API響應返回給用戶(hù)。
與微信消息服務(wù)器綁定的微信公眾號,在這個(gè)場(chǎng)景中實(shí)際上扮演了一個(gè)簡(jiǎn)單的聊天機器人的角色。用戶(hù)與微信公眾號通過(guò)問(wèn)答方式進(jìn)行互動(dòng)。
Jerry 還記得,他上大學(xué)的時(shí)候,上過(guò)專(zhuān)業(yè)課《Unix 網(wǎng)絡(luò )編程》。其中一個(gè)練習是通過(guò)套接字實(shí)現一對客戶(hù)端和服務(wù)器??蛻?hù)端向服務(wù)器發(fā)送了一個(gè)字符串,服務(wù)器完整地接收到了它。返回它,即所謂的 Echo Server。
在實(shí)現微信聊天機器人之前,我們先降低難度,實(shí)現一個(gè)簡(jiǎn)單的微信回顯服務(wù),即無(wú)論用戶(hù)向公眾號發(fā)送什么信息,都會(huì )收到信息本身,加上前綴“Add by Jerry”。
本文使用的項目的完整源代碼可以從我的 Github 下載。
首先,在 server.js 中,使用 nodejs express 庫來(lái)啟動(dòng)一個(gè) web 服務(wù)器:
上圖第二行中routesEngine的實(shí)現位于index.js中。當微信app收到用戶(hù)通過(guò)微信app發(fā)送的短信時(shí),會(huì )通過(guò)HTTP POST請求轉發(fā)給微信消息服務(wù)器。微信消息服務(wù)器收到請求后,調用第五行的echoService處理:
echoService 的實(shí)現位于文件 echo.js 中:首先從變量 req(第 11 行)中收錄的 HTTP 請求中解析用戶(hù)輸入的文本信息,然后添加前綴“Add by Jerry:”,然后存儲結果。在變量content(第13行)中,最后調用自研工具方法replyMessage,將前綴文本信息返回給用戶(hù)。
上圖第15行replyMessage工具方法需要在微信app轉發(fā)給微信消息服務(wù)器的HTTP POST請求中解析出發(fā)送消息的微信用戶(hù)id,然后發(fā)送以“Add by Jerry”為前綴的內容:" 發(fā)給這個(gè)id標識的微信用戶(hù)。
replyMessage 的實(shí)現在replyMessage.js 中:
有了 Echo Service 的實(shí)現經(jīng)驗,實(shí)現微信聊天機器人沒(méi)有難度。
只需將 index.js 中接收到 HTTP Post 請求后的操作由調用 echoService 更改為調用新的實(shí)現,tuningService 即可。
調用圖靈API的tuningService函數的源碼可以在這里下載。
我在 2017 年使用的 Turing API 由以下 網(wǎng)站 提供:
申請API key,粘貼到下圖第6行的url中:
解析用戶(hù)輸入的文本信息,在第20行存儲到body變量中,使用encodeURI處理,直接拼接到圖靈API url的末尾,然后使用request函數調用圖靈API第27行,在匿名回調函數中獲取API的響應,最后調用工具方法replyMessage,通過(guò)微信消息服務(wù)器將響應發(fā)送給微信app。 查看全部
querylist采集微信公眾號文章(如何用微信公眾號同SAPC4C的ODataAPI.?)
最近有很多朋友問(wèn)我微信上SAP系統和微信公眾號的整合,所以我把當時(shí)寫(xiě)的英文版翻譯成中文重新發(fā)布到我的公眾號上。
需要注意的是,三年后,微信公眾號的開(kāi)發(fā)流程可能會(huì )發(fā)生變化,請自行識別。系統集成了微信公眾號,三年前我選擇了SAP Cloud for Customer。
永遠記住,我們系列的目標是學(xué)習如何使用微信公眾號與SAP系統(SAP Cloud for Customer,以下簡(jiǎn)稱(chēng)C4C)集成。要實(shí)現這個(gè)目標,需要通過(guò)微信公眾號使用SAP C4C的OData API。
作為學(xué)習的第一步,我們首先學(xué)習如何調用微信公眾號上的通用API,而不是SAP C4C OData API。
假設這樣一個(gè)簡(jiǎn)單的場(chǎng)景:用戶(hù)關(guān)注微信公眾號后,通過(guò)微信應用向公眾號發(fā)送了一些短信。公眾號收到這些短信后,會(huì )轉發(fā)到本系列第一篇文章中提到的微信消息服務(wù)器文章微信開(kāi)發(fā)環(huán)境搭建。此時(shí),微信消息服務(wù)器收到轉發(fā)的文本信息后,會(huì )調用一些帶有人工智能的API,并通過(guò)微信APP將API響應返回給用戶(hù)。

與微信消息服務(wù)器綁定的微信公眾號,在這個(gè)場(chǎng)景中實(shí)際上扮演了一個(gè)簡(jiǎn)單的聊天機器人的角色。用戶(hù)與微信公眾號通過(guò)問(wèn)答方式進(jìn)行互動(dòng)。

Jerry 還記得,他上大學(xué)的時(shí)候,上過(guò)專(zhuān)業(yè)課《Unix 網(wǎng)絡(luò )編程》。其中一個(gè)練習是通過(guò)套接字實(shí)現一對客戶(hù)端和服務(wù)器??蛻?hù)端向服務(wù)器發(fā)送了一個(gè)字符串,服務(wù)器完整地接收到了它。返回它,即所謂的 Echo Server。
在實(shí)現微信聊天機器人之前,我們先降低難度,實(shí)現一個(gè)簡(jiǎn)單的微信回顯服務(wù),即無(wú)論用戶(hù)向公眾號發(fā)送什么信息,都會(huì )收到信息本身,加上前綴“Add by Jerry”。

本文使用的項目的完整源代碼可以從我的 Github 下載。
首先,在 server.js 中,使用 nodejs express 庫來(lái)啟動(dòng)一個(gè) web 服務(wù)器:

上圖第二行中routesEngine的實(shí)現位于index.js中。當微信app收到用戶(hù)通過(guò)微信app發(fā)送的短信時(shí),會(huì )通過(guò)HTTP POST請求轉發(fā)給微信消息服務(wù)器。微信消息服務(wù)器收到請求后,調用第五行的echoService處理:

echoService 的實(shí)現位于文件 echo.js 中:首先從變量 req(第 11 行)中收錄的 HTTP 請求中解析用戶(hù)輸入的文本信息,然后添加前綴“Add by Jerry:”,然后存儲結果。在變量content(第13行)中,最后調用自研工具方法replyMessage,將前綴文本信息返回給用戶(hù)。

上圖第15行replyMessage工具方法需要在微信app轉發(fā)給微信消息服務(wù)器的HTTP POST請求中解析出發(fā)送消息的微信用戶(hù)id,然后發(fā)送以“Add by Jerry”為前綴的內容:" 發(fā)給這個(gè)id標識的微信用戶(hù)。
replyMessage 的實(shí)現在replyMessage.js 中:

有了 Echo Service 的實(shí)現經(jīng)驗,實(shí)現微信聊天機器人沒(méi)有難度。
只需將 index.js 中接收到 HTTP Post 請求后的操作由調用 echoService 更改為調用新的實(shí)現,tuningService 即可。

調用圖靈API的tuningService函數的源碼可以在這里下載。
我在 2017 年使用的 Turing API 由以下 網(wǎng)站 提供:

申請API key,粘貼到下圖第6行的url中:

解析用戶(hù)輸入的文本信息,在第20行存儲到body變量中,使用encodeURI處理,直接拼接到圖靈API url的末尾,然后使用request函數調用圖靈API第27行,在匿名回調函數中獲取API的響應,最后調用工具方法replyMessage,通過(guò)微信消息服務(wù)器將響應發(fā)送給微信app。
querylist采集微信公眾號文章(為什么你的App會(huì )卡頓-Android-掘金Cover有什么料?(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 206 次瀏覽 ? 2022-03-25 01:09
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程
推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId
作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
史上最全的Android文章精選合集
作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
微信支付教程系列公眾號支付
作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信支付教程系列現金紅包
作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題
作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪
作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號中獲取用戶(hù)的地理位置需要js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答
作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容
作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文 查看全部
querylist采集微信公眾號文章(為什么你的App會(huì )卡頓-Android-掘金Cover有什么料?(組圖))
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程

推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId


作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
史上最全的Android文章精選合集


作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
微信支付教程系列公眾號支付


作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信支付教程系列現金紅包


作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題


作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪


作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號中獲取用戶(hù)的地理位置需要js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答


作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容


作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文
querylist采集微信公眾號文章(微信公眾號開(kāi)發(fā)之VS遠程調試(二)(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 278 次瀏覽 ? 2022-03-25 01:08
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程
推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題
作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
微信支付教程系列公眾號支付
作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)的Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信支付教程系列現金紅包
作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)的Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId
作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答
作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪
作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號中獲取用戶(hù)的地理位置需要一個(gè)js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
史上最全的Android文章精選合集
作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容
作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文 查看全部
querylist采集微信公眾號文章(微信公眾號開(kāi)發(fā)之VS遠程調試(二)(組圖))
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程

推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題


作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
微信支付教程系列公眾號支付


作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)的Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信支付教程系列現金紅包


作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)的Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId


作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答


作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪


作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號中獲取用戶(hù)的地理位置需要一個(gè)js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
史上最全的Android文章精選合集


作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容


作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文
querylist采集微信公眾號文章(為什么你的App會(huì )卡頓-Android-掘金Cover(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 178 次瀏覽 ? 2022-03-25 01:02
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程
推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
史上最全的Android文章精選合集
作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答
作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪
作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、獲取用戶(hù)在微信公眾號的地理位置需要js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題
作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId
作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容
作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文
微信支付教程系列現金紅包
作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)由微信公眾號授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)站可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)的
閱讀全文
微信支付教程系列公眾號支付
作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)由微信公眾號授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)站可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)的
閱讀全文 查看全部
querylist采集微信公眾號文章(為什么你的App會(huì )卡頓-Android-掘金Cover(組圖))
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程

推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
史上最全的Android文章精選合集


作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答


作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪


作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、獲取用戶(hù)在微信公眾號的地理位置需要js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題


作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId


作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容


作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文
微信支付教程系列現金紅包


作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)由微信公眾號授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)站可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)的
閱讀全文
微信支付教程系列公眾號支付


作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)由微信公眾號授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)站可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)的
閱讀全文
querylist采集微信公眾號文章(如何獲取微信公眾號所有文章?ID與開(kāi)發(fā)者密碼)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 454 次瀏覽 ? 2022-03-24 00:24
導出所有公眾號文章
隨著(zhù)互聯(lián)網(wǎng)的不斷發(fā)展,互聯(lián)網(wǎng)上出現了許多自媒體平臺。不用說(shuō),相信大家都知道現在哪些平臺很火。
可以說(shuō),所有知名的自媒體都有自己的公眾號。然而,平臺的創(chuàng )新和涌現可謂是層出不窮。如果需要在平臺上直播,則必須獲取原平臺的歷史資源。
例如,對于微信公眾號,我們需要獲取微信公眾號的文章。導出后,我們可以在其他平臺上查看。那么如何獲取我們公眾號下的所有文章呢?
開(kāi)發(fā)者 ID 和開(kāi)發(fā)者密碼
其實(shí)公眾號為我們的開(kāi)發(fā)提供了一個(gè)非常友好的界面,我們可以得到文章的所有鏈接,而不需要一一抓取。
如上圖,我們需要進(jìn)入公眾號主頁(yè),然后通過(guò)設置與開(kāi)發(fā)-基礎配置找到開(kāi)發(fā)者ID和開(kāi)發(fā)者密碼。
因為微信為我們提供了一個(gè)專(zhuān)門(mén)為我們獲取公眾號文章的接口,具體接口URL如下代碼所示:
https://api.weixin.qq.com/cgi- ... ECRET
這里的APPID是開(kāi)發(fā)中的ID,APPSECRET是開(kāi)發(fā)者密碼,獲取方式如下圖。
但是,有一個(gè)IP白名需要注意。為了公眾號文章的安全,必須設置IP地址才能獲取。如果后面的代碼不在IP下運行,肯定會(huì )報錯。
如上圖所示,IP白名單就是直接設置你的IP地址。設置完成后點(diǎn)擊修改,彈出二維碼,用微信掃描即可。
https://api.weixin.qq.com/cgi- ... en%3D
這還不夠,因為URL接口只獲取access_token,也就是訪(fǎng)問(wèn)公眾號的token,獲取公眾號的鏈接文章就是上面那個(gè)。
獲取Json格式的公眾號文章信息
現在我們對原理有了基本的了解,下面我們通過(guò)實(shí)戰來(lái)獲取文章的所有公眾號標題、鏈接、描述、展示圖片。一個(gè)例子如下:
import requests
import json
import csv
def getGZHJson(appid, secret):
path = " https://api.weixin.qq.com/cgi- ... ot%3B
url = path + "&appid=" + appid + "&secret=" + secret
result = requests.get(url)
token = json.loads(result.text)
access_token = token["access_token"]
data = {
"type": "news",
"offset": 0,
"count": 1,
}
headers = {
"content-type": "application/json",
"Accept-Language": "zh-CN,zh;q=0.9"
}
url = "https://api.weixin.qq.com/cgi- ... ot%3B + access_token
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
count = int(result["total_count"])
gzh_dict = {"news_item": []}
for i in range(0, count):
data["offset"] = i
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
for item in result["item"][0]["content"]["news_item"]:
temp_dict = {}
temp_dict["title"] = item["title"]
temp_dict["digest"] = item["digest"]
temp_dict["url"] = item["url"]
temp_dict["thumb_url"] = item["thumb_url"]
print(temp_dict)
gzh_dict["news_item"].append(temp_dict)
return json.dumps(gzh_dict)
getGZHJson("開(kāi)發(fā)者ID", "開(kāi)發(fā)者密碼")
這里,我們看一下結果的原創(chuàng )文本數據,如下:
在原創(chuàng )的JSON數據中,有一個(gè)非常重要的數據就是total_count,它是公眾號成立以來(lái)的推送次數。
不過(guò)需要注意的是,公眾號可以一次推送一篇文章,也可以一次推送2、3、4篇文章,并不總是一樣的。
至于獲取哪些推送數據,可以通過(guò)offset追溯到源頭。至于每次有多少篇文章,需要確定返回多少Json數據news_item。如下所示:
因此,我們還為其添加了遍歷。第一層遍歷是微信公眾號推送當天的數據,第二層遍歷是當天發(fā)送的文章數。運行后效果如下:
參數含義
標題
文章標題
消化
文章說(shuō)明
網(wǎng)址
文章鏈接
拇指網(wǎng)址
文章顯示地圖
將數據保存到 CSV 文件
當然,我們獲取的數據并不是在控制臺上打印出來(lái),而是導出數據。因此,我們將上述數據打包成 CSV 文件并保存。
一個(gè)例子如下:
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
print(result.encoding)
result = json.loads(result.text)
count = int(result["total_count"])
#替換下面的代碼
ulist = ["_id", "title", "digest", "url", "thumb_url"]
# 保存數據到csv文件
new_item_csv = "week"
with open("{}.csv".format(new_item_csv), "w", encoding="utf-8-sig", newline="") as f:
writer = csv.writer(f, dialect="excel")
writer.writerow(ulist)
for i in range(0, count):
data["offset"] = i
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
for item in result["item"][0]["content"]["news_item"]:
writer.writerow([count_id, item["title"], item["digest"], item["url"], item["thumb_url"]])
count_id += 1
這里只需要更改代碼count = int(result['total_count"])下面的所有數據即可。上面的代碼保持不變。
需要注意的是,之所以設置result.encoding = result.apparent_encoding,是因為我們事先并不知道返回數據的編碼。這確保了可以有效地解析任何編碼。
運行后如下圖,公眾號文章的所有基本信息都已獲取。
這是文章關(guān)于使用Python獲取公眾號下所有文章的介紹。更多關(guān)于Python獲取公眾號文章的信息,請搜索上一期服務(wù)器首頁(yè)文章或繼續瀏覽以下相關(guān)文章希望大家多多支持服務(wù)器首頁(yè)未來(lái)!
原文鏈接: 查看全部
querylist采集微信公眾號文章(如何獲取微信公眾號所有文章?ID與開(kāi)發(fā)者密碼)
導出所有公眾號文章
隨著(zhù)互聯(lián)網(wǎng)的不斷發(fā)展,互聯(lián)網(wǎng)上出現了許多自媒體平臺。不用說(shuō),相信大家都知道現在哪些平臺很火。
可以說(shuō),所有知名的自媒體都有自己的公眾號。然而,平臺的創(chuàng )新和涌現可謂是層出不窮。如果需要在平臺上直播,則必須獲取原平臺的歷史資源。
例如,對于微信公眾號,我們需要獲取微信公眾號的文章。導出后,我們可以在其他平臺上查看。那么如何獲取我們公眾號下的所有文章呢?
開(kāi)發(fā)者 ID 和開(kāi)發(fā)者密碼
其實(shí)公眾號為我們的開(kāi)發(fā)提供了一個(gè)非常友好的界面,我們可以得到文章的所有鏈接,而不需要一一抓取。

如上圖,我們需要進(jìn)入公眾號主頁(yè),然后通過(guò)設置與開(kāi)發(fā)-基礎配置找到開(kāi)發(fā)者ID和開(kāi)發(fā)者密碼。
因為微信為我們提供了一個(gè)專(zhuān)門(mén)為我們獲取公眾號文章的接口,具體接口URL如下代碼所示:
https://api.weixin.qq.com/cgi- ... ECRET
這里的APPID是開(kāi)發(fā)中的ID,APPSECRET是開(kāi)發(fā)者密碼,獲取方式如下圖。

但是,有一個(gè)IP白名需要注意。為了公眾號文章的安全,必須設置IP地址才能獲取。如果后面的代碼不在IP下運行,肯定會(huì )報錯。

如上圖所示,IP白名單就是直接設置你的IP地址。設置完成后點(diǎn)擊修改,彈出二維碼,用微信掃描即可。
https://api.weixin.qq.com/cgi- ... en%3D
這還不夠,因為URL接口只獲取access_token,也就是訪(fǎng)問(wèn)公眾號的token,獲取公眾號的鏈接文章就是上面那個(gè)。
獲取Json格式的公眾號文章信息
現在我們對原理有了基本的了解,下面我們通過(guò)實(shí)戰來(lái)獲取文章的所有公眾號標題、鏈接、描述、展示圖片。一個(gè)例子如下:
import requests
import json
import csv
def getGZHJson(appid, secret):
path = " https://api.weixin.qq.com/cgi- ... ot%3B
url = path + "&appid=" + appid + "&secret=" + secret
result = requests.get(url)
token = json.loads(result.text)
access_token = token["access_token"]
data = {
"type": "news",
"offset": 0,
"count": 1,
}
headers = {
"content-type": "application/json",
"Accept-Language": "zh-CN,zh;q=0.9"
}
url = "https://api.weixin.qq.com/cgi- ... ot%3B + access_token
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
count = int(result["total_count"])
gzh_dict = {"news_item": []}
for i in range(0, count):
data["offset"] = i
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
for item in result["item"][0]["content"]["news_item"]:
temp_dict = {}
temp_dict["title"] = item["title"]
temp_dict["digest"] = item["digest"]
temp_dict["url"] = item["url"]
temp_dict["thumb_url"] = item["thumb_url"]
print(temp_dict)
gzh_dict["news_item"].append(temp_dict)
return json.dumps(gzh_dict)
getGZHJson("開(kāi)發(fā)者ID", "開(kāi)發(fā)者密碼")
這里,我們看一下結果的原創(chuàng )文本數據,如下:

在原創(chuàng )的JSON數據中,有一個(gè)非常重要的數據就是total_count,它是公眾號成立以來(lái)的推送次數。
不過(guò)需要注意的是,公眾號可以一次推送一篇文章,也可以一次推送2、3、4篇文章,并不總是一樣的。
至于獲取哪些推送數據,可以通過(guò)offset追溯到源頭。至于每次有多少篇文章,需要確定返回多少Json數據news_item。如下所示:

因此,我們還為其添加了遍歷。第一層遍歷是微信公眾號推送當天的數據,第二層遍歷是當天發(fā)送的文章數。運行后效果如下:

參數含義
標題
文章標題
消化
文章說(shuō)明
網(wǎng)址
文章鏈接
拇指網(wǎng)址
文章顯示地圖
將數據保存到 CSV 文件
當然,我們獲取的數據并不是在控制臺上打印出來(lái),而是導出數據。因此,我們將上述數據打包成 CSV 文件并保存。
一個(gè)例子如下:
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
print(result.encoding)
result = json.loads(result.text)
count = int(result["total_count"])
#替換下面的代碼
ulist = ["_id", "title", "digest", "url", "thumb_url"]
# 保存數據到csv文件
new_item_csv = "week"
with open("{}.csv".format(new_item_csv), "w", encoding="utf-8-sig", newline="") as f:
writer = csv.writer(f, dialect="excel")
writer.writerow(ulist)
for i in range(0, count):
data["offset"] = i
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
for item in result["item"][0]["content"]["news_item"]:
writer.writerow([count_id, item["title"], item["digest"], item["url"], item["thumb_url"]])
count_id += 1
這里只需要更改代碼count = int(result['total_count"])下面的所有數據即可。上面的代碼保持不變。
需要注意的是,之所以設置result.encoding = result.apparent_encoding,是因為我們事先并不知道返回數據的編碼。這確保了可以有效地解析任何編碼。
運行后如下圖,公眾號文章的所有基本信息都已獲取。

這是文章關(guān)于使用Python獲取公眾號下所有文章的介紹。更多關(guān)于Python獲取公眾號文章的信息,請搜索上一期服務(wù)器首頁(yè)文章或繼續瀏覽以下相關(guān)文章希望大家多多支持服務(wù)器首頁(yè)未來(lái)!
原文鏈接:
querylist采集微信公眾號文章(querylist采集微信公眾號文章、應用二維碼,整體測試代碼)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 185 次瀏覽 ? 2022-03-23 02:01
querylist采集微信公眾號文章、應用二維碼。詳細介紹可以看下我的這篇文章,關(guān)于querylist的實(shí)現方式,支持二維碼,整體測試代碼如下:這里有我寫(xiě)的一篇基于mongodb的react+redux+egg-router做應用二維碼+微信公眾號的開(kāi)發(fā)文章,對于微信二維碼本身的處理寫(xiě)的比較深入,有興趣的朋友可以去看看。querylist二維碼解析demo:querylist。
二維碼的二維碼基本是不能復制的,需要生成二維碼的時(shí)候進(jìn)行config屬性配置防止復制。ios開(kāi)發(fā)者可以直接在ios文件中配置imf,partialiftrim('2'){fragmentid='0307';trim('\'');}即可進(jìn)行復制。二維碼的生成看到有人推薦用postman,但我覺(jué)得這個(gè)方法不靠譜,其他語(yǔ)言不了解。
第一次看見(jiàn)可以提交的方式。
mgstyle二維碼具體哪里查看這個(gè)吧,不太好說(shuō),
recode不知道這個(gè)
step1。在github上面關(guān)注一下uenocloud的項目fogu-zhang/querylist·githubstep2。打開(kāi)項目查看幫助step3。查看源碼,方便第三方同學(xué)第一次接觸二維碼然后再修改你需要的代碼step4。交互中step5。step6。step7。第三方的同學(xué)github上面提交代碼step8。
還可以在本地瀏覽github上面這個(gè)項目step9。完成以上步驟也可以在本地搭建二維碼服務(wù)那么一起看看我自己發(fā)的項目,一個(gè)博客應用的項目querylist。 查看全部
querylist采集微信公眾號文章(querylist采集微信公眾號文章、應用二維碼,整體測試代碼)
querylist采集微信公眾號文章、應用二維碼。詳細介紹可以看下我的這篇文章,關(guān)于querylist的實(shí)現方式,支持二維碼,整體測試代碼如下:這里有我寫(xiě)的一篇基于mongodb的react+redux+egg-router做應用二維碼+微信公眾號的開(kāi)發(fā)文章,對于微信二維碼本身的處理寫(xiě)的比較深入,有興趣的朋友可以去看看。querylist二維碼解析demo:querylist。
二維碼的二維碼基本是不能復制的,需要生成二維碼的時(shí)候進(jìn)行config屬性配置防止復制。ios開(kāi)發(fā)者可以直接在ios文件中配置imf,partialiftrim('2'){fragmentid='0307';trim('\'');}即可進(jìn)行復制。二維碼的生成看到有人推薦用postman,但我覺(jué)得這個(gè)方法不靠譜,其他語(yǔ)言不了解。
第一次看見(jiàn)可以提交的方式。
mgstyle二維碼具體哪里查看這個(gè)吧,不太好說(shuō),
recode不知道這個(gè)
step1。在github上面關(guān)注一下uenocloud的項目fogu-zhang/querylist·githubstep2。打開(kāi)項目查看幫助step3。查看源碼,方便第三方同學(xué)第一次接觸二維碼然后再修改你需要的代碼step4。交互中step5。step6。step7。第三方的同學(xué)github上面提交代碼step8。
還可以在本地瀏覽github上面這個(gè)項目step9。完成以上步驟也可以在本地搭建二維碼服務(wù)那么一起看看我自己發(fā)的項目,一個(gè)博客應用的項目querylist。
querylist采集微信公眾號文章(有哪些高質(zhì)量的微信公眾號文章推送的鏈接?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 109 次瀏覽 ? 2022-03-21 14:08
querylist采集微信公眾號文章推送的鏈接,使用google的googleanalytics,谷歌搜索抓取,traversableviavideo返回公眾號鏈接。querylist還可以批量下載文章下載二維碼,公眾號的文章,可以直接獲取下載二維碼。
技術(shù)牛人多回復分享更多干貨!看到一篇和我想法很相似的文章
vitess,weixindisallowit。formerweixinallowssharingwechatcontenttoattributebyyourown。copyrightrightsownerexists。excludegainstitute'svideorecordingfoundationproduct;contentmissingintheweixindisallowsvideorecordingonpublicsafety。
有哪些高質(zhì)量的微信公眾號文章推送,能夠一鍵直達微信群?-mr彭的回答提供了從微信公眾號源文件下載、開(kāi)源微信小程序之類(lèi)的。
有木有,保存本文章,然后共享,
百度文庫免費下載百度文庫也提供網(wǎng)盤(pán)的下載
豬八戒上面有客一鍵下單的??梢試L試一下。
技術(shù)牛人多回復分享更多干貨!看到一篇和我想法很相似的文章,希望對你有幫助。
考試官網(wǎng),免費題庫,由中國大學(xué)mooc的engineercenter提供。其中浙江大學(xué)的課程比較全,人教,浙大的都有,其他的不用考慮了。 查看全部
querylist采集微信公眾號文章(有哪些高質(zhì)量的微信公眾號文章推送的鏈接?)
querylist采集微信公眾號文章推送的鏈接,使用google的googleanalytics,谷歌搜索抓取,traversableviavideo返回公眾號鏈接。querylist還可以批量下載文章下載二維碼,公眾號的文章,可以直接獲取下載二維碼。
技術(shù)牛人多回復分享更多干貨!看到一篇和我想法很相似的文章
vitess,weixindisallowit。formerweixinallowssharingwechatcontenttoattributebyyourown。copyrightrightsownerexists。excludegainstitute'svideorecordingfoundationproduct;contentmissingintheweixindisallowsvideorecordingonpublicsafety。
有哪些高質(zhì)量的微信公眾號文章推送,能夠一鍵直達微信群?-mr彭的回答提供了從微信公眾號源文件下載、開(kāi)源微信小程序之類(lèi)的。
有木有,保存本文章,然后共享,
百度文庫免費下載百度文庫也提供網(wǎng)盤(pán)的下載
豬八戒上面有客一鍵下單的??梢試L試一下。
技術(shù)牛人多回復分享更多干貨!看到一篇和我想法很相似的文章,希望對你有幫助。
考試官網(wǎng),免費題庫,由中國大學(xué)mooc的engineercenter提供。其中浙江大學(xué)的課程比較全,人教,浙大的都有,其他的不用考慮了。
querylist采集微信公眾號文章(微信公眾號開(kāi)發(fā)之VS遠程調試(二)(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 166 次瀏覽 ? 2022-03-20 09:03
阿里巴巴云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程
推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)主題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
【044】微信公眾平臺開(kāi)發(fā)教程第20章-初學(xué)者40題
作者:云啟希望。 2102人查看評論數:04年前
作者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,接觸了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,作者將這些問(wèn)題和答案放在一起,將幫助許多其他剛起步的人少走彎路。 1、訂閱帳號和服務(wù)帳號的主要區別是什么?
閱讀全文
微信支付教程系列公眾號支付
作者:micahel1202 查看評論:03 年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)四)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)
閱讀全文
微信支付教程系列現金紅包
作者:micahel1530 查看評論:03 年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)四)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId
作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年對微信支付、小程序支付、支付寶應用支付、云閃付應用支付的研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以我想寫(xiě)個(gè)記錄,這樣以后遇到微信相關(guān)的API調用,就不用那么久了
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答
作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql,可以在網(wǎng)上找對應的教程了解大致的語(yǔ)法,但不要深入。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪
作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號獲取用戶(hù)地理位置需要js-sdk簽名包(文檔獲取方法有介紹)2、根據獲取地理位置,ajax去后臺請求,通過(guò)sql語(yǔ)句,在查詢(xún)中查詢(xún)最近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、根據店鋪列表查詢(xún)到市區,通過(guò)
閱讀全文
最全的安卓文章合集
作者:android飛魚(yú)2557人查看評論:03年前
告訴你兩張圖,為什么你的應用會(huì )死機? - Android - 掘金隊的封面是什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎? ... Android 獲取 View 寬度和高度的常見(jiàn)正確方法
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容
作者:thinkyoung1544 瀏覽評論:06年前
過(guò)去,Java Jsoup 用于捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。 QueryList 基于 phpQ
閱讀全文 查看全部
querylist采集微信公眾號文章(微信公眾號開(kāi)發(fā)之VS遠程調試(二)(組圖))
阿里巴巴云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程

推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)主題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
【044】微信公眾平臺開(kāi)發(fā)教程第20章-初學(xué)者40題


作者:云啟希望。 2102人查看評論數:04年前
作者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,接觸了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,作者將這些問(wèn)題和答案放在一起,將幫助許多其他剛起步的人少走彎路。 1、訂閱帳號和服務(wù)帳號的主要區別是什么?
閱讀全文
微信支付教程系列公眾號支付


作者:micahel1202 查看評論:03 年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)四)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)
閱讀全文
微信支付教程系列現金紅包


作者:micahel1530 查看評論:03 年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)四)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId


作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年對微信支付、小程序支付、支付寶應用支付、云閃付應用支付的研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以我想寫(xiě)個(gè)記錄,這樣以后遇到微信相關(guān)的API調用,就不用那么久了
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答


作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql,可以在網(wǎng)上找對應的教程了解大致的語(yǔ)法,但不要深入。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪


作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號獲取用戶(hù)地理位置需要js-sdk簽名包(文檔獲取方法有介紹)2、根據獲取地理位置,ajax去后臺請求,通過(guò)sql語(yǔ)句,在查詢(xún)中查詢(xún)最近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、根據店鋪列表查詢(xún)到市區,通過(guò)
閱讀全文
最全的安卓文章合集


作者:android飛魚(yú)2557人查看評論:03年前
告訴你兩張圖,為什么你的應用會(huì )死機? - Android - 掘金隊的封面是什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎? ... Android 獲取 View 寬度和高度的常見(jiàn)正確方法
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容


作者:thinkyoung1544 瀏覽評論:06年前
過(guò)去,Java Jsoup 用于捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。 QueryList 基于 phpQ
閱讀全文
querylist采集微信公眾號文章(querylist采集微信公眾號文章,去重后傳給es然后用轉換為txt格式)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 186 次瀏覽 ? 2022-03-17 16:01
querylist采集微信公眾號文章,去重后傳給es,然后用es轉換為txt格式,然后相應的token會(huì )傳到querylist上,下次查詢(xún)可以不重復用token查詢(xún),查詢(xún)時(shí)直接用querylist查詢(xún)即可。
想要token等價(jià)于queryid的話(huà),可以用如下python庫:apiversion:v1appgametype:pygameversion:1。5supportedsuggestion:truetargetpath:android:entity。querystringaccessname:truecrawledurl:data。
querystring。contentspath@apiversion:android。view。adaptor。adaptorappname:app。myappkey:app。properties。active_account:app。entity。querystringcontentspath::data。querystring。
請參照我的系列文章-querylist是什么?-querylist-encodebox.html
從第一篇文章里引用過(guò)來(lái)的token可以進(jìn)行key存儲和encode模式處理,encode模式基本就是是用key來(lái)表示query,再用json或者類(lèi)似的格式存儲至于上面有同學(xué)說(shuō)的利用json來(lái)存儲query,是沒(méi)有問(wèn)題的,但是json格式有許多問(wèn)題,并不好于數據庫的列式存儲格式如下jsoncached的工作是:獲取數據-解析json-存儲數據最終的處理流程:客戶(hù)端從本地拉取原始jsonjsoncached解析jsonjsoncached和jsonbuffer這個(gè)不是數據庫里的,但是有相同的特性,那就是用大量的key來(lái)存儲query。 查看全部
querylist采集微信公眾號文章(querylist采集微信公眾號文章,去重后傳給es然后用轉換為txt格式)
querylist采集微信公眾號文章,去重后傳給es,然后用es轉換為txt格式,然后相應的token會(huì )傳到querylist上,下次查詢(xún)可以不重復用token查詢(xún),查詢(xún)時(shí)直接用querylist查詢(xún)即可。
想要token等價(jià)于queryid的話(huà),可以用如下python庫:apiversion:v1appgametype:pygameversion:1。5supportedsuggestion:truetargetpath:android:entity。querystringaccessname:truecrawledurl:data。
querystring。contentspath@apiversion:android。view。adaptor。adaptorappname:app。myappkey:app。properties。active_account:app。entity。querystringcontentspath::data。querystring。
請參照我的系列文章-querylist是什么?-querylist-encodebox.html
從第一篇文章里引用過(guò)來(lái)的token可以進(jìn)行key存儲和encode模式處理,encode模式基本就是是用key來(lái)表示query,再用json或者類(lèi)似的格式存儲至于上面有同學(xué)說(shuō)的利用json來(lái)存儲query,是沒(méi)有問(wèn)題的,但是json格式有許多問(wèn)題,并不好于數據庫的列式存儲格式如下jsoncached的工作是:獲取數據-解析json-存儲數據最終的處理流程:客戶(hù)端從本地拉取原始jsonjsoncached解析jsonjsoncached和jsonbuffer這個(gè)不是數據庫里的,但是有相同的特性,那就是用大量的key來(lái)存儲query。
querylist采集微信公眾號文章(WordPress采集插件蜜蜂采集BeePress破解安裝教程)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 867 次瀏覽 ? 2022-03-16 21:12
WordPress采集插件蜜蜂采集BeePress
“小蜜蜂-BeePress”是一個(gè)微信公眾號文章導入插件。通過(guò)粘貼公眾號文章的鏈接,可以一鍵導入公眾號文章到自己的網(wǎng)站,支持批量導入、自動(dòng)采集、設置特色圖片等功能,減少繁瑣操作。
最新版本已支持知乎欄目文章、簡(jiǎn)書(shū)文章、今日頭條的導入
WordPress采集Plugin Bee采集BeePress 安裝
進(jìn)入WordPress管理后臺,選擇安裝插件,搜索bees采集
也可以直接從WordPress官網(wǎng)下載,下載鏈接
下載后解壓到插件目錄
WordPress采集插件Bee采集BeePress專(zhuān)業(yè)版破解
安裝完成后,左側會(huì )出現“專(zhuān)業(yè)版”和“基礎版”。專(zhuān)業(yè)版功能更強大,但僅提供 5 次試用。完成次數后,需要以人民幣購買(mǎi)。(本教程僅供技術(shù)經(jīng)驗分享,部署網(wǎng)站時(shí)請支持原創(chuàng )原版)
使用數據庫管理工具,這里以phpMyadmin為例。
選擇 wp_options 數據表,找到 bp_count 字段
將 option_value 值從 5 更改為任意值
破解成功
如果沒(méi)有可視化數據庫管理工具,也可以直接使用sql命令執行修改,
更新 wp_options SET option_value = 99999 WHERE option_name = 'bp_count';
這里的破解只是增加試用次數,達到專(zhuān)業(yè)版無(wú)限次使用的效果。如需正常使用授權,請聯(lián)系作者購買(mǎi)正版插件。
原創(chuàng )文章,作者:dongdongxiao,如轉載請注明出處: 查看全部
querylist采集微信公眾號文章(WordPress采集插件蜜蜂采集BeePress破解安裝教程)
WordPress采集插件蜜蜂采集BeePress
“小蜜蜂-BeePress”是一個(gè)微信公眾號文章導入插件。通過(guò)粘貼公眾號文章的鏈接,可以一鍵導入公眾號文章到自己的網(wǎng)站,支持批量導入、自動(dòng)采集、設置特色圖片等功能,減少繁瑣操作。
最新版本已支持知乎欄目文章、簡(jiǎn)書(shū)文章、今日頭條的導入
WordPress采集Plugin Bee采集BeePress 安裝
進(jìn)入WordPress管理后臺,選擇安裝插件,搜索bees采集

也可以直接從WordPress官網(wǎng)下載,下載鏈接
下載后解壓到插件目錄

WordPress采集插件Bee采集BeePress專(zhuān)業(yè)版破解
安裝完成后,左側會(huì )出現“專(zhuān)業(yè)版”和“基礎版”。專(zhuān)業(yè)版功能更強大,但僅提供 5 次試用。完成次數后,需要以人民幣購買(mǎi)。(本教程僅供技術(shù)經(jīng)驗分享,部署網(wǎng)站時(shí)請支持原創(chuàng )原版)

使用數據庫管理工具,這里以phpMyadmin為例。
選擇 wp_options 數據表,找到 bp_count 字段

將 option_value 值從 5 更改為任意值

破解成功

如果沒(méi)有可視化數據庫管理工具,也可以直接使用sql命令執行修改,
更新 wp_options SET option_value = 99999 WHERE option_name = 'bp_count';
這里的破解只是增加試用次數,達到專(zhuān)業(yè)版無(wú)限次使用的效果。如需正常使用授權,請聯(lián)系作者購買(mǎi)正版插件。
原創(chuàng )文章,作者:dongdongxiao,如轉載請注明出處:
querylist采集微信公眾號文章(import_module采集模塊實(shí)現公眾號文章的入口邏輯)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 159 次瀏覽 ? 2022-03-15 22:14
因為采集器有兩種不同的實(shí)現方式,ruia和playwright,使用哪一種由配置文件決定,然后通過(guò)import_module方法動(dòng)態(tài)導入對應的模塊,然后運行模塊的run方法,從而實(shí)現文章的公眾號 bool:
"""
采集器工廠(chǎng)函數
:param collect_type: 采集器類(lèi)型
:param collect_config: 采集器配置
:return:
"""
collect_status = False
try:
# import_module方法動(dòng)態(tài)載入具體的采集模塊
collect_module = import_module(f"src.collector.{collect_type}")
collect_status = collect_module.run(collect_config)
except ModuleNotFoundError:
LOGGER.error(f"采集器類(lèi)型不存在 {collect_type} - {collect_config}")
except Exception as e:
LOGGER.error(f"采集器執行出錯 {collect_type} - {collect_config} - {e}")
return collect_status
編劇采集模塊實(shí)現
Playwright 是微軟出品的自動(dòng)化庫。它類(lèi)似于硒。它定位于網(wǎng)頁(yè)測試,但也被人們用來(lái)獲取網(wǎng)頁(yè)信息。當然,一些前端的反爬措施,編劇是無(wú)法突破的。
與selenium相比,playwright支持python的async,性能有所提升(但還是比不上直接請求)。下面是獲取公眾號下最新= cos_value else 0
max_pro = value if value > max_pro else max_pro
if result == 1:
break
return {"result": result, "value": max_pro}
?
<p>余弦值的具體操作邏輯在CosineSimilarity的calculate方法中,都是和數學(xué)有關(guān)的,我就不看了。核心是判斷當前 查看全部
querylist采集微信公眾號文章(import_module采集模塊實(shí)現公眾號文章的入口邏輯)
因為采集器有兩種不同的實(shí)現方式,ruia和playwright,使用哪一種由配置文件決定,然后通過(guò)import_module方法動(dòng)態(tài)導入對應的模塊,然后運行模塊的run方法,從而實(shí)現文章的公眾號 bool:
"""
采集器工廠(chǎng)函數
:param collect_type: 采集器類(lèi)型
:param collect_config: 采集器配置
:return:
"""
collect_status = False
try:
# import_module方法動(dòng)態(tài)載入具體的采集模塊
collect_module = import_module(f"src.collector.{collect_type}")
collect_status = collect_module.run(collect_config)
except ModuleNotFoundError:
LOGGER.error(f"采集器類(lèi)型不存在 {collect_type} - {collect_config}")
except Exception as e:
LOGGER.error(f"采集器執行出錯 {collect_type} - {collect_config} - {e}")
return collect_status
編劇采集模塊實(shí)現
Playwright 是微軟出品的自動(dòng)化庫。它類(lèi)似于硒。它定位于網(wǎng)頁(yè)測試,但也被人們用來(lái)獲取網(wǎng)頁(yè)信息。當然,一些前端的反爬措施,編劇是無(wú)法突破的。
與selenium相比,playwright支持python的async,性能有所提升(但還是比不上直接請求)。下面是獲取公眾號下最新= cos_value else 0
max_pro = value if value > max_pro else max_pro
if result == 1:
break
return {"result": result, "value": max_pro}
?
<p>余弦值的具體操作邏輯在CosineSimilarity的calculate方法中,都是和數學(xué)有關(guān)的,我就不看了。核心是判斷當前
querylist采集微信公眾號文章(爬取大牛用微信公眾號爬取程序的難點(diǎn)及解決辦法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2022-03-15 03:10
最近需要爬取微信公眾號的文章信息。我在網(wǎng)上搜索,發(fā)現爬取微信公眾號的難點(diǎn)在于公眾號文章的鏈接在PC端打不開(kāi),所以需要使用微信自帶的瀏覽器(獲取參數微信客戶(hù)端補充)可以在其他平臺打開(kāi)),給爬蟲(chóng)帶來(lái)了很大的麻煩。后來(lái)在知乎上看到了一個(gè)大牛用php寫(xiě)的微信公眾號爬蟲(chóng)程序,直接按照大佬的思路做成了java。改造過(guò)程中遇到了很多細節和問(wèn)題,就分享給大家。
附上大牛的鏈接文章:寫(xiě)php或者只需要爬取思路的可以直接看這個(gè)。這些想法寫(xiě)得很詳細。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------
系統的基本思路是在A(yíng)ndroid模擬器上運行微信,在模擬器上設置代理,通過(guò)代理服務(wù)器截取微信數據,將獲取到的數據發(fā)送給自己的程序進(jìn)行處理。
需要準備的環(huán)境:nodejs、anyproxy代理、安卓模擬器
Nodejs下載地址:我下載的是windows版本的,直接安裝就好了。安裝后直接運行 C:\Program Files\nodejs\npm.cmd 會(huì )自動(dòng)配置環(huán)境。
anyproxy 安裝:按照上一步安裝nodejs后,直接在cmd中運行npm install -g anyproxy即可安裝
網(wǎng)上的安卓模擬器就好了,有很多。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------
首先安裝代理服務(wù)器的證書(shū)。Anyproxy 默認不解析 https 鏈接。安裝證書(shū)后,就可以解析了。在cmd中執行anyproxy --root安裝證書(shū),然后在模擬器中下載證書(shū)。
然后輸入anyproxy -i 命令打開(kāi)代理服務(wù)。(記得添加參數?。?br />
記住這個(gè)ip和端口,那么安卓模擬器的代理就會(huì )用到這個(gè)?,F在用瀏覽器打開(kāi)網(wǎng)頁(yè)::8002/ 這是anyproxy的網(wǎng)頁(yè)界面,用來(lái)顯示http傳輸的數據。
點(diǎn)擊上方紅框中的菜單,會(huì )出現一個(gè)二維碼。用安卓模擬器掃碼識別。模擬器(手機)會(huì )下載證書(shū)并安裝。
現在準備為模擬器設置代理,代理模式設置為手動(dòng),代理ip為運行anyproxy的機器的ip,端口為8001
準備工作到這里基本完成。在模擬器上打開(kāi)微信,打開(kāi)一個(gè)公眾號的文章,可以從剛剛打開(kāi)的web界面看到anyproxy抓取的數據:
上圖紅框是微信文章的鏈接,點(diǎn)擊查看具體數據。如果響應正文中沒(méi)有任何內容,則可能是證書(shū)安裝有問(wèn)題。
如果頂部清晰,您可以向下。
這里我們依靠代理服務(wù)抓取微信數據,但是我們不能抓取一條數據自己操作微信,所以還是手動(dòng)復制比較好。所以我們需要微信客戶(hù)端自己跳轉到頁(yè)面。這時(shí)可以使用anyproxy攔截微信服務(wù)器返回的數據,將頁(yè)面跳轉代碼注入其中,然后將處理后的數據返回給模擬器,實(shí)現微信客戶(hù)端的自動(dòng)跳轉。
在anyproxy中打開(kāi)一個(gè)名為rule_default.js的js文件,windows下的文件為:C:\Users\Administrator\AppData\Roaming\npm\node_modules\anyproxy\lib
文件中有一個(gè)方法叫做replaceServerResDataAsync: function(req,res,serverResData,callback)。該方法負責對anyproxy獲取的數據進(jìn)行各種操作。開(kāi)頭應該只有 callback(serverResData) ;該語(yǔ)句的意思是直接將服務(wù)器響應數據返回給客戶(hù)端。直接把這條語(yǔ)句刪掉,換成下面大牛寫(xiě)的代碼。我這里的代碼沒(méi)有做任何改動(dòng),里面的注釋也很清楚。順著(zhù)邏輯去理解就行了,問(wèn)題不大。
1 replaceServerResDataAsync: function(req,res,serverResData,callback){
2 if(/mp\/getmasssendmsg/i.test(req.url)){//當鏈接地址為公眾號歷史消息頁(yè)面時(shí)(第一種頁(yè)面形式)
3 //console.log("開(kāi)始第一種頁(yè)面爬取");
4 if(serverResData.toString() !== ""){
5 6 try {//防止報錯退出程序
7 var reg = /msgList = (.*?);/;//定義歷史消息正則匹配規則
8 var ret = reg.exec(serverResData.toString());//轉換變量為string
9 HttpPost(ret[1],req.url,"/InternetSpider/getData/showBiz");//這個(gè)函數是后文定義的,將匹配到的歷史消息json發(fā)送到自己的服務(wù)器
10 var http = require('http');
11 http.get('http://xxx/getWxHis', function(res) {//這個(gè)地址是自己服務(wù)器上的一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxHis.php的原理。
12 res.on('data', function(chunk){
13 callback(chunk+serverResData);//將返回的代碼插入到歷史消息頁(yè)面中,并返回顯示出來(lái)
14 })
15 });
16 }catch(e){//如果上面的正則沒(méi)有匹配到,那么這個(gè)頁(yè)面內容可能是公眾號歷史消息頁(yè)面向下翻動(dòng)的第二頁(yè),因為歷史消息第一頁(yè)是html格式的,第二頁(yè)就是json格式的。
17 //console.log("開(kāi)始第一種頁(yè)面爬取向下翻形式");
18 try {
19 var json = JSON.parse(serverResData.toString());
20 if (json.general_msg_list != []) {
21 HttpPost(json.general_msg_list,req.url,"/xxx/showBiz");//這個(gè)函數和上面的一樣是后文定義的,將第二頁(yè)歷史消息的json發(fā)送到自己的服務(wù)器
22 }
23 }catch(e){
24 console.log(e);//錯誤捕捉
25 }
26 callback(serverResData);//直接返回第二頁(yè)json內容
27 }
28 }
29 //console.log("開(kāi)始第一種頁(yè)面爬取 結束");
30 }else if(/mp\/profile_ext\?action=home/i.test(req.url)){//當鏈接地址為公眾號歷史消息頁(yè)面時(shí)(第二種頁(yè)面形式)
31 try {
32 var reg = /var msgList = \'(.*?)\';/;//定義歷史消息正則匹配規則(和第一種頁(yè)面形式的正則不同)
33 var ret = reg.exec(serverResData.toString());//轉換變量為string
34 HttpPost(ret[1],req.url,"/xxx/showBiz");//這個(gè)函數是后文定義的,將匹配到的歷史消息json發(fā)送到自己的服務(wù)器
35 var http = require('http');
36 http.get('xxx/getWxHis', function(res) {//這個(gè)地址是自己服務(wù)器上的一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxHis.php的原理。
37 res.on('data', function(chunk){
38 callback(chunk+serverResData);//將返回的代碼插入到歷史消息頁(yè)面中,并返回顯示出來(lái)
39 })
40 });
41 }catch(e){
42 //console.log(e);
43 callback(serverResData);
44 }
45 }else if(/mp\/profile_ext\?action=getmsg/i.test(req.url)){//第二種頁(yè)面表現形式的向下翻頁(yè)后的json
46 try {
47 var json = JSON.parse(serverResData.toString());
48 if (json.general_msg_list != []) {
49 HttpPost(json.general_msg_list,req.url,"/xxx/showBiz");//這個(gè)函數和上面的一樣是后文定義的,將第二頁(yè)歷史消息的json發(fā)送到自己的服務(wù)器
50 }
51 }catch(e){
52 console.log(e);
53 }
54 callback(serverResData);
55 }else if(/mp\/getappmsgext/i.test(req.url)){//當鏈接地址為公眾號文章閱讀量和點(diǎn)贊量時(shí)
56 try {
57 HttpPost(serverResData,req.url,"/xxx/getMsgExt");//函數是后文定義的,功能是將文章閱讀量點(diǎn)贊量的json發(fā)送到服務(wù)器
58 }catch(e){
59
60 }
61 callback(serverResData);
62 }else if(/s\?__biz/i.test(req.url) || /mp\/rumor/i.test(req.url)){//當鏈接地址為公眾號文章時(shí)(rumor這個(gè)地址是公眾號文章被辟謠了)
63 try {
64 var http = require('http');
65 http.get('http://xxx/getWxPost', function(res) {//這個(gè)地址是自己服務(wù)器上的另一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxPost.php的原理。
66 res.on('data', function(chunk){
67 callback(chunk+serverResData);
68 })
69 });
70 }catch(e){
71 callback(serverResData);
72 }
73 }else{
74 callback(serverResData);
75 }
76 //callback(serverResData);
77 },
這是一個(gè)簡(jiǎn)短的解釋。微信公眾號歷史新聞頁(yè)面的鏈接有兩種形式:一種以/mp/getmasssendmsg開(kāi)頭,另一種以/mp/profile_ext開(kāi)頭。歷史頁(yè)面可以向下滾動(dòng)。向下滾動(dòng)會(huì )觸發(fā)js事件發(fā)送請求獲取json數據(下一頁(yè)的內容)。還有公眾號文章的鏈接,以及文章的閱讀和點(diǎn)贊鏈接(返回json數據)。這些環(huán)節的形式是固定的,可以通過(guò)邏輯判斷加以區分。這里有個(gè)問(wèn)題,如果歷史頁(yè)面需要一路爬取怎么辦。我的想法是通過(guò)js模擬鼠標向下滑動(dòng),從而觸發(fā)提交下一部分列表的負載的請求?;蛘咧苯邮褂胊nyproxy分析下載請求,直接向微信服務(wù)器發(fā)出這個(gè)請求。但是有一個(gè)問(wèn)題是如何判斷沒(méi)有剩余數據。我正在抓取最新數據。我暫時(shí)沒(méi)有這個(gè)要求,但以后可能需要。如果需要,您可以嘗試一下。 查看全部
querylist采集微信公眾號文章(爬取大牛用微信公眾號爬取程序的難點(diǎn)及解決辦法)
最近需要爬取微信公眾號的文章信息。我在網(wǎng)上搜索,發(fā)現爬取微信公眾號的難點(diǎn)在于公眾號文章的鏈接在PC端打不開(kāi),所以需要使用微信自帶的瀏覽器(獲取參數微信客戶(hù)端補充)可以在其他平臺打開(kāi)),給爬蟲(chóng)帶來(lái)了很大的麻煩。后來(lái)在知乎上看到了一個(gè)大牛用php寫(xiě)的微信公眾號爬蟲(chóng)程序,直接按照大佬的思路做成了java。改造過(guò)程中遇到了很多細節和問(wèn)題,就分享給大家。
附上大牛的鏈接文章:寫(xiě)php或者只需要爬取思路的可以直接看這個(gè)。這些想法寫(xiě)得很詳細。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------
系統的基本思路是在A(yíng)ndroid模擬器上運行微信,在模擬器上設置代理,通過(guò)代理服務(wù)器截取微信數據,將獲取到的數據發(fā)送給自己的程序進(jìn)行處理。
需要準備的環(huán)境:nodejs、anyproxy代理、安卓模擬器
Nodejs下載地址:我下載的是windows版本的,直接安裝就好了。安裝后直接運行 C:\Program Files\nodejs\npm.cmd 會(huì )自動(dòng)配置環(huán)境。
anyproxy 安裝:按照上一步安裝nodejs后,直接在cmd中運行npm install -g anyproxy即可安裝
網(wǎng)上的安卓模擬器就好了,有很多。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------
首先安裝代理服務(wù)器的證書(shū)。Anyproxy 默認不解析 https 鏈接。安裝證書(shū)后,就可以解析了。在cmd中執行anyproxy --root安裝證書(shū),然后在模擬器中下載證書(shū)。
然后輸入anyproxy -i 命令打開(kāi)代理服務(wù)。(記得添加參數?。?br />

記住這個(gè)ip和端口,那么安卓模擬器的代理就會(huì )用到這個(gè)?,F在用瀏覽器打開(kāi)網(wǎng)頁(yè)::8002/ 這是anyproxy的網(wǎng)頁(yè)界面,用來(lái)顯示http傳輸的數據。

點(diǎn)擊上方紅框中的菜單,會(huì )出現一個(gè)二維碼。用安卓模擬器掃碼識別。模擬器(手機)會(huì )下載證書(shū)并安裝。
現在準備為模擬器設置代理,代理模式設置為手動(dòng),代理ip為運行anyproxy的機器的ip,端口為8001

準備工作到這里基本完成。在模擬器上打開(kāi)微信,打開(kāi)一個(gè)公眾號的文章,可以從剛剛打開(kāi)的web界面看到anyproxy抓取的數據:

上圖紅框是微信文章的鏈接,點(diǎn)擊查看具體數據。如果響應正文中沒(méi)有任何內容,則可能是證書(shū)安裝有問(wèn)題。
如果頂部清晰,您可以向下。
這里我們依靠代理服務(wù)抓取微信數據,但是我們不能抓取一條數據自己操作微信,所以還是手動(dòng)復制比較好。所以我們需要微信客戶(hù)端自己跳轉到頁(yè)面。這時(shí)可以使用anyproxy攔截微信服務(wù)器返回的數據,將頁(yè)面跳轉代碼注入其中,然后將處理后的數據返回給模擬器,實(shí)現微信客戶(hù)端的自動(dòng)跳轉。
在anyproxy中打開(kāi)一個(gè)名為rule_default.js的js文件,windows下的文件為:C:\Users\Administrator\AppData\Roaming\npm\node_modules\anyproxy\lib
文件中有一個(gè)方法叫做replaceServerResDataAsync: function(req,res,serverResData,callback)。該方法負責對anyproxy獲取的數據進(jìn)行各種操作。開(kāi)頭應該只有 callback(serverResData) ;該語(yǔ)句的意思是直接將服務(wù)器響應數據返回給客戶(hù)端。直接把這條語(yǔ)句刪掉,換成下面大牛寫(xiě)的代碼。我這里的代碼沒(méi)有做任何改動(dòng),里面的注釋也很清楚。順著(zhù)邏輯去理解就行了,問(wèn)題不大。

1 replaceServerResDataAsync: function(req,res,serverResData,callback){
2 if(/mp\/getmasssendmsg/i.test(req.url)){//當鏈接地址為公眾號歷史消息頁(yè)面時(shí)(第一種頁(yè)面形式)
3 //console.log("開(kāi)始第一種頁(yè)面爬取");
4 if(serverResData.toString() !== ""){
5 6 try {//防止報錯退出程序
7 var reg = /msgList = (.*?);/;//定義歷史消息正則匹配規則
8 var ret = reg.exec(serverResData.toString());//轉換變量為string
9 HttpPost(ret[1],req.url,"/InternetSpider/getData/showBiz");//這個(gè)函數是后文定義的,將匹配到的歷史消息json發(fā)送到自己的服務(wù)器
10 var http = require('http');
11 http.get('http://xxx/getWxHis', function(res) {//這個(gè)地址是自己服務(wù)器上的一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxHis.php的原理。
12 res.on('data', function(chunk){
13 callback(chunk+serverResData);//將返回的代碼插入到歷史消息頁(yè)面中,并返回顯示出來(lái)
14 })
15 });
16 }catch(e){//如果上面的正則沒(méi)有匹配到,那么這個(gè)頁(yè)面內容可能是公眾號歷史消息頁(yè)面向下翻動(dòng)的第二頁(yè),因為歷史消息第一頁(yè)是html格式的,第二頁(yè)就是json格式的。
17 //console.log("開(kāi)始第一種頁(yè)面爬取向下翻形式");
18 try {
19 var json = JSON.parse(serverResData.toString());
20 if (json.general_msg_list != []) {
21 HttpPost(json.general_msg_list,req.url,"/xxx/showBiz");//這個(gè)函數和上面的一樣是后文定義的,將第二頁(yè)歷史消息的json發(fā)送到自己的服務(wù)器
22 }
23 }catch(e){
24 console.log(e);//錯誤捕捉
25 }
26 callback(serverResData);//直接返回第二頁(yè)json內容
27 }
28 }
29 //console.log("開(kāi)始第一種頁(yè)面爬取 結束");
30 }else if(/mp\/profile_ext\?action=home/i.test(req.url)){//當鏈接地址為公眾號歷史消息頁(yè)面時(shí)(第二種頁(yè)面形式)
31 try {
32 var reg = /var msgList = \'(.*?)\';/;//定義歷史消息正則匹配規則(和第一種頁(yè)面形式的正則不同)
33 var ret = reg.exec(serverResData.toString());//轉換變量為string
34 HttpPost(ret[1],req.url,"/xxx/showBiz");//這個(gè)函數是后文定義的,將匹配到的歷史消息json發(fā)送到自己的服務(wù)器
35 var http = require('http');
36 http.get('xxx/getWxHis', function(res) {//這個(gè)地址是自己服務(wù)器上的一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxHis.php的原理。
37 res.on('data', function(chunk){
38 callback(chunk+serverResData);//將返回的代碼插入到歷史消息頁(yè)面中,并返回顯示出來(lái)
39 })
40 });
41 }catch(e){
42 //console.log(e);
43 callback(serverResData);
44 }
45 }else if(/mp\/profile_ext\?action=getmsg/i.test(req.url)){//第二種頁(yè)面表現形式的向下翻頁(yè)后的json
46 try {
47 var json = JSON.parse(serverResData.toString());
48 if (json.general_msg_list != []) {
49 HttpPost(json.general_msg_list,req.url,"/xxx/showBiz");//這個(gè)函數和上面的一樣是后文定義的,將第二頁(yè)歷史消息的json發(fā)送到自己的服務(wù)器
50 }
51 }catch(e){
52 console.log(e);
53 }
54 callback(serverResData);
55 }else if(/mp\/getappmsgext/i.test(req.url)){//當鏈接地址為公眾號文章閱讀量和點(diǎn)贊量時(shí)
56 try {
57 HttpPost(serverResData,req.url,"/xxx/getMsgExt");//函數是后文定義的,功能是將文章閱讀量點(diǎn)贊量的json發(fā)送到服務(wù)器
58 }catch(e){
59
60 }
61 callback(serverResData);
62 }else if(/s\?__biz/i.test(req.url) || /mp\/rumor/i.test(req.url)){//當鏈接地址為公眾號文章時(shí)(rumor這個(gè)地址是公眾號文章被辟謠了)
63 try {
64 var http = require('http');
65 http.get('http://xxx/getWxPost', function(res) {//這個(gè)地址是自己服務(wù)器上的另一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxPost.php的原理。
66 res.on('data', function(chunk){
67 callback(chunk+serverResData);
68 })
69 });
70 }catch(e){
71 callback(serverResData);
72 }
73 }else{
74 callback(serverResData);
75 }
76 //callback(serverResData);
77 },

這是一個(gè)簡(jiǎn)短的解釋。微信公眾號歷史新聞頁(yè)面的鏈接有兩種形式:一種以/mp/getmasssendmsg開(kāi)頭,另一種以/mp/profile_ext開(kāi)頭。歷史頁(yè)面可以向下滾動(dòng)。向下滾動(dòng)會(huì )觸發(fā)js事件發(fā)送請求獲取json數據(下一頁(yè)的內容)。還有公眾號文章的鏈接,以及文章的閱讀和點(diǎn)贊鏈接(返回json數據)。這些環(huán)節的形式是固定的,可以通過(guò)邏輯判斷加以區分。這里有個(gè)問(wèn)題,如果歷史頁(yè)面需要一路爬取怎么辦。我的想法是通過(guò)js模擬鼠標向下滑動(dòng),從而觸發(fā)提交下一部分列表的負載的請求?;蛘咧苯邮褂胊nyproxy分析下載請求,直接向微信服務(wù)器發(fā)出這個(gè)請求。但是有一個(gè)問(wèn)題是如何判斷沒(méi)有剩余數據。我正在抓取最新數據。我暫時(shí)沒(méi)有這個(gè)要求,但以后可能需要。如果需要,您可以嘗試一下。
querylist采集微信公眾號文章( 處理跳轉向微信注入js的方法:以上就是對處理代理服務(wù)器攔截到的數據進(jìn)行處理)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 283 次瀏覽 ? 2022-03-13 10:09
處理跳轉向微信注入js的方法:以上就是對處理代理服務(wù)器攔截到的數據進(jìn)行處理)
public void getMsgExt(String str,String url) {
// TODO Auto-generated method stub
String biz = "";
String sn = "";
Map queryStrs = HttpUrlParser.parseUrl(url);
if(queryStrs != null){
biz = queryStrs.get("__biz");
biz = biz + "==";
sn = queryStrs.get("sn");
sn = "%" + sn + "%";
}
/**
* $sql = "select * from `文章表` where `biz`='".$biz."'
* and `content_url` like '%".$sn."%'" limit 0,1;
* 根據biz和sn找到對應的文章
*/
Post post = postMapper.selectByBizAndSn(biz, sn);
if(post == null){
System.out.println("biz:"+biz);
System.out.println("sn:"+sn);
tmpListMapper.deleteByLoad(1);
return;
}
// System.out.println("json數據:"+str);
Integer read_num;
Integer like_num;
try{
read_num = JsonPath.read(str, "['appmsgstat']['read_num']");//閱讀量
like_num = JsonPath.read(str, "['appmsgstat']['like_num']");//點(diǎn)贊量
}catch(Exception e){
read_num = 123;//閱讀量
like_num = 321;//點(diǎn)贊量
System.out.println("read_num:"+read_num);
System.out.println("like_num:"+like_num);
System.out.println(e.getMessage());
}
/**
* 在這里同樣根據sn在采集隊列表中刪除對應的文章,代表這篇文章可以移出采集隊列了
* $sql = "delete from `隊列表` where `content_url` like '%".$sn."%'"
*/
tmpListMapper.deleteBySn(sn);
//然后將閱讀量和點(diǎn)贊量更新到文章表中。
post.setReadnum(read_num);
post.setLikenum(like_num);
postMapper.updateByPrimaryKey(post);
}
將js注入微信的處理跳轉方法:
public String getWxHis() {
String url = "";
// TODO Auto-generated method stub
/**
* 當前頁(yè)面為公眾號歷史消息時(shí),讀取這個(gè)程序
* 在采集隊列表中有一個(gè)load字段,當值等于1時(shí)代表正在被讀取
* 首先刪除采集隊列表中load=1的行
* 然后從隊列表中任意select一行
*/
tmpListMapper.deleteByLoad(1);
TmpList queue = tmpListMapper.selectRandomOne();
System.out.println("queue is null?"+queue);
if(queue == null){//隊列表為空
/**
* 隊列表如果空了,就從存儲公眾號biz的表中取得一個(gè)biz,
* 這里我在公眾號表中設置了一個(gè)采集時(shí)間的time字段,按照正序排列之后,
* 就得到時(shí)間戳最小的一個(gè)公眾號記錄,并取得它的biz
*/
WeiXin weiXin = weiXinMapper.selectOne();
String biz = weiXin.getBiz();
url = "https://mp.weixin.qq.com/mp/pr ... ot%3B + biz +
"#wechat_redirect";//拼接公眾號歷史消息url地址(第二種頁(yè)面形式)
//更新剛才提到的公眾號表中的采集時(shí)間time字段為當前時(shí)間戳。
weiXin.setCollect(System.currentTimeMillis());
int result = weiXinMapper.updateByPrimaryKey(weiXin);
System.out.println("getHis weiXin updateResult:"+result);
}else{
//取得當前這一行的content_url字段
url = queue.getContentUrl();
//將load字段update為1
tmpListMapper.updateByContentUrl(url);
}
//將下一個(gè)將要跳轉的$url變成js腳本,由anyproxy注入到微信頁(yè)面中。
//echo "setTimeout(function(){window.location.href='".$url."';},2000);";
int randomTime = new Random().nextInt(3) + 3;
String jsCode = "setTimeout(function(){window.location.href='"+url+"';},"+randomTime*1000+");";
return jsCode;
}
以上是處理代理服務(wù)器截獲的數據的程序。這里有一個(gè)需要注意的問(wèn)題。程序會(huì )依次訪(fǎng)問(wèn)數據庫中每個(gè)收錄的公眾號,甚至會(huì )再次訪(fǎng)問(wèn)存儲的文章,以不斷更新收錄的閱讀點(diǎn)贊數@文章 的。如果需要抓取大量公眾號,建議修改添加任務(wù)隊列和添加條件的代碼,否則多輪公眾號抓取重復數據的效率會(huì )受到很大影響。
至此,微信公眾號的文章鏈接全部被爬取完畢,且該鏈接為永久有效鏈接,可在瀏覽器中打開(kāi)。接下來(lái)就是編寫(xiě)爬蟲(chóng)程序,從數據庫中爬取鏈接文章的內容等信息。
我用webmagic寫(xiě)了一個(gè)爬蟲(chóng),輕量級,好用。
public class SpiderModel implements PageProcessor{
private static PostMapper postMapper;
private static List posts;
// 抓取網(wǎng)站的相關(guān)配置,包括編碼、抓取間隔、重試次數等
private Site site = Site.me().setRetryTimes(3).setSleepTime(100);
public Site getSite() {
// TODO Auto-generated method stub
return this.site;
}
public void process(Page page) {
// TODO Auto-generated method stub
Post post = posts.remove(0);
String content = page.getHtml().xpath("//div[@id='js_content']").get();
//存在和諧文章 此處做判定如果有直接刪除記錄或設置表示位表示文章被和諧
if(content == null){
System.out.println("文章已和諧!");
//postMapper.deleteByPrimaryKey(post.getId());
return;
}
String contentSnap = content.replaceAll("data-src", "src").replaceAll("preview.html", "player.html");//快照
String contentTxt = HtmlToWord.stripHtml(content);//純文本內容
Selectable metaContent = page.getHtml().xpath("//div[@id='meta_content']");
String pubTime = null;
String wxname = null;
String author = null;
if(metaContent != null){
pubTime = metaContent.xpath("//em[@id='post-date']").get();
if(pubTime != null){
pubTime = HtmlToWord.stripHtml(pubTime);//文章發(fā)布時(shí)間
}
wxname = metaContent.xpath("//a[@id='post-user']").get();
if(wxname != null){
wxname = HtmlToWord.stripHtml(wxname);//公眾號名稱(chēng)
}
author = metaContent.xpath("//em[@class='rich_media_meta rich_media_meta_text' and @id!='post-date']").get();
if(author != null){
author = HtmlToWord.stripHtml(author);//文章作者
}
}
// System.out.println("發(fā)布時(shí)間:"+pubTime);
// System.out.println("公眾號名稱(chēng):"+wxname);
// System.out.println("文章作者:"+author);
String title = post.getTitle().replaceAll(" ", "");//文章標題
String digest = post.getDigest();//文章摘要
int likeNum = post.getLikenum();//文章點(diǎn)贊數
int readNum = post.getReadnum();//文章閱讀數
String contentUrl = post.getContentUrl();//文章鏈接
WechatInfoBean wechatBean = new WechatInfoBean();
wechatBean.setTitle(title);
wechatBean.setContent(contentTxt);//純文本內容
wechatBean.setSourceCode(contentSnap);//快照
wechatBean.setLikeCount(likeNum);
wechatBean.setViewCount(readNum);
wechatBean.setAbstractText(digest);//摘要
wechatBean.setUrl(contentUrl);
wechatBean.setPublishTime(pubTime);
wechatBean.setSiteName(wxname);//站點(diǎn)名稱(chēng) 公眾號名稱(chēng)
wechatBean.setAuthor(author);
wechatBean.setMediaType("微信公眾號");//來(lái)源媒體類(lèi)型
WechatStorage.saveWechatInfo(wechatBean);
//標示文章已經(jīng)被爬取
post.setIsSpider(1);
postMapper.updateByPrimaryKey(post);
}
public static void startSpider(List inposts,PostMapper myPostMapper,String... urls){
long startTime, endTime;
startTime = System.currentTimeMillis();
postMapper = myPostMapper;
posts = inposts;
HttpClientDownloader httpClientDownloader = new HttpClientDownloader();
SpiderModel spiderModel = new SpiderModel();
Spider mySpider = Spider.create(spiderModel).addUrl(urls);
mySpider.setDownloader(httpClientDownloader);
try {
SpiderMonitor.instance().register(mySpider);
mySpider.thread(1).run();
} catch (JMException e) {
e.printStackTrace();
}
endTime = System.currentTimeMillis();
System.out.println("爬取時(shí)間" + ((endTime - startTime) / 1000) + "秒--");
}
}
其他一些不相關(guān)的數據存儲代碼將不會(huì )發(fā)布。這里我將代理服務(wù)器抓取的數據存儲在mysql中,將我的爬蟲(chóng)爬取的數據存儲在mongodb中。
以下是我爬取的公眾號信息:
打開(kāi)應用程序并閱讀筆記 查看全部
querylist采集微信公眾號文章(
處理跳轉向微信注入js的方法:以上就是對處理代理服務(wù)器攔截到的數據進(jìn)行處理)
public void getMsgExt(String str,String url) {
// TODO Auto-generated method stub
String biz = "";
String sn = "";
Map queryStrs = HttpUrlParser.parseUrl(url);
if(queryStrs != null){
biz = queryStrs.get("__biz");
biz = biz + "==";
sn = queryStrs.get("sn");
sn = "%" + sn + "%";
}
/**
* $sql = "select * from `文章表` where `biz`='".$biz."'
* and `content_url` like '%".$sn."%'" limit 0,1;
* 根據biz和sn找到對應的文章
*/
Post post = postMapper.selectByBizAndSn(biz, sn);
if(post == null){
System.out.println("biz:"+biz);
System.out.println("sn:"+sn);
tmpListMapper.deleteByLoad(1);
return;
}
// System.out.println("json數據:"+str);
Integer read_num;
Integer like_num;
try{
read_num = JsonPath.read(str, "['appmsgstat']['read_num']");//閱讀量
like_num = JsonPath.read(str, "['appmsgstat']['like_num']");//點(diǎn)贊量
}catch(Exception e){
read_num = 123;//閱讀量
like_num = 321;//點(diǎn)贊量
System.out.println("read_num:"+read_num);
System.out.println("like_num:"+like_num);
System.out.println(e.getMessage());
}
/**
* 在這里同樣根據sn在采集隊列表中刪除對應的文章,代表這篇文章可以移出采集隊列了
* $sql = "delete from `隊列表` where `content_url` like '%".$sn."%'"
*/
tmpListMapper.deleteBySn(sn);
//然后將閱讀量和點(diǎn)贊量更新到文章表中。
post.setReadnum(read_num);
post.setLikenum(like_num);
postMapper.updateByPrimaryKey(post);
}
將js注入微信的處理跳轉方法:
public String getWxHis() {
String url = "";
// TODO Auto-generated method stub
/**
* 當前頁(yè)面為公眾號歷史消息時(shí),讀取這個(gè)程序
* 在采集隊列表中有一個(gè)load字段,當值等于1時(shí)代表正在被讀取
* 首先刪除采集隊列表中load=1的行
* 然后從隊列表中任意select一行
*/
tmpListMapper.deleteByLoad(1);
TmpList queue = tmpListMapper.selectRandomOne();
System.out.println("queue is null?"+queue);
if(queue == null){//隊列表為空
/**
* 隊列表如果空了,就從存儲公眾號biz的表中取得一個(gè)biz,
* 這里我在公眾號表中設置了一個(gè)采集時(shí)間的time字段,按照正序排列之后,
* 就得到時(shí)間戳最小的一個(gè)公眾號記錄,并取得它的biz
*/
WeiXin weiXin = weiXinMapper.selectOne();
String biz = weiXin.getBiz();
url = "https://mp.weixin.qq.com/mp/pr ... ot%3B + biz +
"#wechat_redirect";//拼接公眾號歷史消息url地址(第二種頁(yè)面形式)
//更新剛才提到的公眾號表中的采集時(shí)間time字段為當前時(shí)間戳。
weiXin.setCollect(System.currentTimeMillis());
int result = weiXinMapper.updateByPrimaryKey(weiXin);
System.out.println("getHis weiXin updateResult:"+result);
}else{
//取得當前這一行的content_url字段
url = queue.getContentUrl();
//將load字段update為1
tmpListMapper.updateByContentUrl(url);
}
//將下一個(gè)將要跳轉的$url變成js腳本,由anyproxy注入到微信頁(yè)面中。
//echo "setTimeout(function(){window.location.href='".$url."';},2000);";
int randomTime = new Random().nextInt(3) + 3;
String jsCode = "setTimeout(function(){window.location.href='"+url+"';},"+randomTime*1000+");";
return jsCode;
}
以上是處理代理服務(wù)器截獲的數據的程序。這里有一個(gè)需要注意的問(wèn)題。程序會(huì )依次訪(fǎng)問(wèn)數據庫中每個(gè)收錄的公眾號,甚至會(huì )再次訪(fǎng)問(wèn)存儲的文章,以不斷更新收錄的閱讀點(diǎn)贊數@文章 的。如果需要抓取大量公眾號,建議修改添加任務(wù)隊列和添加條件的代碼,否則多輪公眾號抓取重復數據的效率會(huì )受到很大影響。
至此,微信公眾號的文章鏈接全部被爬取完畢,且該鏈接為永久有效鏈接,可在瀏覽器中打開(kāi)。接下來(lái)就是編寫(xiě)爬蟲(chóng)程序,從數據庫中爬取鏈接文章的內容等信息。
我用webmagic寫(xiě)了一個(gè)爬蟲(chóng),輕量級,好用。
public class SpiderModel implements PageProcessor{
private static PostMapper postMapper;
private static List posts;
// 抓取網(wǎng)站的相關(guān)配置,包括編碼、抓取間隔、重試次數等
private Site site = Site.me().setRetryTimes(3).setSleepTime(100);
public Site getSite() {
// TODO Auto-generated method stub
return this.site;
}
public void process(Page page) {
// TODO Auto-generated method stub
Post post = posts.remove(0);
String content = page.getHtml().xpath("//div[@id='js_content']").get();
//存在和諧文章 此處做判定如果有直接刪除記錄或設置表示位表示文章被和諧
if(content == null){
System.out.println("文章已和諧!");
//postMapper.deleteByPrimaryKey(post.getId());
return;
}
String contentSnap = content.replaceAll("data-src", "src").replaceAll("preview.html", "player.html");//快照
String contentTxt = HtmlToWord.stripHtml(content);//純文本內容
Selectable metaContent = page.getHtml().xpath("//div[@id='meta_content']");
String pubTime = null;
String wxname = null;
String author = null;
if(metaContent != null){
pubTime = metaContent.xpath("//em[@id='post-date']").get();
if(pubTime != null){
pubTime = HtmlToWord.stripHtml(pubTime);//文章發(fā)布時(shí)間
}
wxname = metaContent.xpath("//a[@id='post-user']").get();
if(wxname != null){
wxname = HtmlToWord.stripHtml(wxname);//公眾號名稱(chēng)
}
author = metaContent.xpath("//em[@class='rich_media_meta rich_media_meta_text' and @id!='post-date']").get();
if(author != null){
author = HtmlToWord.stripHtml(author);//文章作者
}
}
// System.out.println("發(fā)布時(shí)間:"+pubTime);
// System.out.println("公眾號名稱(chēng):"+wxname);
// System.out.println("文章作者:"+author);
String title = post.getTitle().replaceAll(" ", "");//文章標題
String digest = post.getDigest();//文章摘要
int likeNum = post.getLikenum();//文章點(diǎn)贊數
int readNum = post.getReadnum();//文章閱讀數
String contentUrl = post.getContentUrl();//文章鏈接
WechatInfoBean wechatBean = new WechatInfoBean();
wechatBean.setTitle(title);
wechatBean.setContent(contentTxt);//純文本內容
wechatBean.setSourceCode(contentSnap);//快照
wechatBean.setLikeCount(likeNum);
wechatBean.setViewCount(readNum);
wechatBean.setAbstractText(digest);//摘要
wechatBean.setUrl(contentUrl);
wechatBean.setPublishTime(pubTime);
wechatBean.setSiteName(wxname);//站點(diǎn)名稱(chēng) 公眾號名稱(chēng)
wechatBean.setAuthor(author);
wechatBean.setMediaType("微信公眾號");//來(lái)源媒體類(lèi)型
WechatStorage.saveWechatInfo(wechatBean);
//標示文章已經(jīng)被爬取
post.setIsSpider(1);
postMapper.updateByPrimaryKey(post);
}
public static void startSpider(List inposts,PostMapper myPostMapper,String... urls){
long startTime, endTime;
startTime = System.currentTimeMillis();
postMapper = myPostMapper;
posts = inposts;
HttpClientDownloader httpClientDownloader = new HttpClientDownloader();
SpiderModel spiderModel = new SpiderModel();
Spider mySpider = Spider.create(spiderModel).addUrl(urls);
mySpider.setDownloader(httpClientDownloader);
try {
SpiderMonitor.instance().register(mySpider);
mySpider.thread(1).run();
} catch (JMException e) {
e.printStackTrace();
}
endTime = System.currentTimeMillis();
System.out.println("爬取時(shí)間" + ((endTime - startTime) / 1000) + "秒--");
}
}
其他一些不相關(guān)的數據存儲代碼將不會(huì )發(fā)布。這里我將代理服務(wù)器抓取的數據存儲在mysql中,將我的爬蟲(chóng)爬取的數據存儲在mongodb中。
以下是我爬取的公眾號信息:


打開(kāi)應用程序并閱讀筆記
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 434 次瀏覽 ? 2022-03-13 06:13
Python微信公眾號文章爬取
一.想法
我們通過(guò)網(wǎng)頁(yè)版微信公眾平臺的圖文消息中的超鏈接獲取我們需要的界面
從界面中我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二.界面分析
獲取微信公眾號界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=公眾號
token = 每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
所以在這個(gè)界面中,我們只需要獲取token,查詢(xún)的是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。
獲取公眾號對應的文章接口:
范圍:
行動(dòng)=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,而這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以得到微信公眾號文章的數據了。
三.實(shí)現第一步:
首先我們需要通過(guò)selenium來(lái)模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。模擬用戶(hù)輸入對應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃碼。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token并返回。
第二步:1.請求獲取對應的公眾號接口,獲取我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取的token和cookie,然后通過(guò)requests.get請求獲取微信公眾號返回的json數據
lists = search_resp.json().get('list')[0]
通過(guò)以上代碼可以獲取對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼,可以得到對應的 fakeid
2.請求訪(fǎng)問(wèn)微信公眾號文章接口,獲取我們需要的文章數據
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入 fakeid 和 token 然后調用 requests.get 請求接口獲取返回的 json 數據。
我們實(shí)現了微信公眾號文章的爬取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,我們在循環(huán)獲取文章的時(shí)候,一定要設置一個(gè)延遲時(shí)間,否則容易被封號,獲取不到返回的數據。 查看全部
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
Python微信公眾號文章爬取
一.想法
我們通過(guò)網(wǎng)頁(yè)版微信公眾平臺的圖文消息中的超鏈接獲取我們需要的界面


從界面中我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二.界面分析
獲取微信公眾號界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=公眾號
token = 每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
所以在這個(gè)界面中,我們只需要獲取token,查詢(xún)的是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。

獲取公眾號對應的文章接口:
范圍:
行動(dòng)=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,而這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以得到微信公眾號文章的數據了。

三.實(shí)現第一步:
首先我們需要通過(guò)selenium來(lái)模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。模擬用戶(hù)輸入對應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃碼。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token并返回。
第二步:1.請求獲取對應的公眾號接口,獲取我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取的token和cookie,然后通過(guò)requests.get請求獲取微信公眾號返回的json數據
lists = search_resp.json().get('list')[0]
通過(guò)以上代碼可以獲取對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼,可以得到對應的 fakeid
2.請求訪(fǎng)問(wèn)微信公眾號文章接口,獲取我們需要的文章數據
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入 fakeid 和 token 然后調用 requests.get 請求接口獲取返回的 json 數據。
我們實(shí)現了微信公眾號文章的爬取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,我們在循環(huán)獲取文章的時(shí)候,一定要設置一個(gè)延遲時(shí)間,否則容易被封號,獲取不到返回的數據。
querylist采集微信公眾號文章(Python模擬安卓App操作微信App的方法(詳見(jiàn)代碼介紹))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 231 次瀏覽 ? 2022-03-12 07:07
本文章主要介紹基于Python采集對微信公眾號歷史數據的爬取。通過(guò)文中的示例代碼介紹的很詳細,對大家的學(xué)習或工作有一定的參考和學(xué)習價(jià)值。需要的朋友可以參考以下
鯤之鵬技術(shù)人員將在本文中通過(guò)模擬微信App的操作,介紹一種采集指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket和Cookie)。
為了得到這四個(gè)參數,我們需要模擬運行App,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(見(jiàn)詳情)。對于 HTTP 集成的數據包捕獲,我們之前已經(jīng)介紹了 Mitmproxy(見(jiàn)詳情)。
我們需要模擬微信的操作來(lái)完成以下步驟:
1. 啟動(dòng)微信應用
2. 點(diǎn)擊“通訊錄”
3. 點(diǎn)擊“公眾號”
4.點(diǎn)擊你想要的公眾號采集
5. 點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”
至此,我們可以從響應數據中捕獲__biz、appmsg_token、pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下所示。
有了以上四個(gè)參數,我們就可以構造API請求獲取歷史文章列表,直接調用API接口獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變offset參數,可以得到所有的歷史數據。
# Cookie headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'} url = 'https://mp.weixin.qq.com/mp/profile_ext?' data = {} data['is_ok'] = '1' data['count'] = '10' data['wxtoken'] = '' data['f'] = 'json' data['scene'] = '124' data['uin'] = '777' data['key'] = '777' data['offset'] = '0' data['action'] = 'getmsg' data['x5'] = '0' # 下面三個(gè)參數需要替換 # https://mp.weixin.qq.com/mp/pr ... Dhome應答數據里會(huì )暴漏這三個(gè)參數 data['__biz'] = 'MjM5MzQyOTM1OQ==' data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~' data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE' url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集流程操作截圖如下:
輸出的屏幕截圖如下所示:
以上就是基于Python采集抓取微信公眾號歷史數據的詳細內容,更多詳情請關(guān)注html中文網(wǎng)其他相關(guān)話(huà)題文章! 查看全部
querylist采集微信公眾號文章(Python模擬安卓App操作微信App的方法(詳見(jiàn)代碼介紹))
本文章主要介紹基于Python采集對微信公眾號歷史數據的爬取。通過(guò)文中的示例代碼介紹的很詳細,對大家的學(xué)習或工作有一定的參考和學(xué)習價(jià)值。需要的朋友可以參考以下
鯤之鵬技術(shù)人員將在本文中通過(guò)模擬微信App的操作,介紹一種采集指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket和Cookie)。

為了得到這四個(gè)參數,我們需要模擬運行App,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(見(jiàn)詳情)。對于 HTTP 集成的數據包捕獲,我們之前已經(jīng)介紹了 Mitmproxy(見(jiàn)詳情)。
我們需要模擬微信的操作來(lái)完成以下步驟:
1. 啟動(dòng)微信應用
2. 點(diǎn)擊“通訊錄”
3. 點(diǎn)擊“公眾號”
4.點(diǎn)擊你想要的公眾號采集
5. 點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”


至此,我們可以從響應數據中捕獲__biz、appmsg_token、pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下所示。


有了以上四個(gè)參數,我們就可以構造API請求獲取歷史文章列表,直接調用API接口獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變offset參數,可以得到所有的歷史數據。
# Cookie headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'} url = 'https://mp.weixin.qq.com/mp/profile_ext?' data = {} data['is_ok'] = '1' data['count'] = '10' data['wxtoken'] = '' data['f'] = 'json' data['scene'] = '124' data['uin'] = '777' data['key'] = '777' data['offset'] = '0' data['action'] = 'getmsg' data['x5'] = '0' # 下面三個(gè)參數需要替換 # https://mp.weixin.qq.com/mp/pr ... Dhome應答數據里會(huì )暴漏這三個(gè)參數 data['__biz'] = 'MjM5MzQyOTM1OQ==' data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~' data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE' url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集流程操作截圖如下:

輸出的屏幕截圖如下所示:

以上就是基于Python采集抓取微信公眾號歷史數據的詳細內容,更多詳情請關(guān)注html中文網(wǎng)其他相關(guān)話(huà)題文章!
querylist采集微信公眾號文章(python采集微信公眾號文章本文(操作postgres數據庫)抓取)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 449 次瀏覽 ? 2022-03-11 17:00
Python搶購搜狗微信公眾號文章
初學(xué)python,搶搜狗微信公眾號文章存入mysql
mysql表:
代碼:
import requests
import json
import re
import pymysql
# 創(chuàng )建連接
conn = pymysql.connect(host='你的數據庫地址', port=端口, user='用戶(hù)名', passwd='密碼', db='數據庫名稱(chēng)', charset='utf8')
# 創(chuàng )建游標
cursor = conn.cursor()
cursor.execute("select * from hd_gzh")
effect_row = cursor.fetchall()
from bs4 import BeautifulSoup
socket.setdefaulttimeout(60)
count = 1
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'}
#阿布云ip代理暫時(shí)不用
# proxyHost = "http-cla.abuyun.com"
# proxyPort = "9030"
# # 代理隧道驗證信息
# proxyUser = "H56761606429T7UC"
# proxyPass = "9168EB00C4167176"
# proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
# "host" : proxyHost,
# "port" : proxyPort,
# "user" : proxyUser,
# "pass" : proxyPass,
# }
# proxies = {
# "http" : proxyMeta,
# "https" : proxyMeta,
# }
#查看是否已存在數據
def checkData(name):
sql = "select * from gzh_article where title = '%s'"
data = (name,)
count = cursor.execute(sql % data)
conn.commit()
if(count!=0):
return False
else:
return True
#插入數據
def insertData(title,picture,author,content):
sql = "insert into gzh_article (title,picture,author,content) values ('%s', '%s','%s', '%s')"
data = (title,picture,author,content)
cursor.execute(sql % data)
conn.commit()
print("插入一條數據")
return
for row in effect_row:
newsurl = 'https://weixin.sogou.com/weixin?type=1&s_from=input&query=' + row[1] + '&ie=utf8&_sug_=n&_sug_type_='
res = requests.get(newsurl,headers=headers)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
url = 'https://weixin.sogou.com' + soup.select('.tit a')[0]['href']
res2 = requests.get(url,headers=headers)
res2.encoding = 'utf-8'
soup2 = BeautifulSoup(res2.text,'html.parser')
pattern = re.compile(r"url \+= '(.*?)';", re.MULTILINE | re.DOTALL)
script = soup2.find("script")
url2 = pattern.search(script.text).group(1)
res3 = requests.get(url2,headers=headers)
res3.encoding = 'utf-8'
soup3 = BeautifulSoup(res3.text,'html.parser')
print()
pattern2 = re.compile(r"var msgList = (.*?);$", re.MULTILINE | re.DOTALL)
script2 = soup3.find("script", text=pattern2)
s2 = json.loads(pattern2.search(script2.text).group(1))
#等待10s
time.sleep(10)
for news in s2["list"]:
articleurl = "https://mp.weixin.qq.com"+news["app_msg_ext_info"]["content_url"]
articleurl = articleurl.replace('&','&')
res4 = requests.get(articleurl,headers=headers)
res4.encoding = 'utf-8'
soup4 = BeautifulSoup(res4.text,'html.parser')
if(checkData(news["app_msg_ext_info"]["title"])):
insertData(news["app_msg_ext_info"]["title"],news["app_msg_ext_info"]["cover"],news["app_msg_ext_info"]["author"],pymysql.escape_string(str(soup4)))
count += 1
#等待5s
time.sleep(10)
for news2 in news["app_msg_ext_info"]["multi_app_msg_item_list"]:
articleurl2 = "https://mp.weixin.qq.com"+news2["content_url"]
articleurl2 = articleurl2.replace('&','&')
res5 = requests.get(articleurl2,headers=headers)
res5.encoding = 'utf-8'
soup5 = BeautifulSoup(res5.text,'html.parser')
if(checkData(news2["title"])):
insertData(news2["title"],news2["cover"],news2["author"],pymysql.escape_string(str(soup5)))
count += 1
#等待10s
time.sleep(10)
cursor.close()
conn.close()
print("操作完成")
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持。
時(shí)間:2019-03-31
python采集微信公眾號文章
本文示例分享了python采集微信公眾號文章的具體代碼,供大家參考。具體內容如下。python的一個(gè)子目錄下存放了兩個(gè)文件,分別是:采集公眾號文章.py和config.py。代碼如下:1.采集公眾號文章.py from urllib.parse import urlencode import pymongo import requests from lxml.etree import XMLSyntaxError from requests.exceptions import Connec
Python如何爬取微信公眾號文章及評論(基于Fiddler抓包分析)
背景描述我覺(jué)得微信公眾號是比較難爬的平臺之一,但是經(jīng)過(guò)一番折騰,還是有一點(diǎn)小收獲。沒(méi)用Scrapy(估計爬太快有防爬限制),不過(guò)后面會(huì )開(kāi)始整理寫(xiě)一些實(shí)戰。. 簡(jiǎn)單介紹一下本次的開(kāi)發(fā)環(huán)境:python3請求psycopg2(操作postgres數據庫) 抓包分析 本次實(shí)戰對要抓包的公眾號沒(méi)有限制,但是每次抓包前都要對不同的公眾號進(jìn)行分析。打開(kāi)Fiddler,在手機上配置相關(guān)代理。為了避免過(guò)多干擾,這里給Fiddler一個(gè)過(guò)濾規則,指定微信域名即可:
python爬取微信公眾號文章的方法
最近在學(xué)習Python3網(wǎng)絡(luò )爬蟲(chóng)(崔慶才寫(xiě)的)的開(kāi)發(fā)實(shí)踐,剛剛得知他在這里使用代理爬取了公眾號文章,但是根據他的代碼,還是出現了一些問(wèn)題。我在這里用過(guò)這本書(shū)。對本書(shū)前面提到的一些內容進(jìn)行了改進(jìn)。(作者半年前寫(xiě)了這段代碼,騰訊的網(wǎng)站半年前更新了)我直接加下面代碼:TIMEOUT = 20 from requests import Request, Session, PreparedRequest import requests from selenium import webdrive
50行Python代碼如何獲取所有公眾號文章
前言我們在閱讀公眾號文章時(shí)通常會(huì )遇到一個(gè)問(wèn)題——閱讀歷史文章的體驗并不好。我們知道爬取公眾號的常用方法有兩種:通過(guò)搜狗搜索獲取,缺點(diǎn)是只能獲取最新的十推文章。通過(guò)微信公眾號的素材管理,可以獲得公眾號文章。缺點(diǎn)是需要自己申請公眾號。微信方式獲取公眾號文章的方法。與其他方法相比,非常方便。如上圖,通過(guò)抓包工具獲取微信的網(wǎng)絡(luò )信息請求,我們發(fā)現每次文章
Python爬取指定微信公眾號文章
本文示例分享了python爬取微信公眾號文章的具體代碼,供大家參考。具體內容如下。該方法是依靠 urllib2 庫完成的。首先需要安裝你的python環(huán)境,然后安裝urllib2庫程序的啟動(dòng)方法(返回值為公眾號文章的列表): def openUrl(): print("啟動(dòng)爬蟲(chóng),打開(kāi)搜狗搜索微信界面") # 加載頁(yè)面url = ';s_from=input&query = 被抓取的公眾號名稱(chēng)
Python爬取微信公眾號文章
本文示例分享python爬取微信公眾號文章的具體代碼供大家參考,具體內容如下# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup from requests .exceptions import RequestException import time import random import MySQLdb import threading import socket import math soc
python selenium爬取微信公眾號文章代碼詳解
參考:selenium webdriver 添加cookies: 需求:想看微信公眾號文章的歷史,但是每次都找地方不方便。思路:1.使用selenium打開(kāi)微信公眾號歷史文章,滾動(dòng)刷新到底部,獲取所有歷史文章url。2.遍歷訪(fǎng)問(wèn)url,下載到本地。實(shí)現1.打開(kāi)微信客戶(hù)端,點(diǎn)擊微信公眾號->進(jìn)入公眾號->打開(kāi)歷史文章鏈接(用瀏覽器打開(kāi)),通過(guò)開(kāi)發(fā)者工具獲取cookie
Python使用webdriver爬取微信公眾號
本文示例分享了python使用webdriver爬取微信公眾號的具體代碼,供大家參考。具體內容如下# -*- 編碼:utf-8 -*- from selenium import webdriver import time import json import requests import re import random #微信公眾號user="" #公眾號密碼password="" #設置需要爬取的公眾號列表 gzlist=['香河微服務(wù)
python如何導出微信公眾號文章詳解
1.安裝wkhtmltopdf 下載地址:我用windows進(jìn)行測試,下載安裝后結果如下 2 編寫(xiě)python代碼導出微信公眾號文章 不能直接使用wkhtmltopdf導出微信公眾號文章,導出的文章會(huì )缺圖,所以需要使用微信公眾號文章頁(yè)面,然后將html文本轉換成pdf pip install wechatsogou --升級 pip install pdfkit 踩坑
Python抓取微信公眾號賬號信息的方法
搜狗微信搜索提供了兩種關(guān)鍵詞搜索,一種是搜索公眾號文章的內容,另一種是直接搜索微信公眾號。公眾號基本信息可通過(guò)微信公眾號搜索獲取。還有最近發(fā)布的10個(gè)文章,今天就來(lái)?yè)屛⑿殴娞柕馁~號信息爬蟲(chóng)吧。首先通過(guò)首頁(yè)進(jìn)入,可以按類(lèi)別抓取,通過(guò)“查看更多”可以找到頁(yè)面鏈接規則: import requests as req import re reTypes = r'id="pc_\d*" uigs=" (pc_\d*)">([\s\S]*?)&
Python爬蟲(chóng)_微信公眾號推送信息爬取示例
問(wèn)題描述 使用搜狗的微信搜索,從指定公眾號抓取最新推送,并將對應網(wǎng)頁(yè)保存到本地。注意,搜狗微信獲取的地址是臨時(shí)鏈接,具有時(shí)效性。公眾號為動(dòng)態(tài)網(wǎng)頁(yè)(JavaScript渲染),使用requests.get()獲取的內容不收錄推送消息。這里使用 selenium+PhantomJS 處理代碼#!/usr/bin/env python3 from selenium import webdriver from datetime import datetime import bs4, requ 查看全部
querylist采集微信公眾號文章(python采集微信公眾號文章本文(操作postgres數據庫)抓取)
Python搶購搜狗微信公眾號文章
初學(xué)python,搶搜狗微信公眾號文章存入mysql
mysql表:


代碼:
import requests
import json
import re
import pymysql
# 創(chuàng )建連接
conn = pymysql.connect(host='你的數據庫地址', port=端口, user='用戶(hù)名', passwd='密碼', db='數據庫名稱(chēng)', charset='utf8')
# 創(chuàng )建游標
cursor = conn.cursor()
cursor.execute("select * from hd_gzh")
effect_row = cursor.fetchall()
from bs4 import BeautifulSoup
socket.setdefaulttimeout(60)
count = 1
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'}
#阿布云ip代理暫時(shí)不用
# proxyHost = "http-cla.abuyun.com"
# proxyPort = "9030"
# # 代理隧道驗證信息
# proxyUser = "H56761606429T7UC"
# proxyPass = "9168EB00C4167176"
# proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
# "host" : proxyHost,
# "port" : proxyPort,
# "user" : proxyUser,
# "pass" : proxyPass,
# }
# proxies = {
# "http" : proxyMeta,
# "https" : proxyMeta,
# }
#查看是否已存在數據
def checkData(name):
sql = "select * from gzh_article where title = '%s'"
data = (name,)
count = cursor.execute(sql % data)
conn.commit()
if(count!=0):
return False
else:
return True
#插入數據
def insertData(title,picture,author,content):
sql = "insert into gzh_article (title,picture,author,content) values ('%s', '%s','%s', '%s')"
data = (title,picture,author,content)
cursor.execute(sql % data)
conn.commit()
print("插入一條數據")
return
for row in effect_row:
newsurl = 'https://weixin.sogou.com/weixin?type=1&s_from=input&query=' + row[1] + '&ie=utf8&_sug_=n&_sug_type_='
res = requests.get(newsurl,headers=headers)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
url = 'https://weixin.sogou.com' + soup.select('.tit a')[0]['href']
res2 = requests.get(url,headers=headers)
res2.encoding = 'utf-8'
soup2 = BeautifulSoup(res2.text,'html.parser')
pattern = re.compile(r"url \+= '(.*?)';", re.MULTILINE | re.DOTALL)
script = soup2.find("script")
url2 = pattern.search(script.text).group(1)
res3 = requests.get(url2,headers=headers)
res3.encoding = 'utf-8'
soup3 = BeautifulSoup(res3.text,'html.parser')
print()
pattern2 = re.compile(r"var msgList = (.*?);$", re.MULTILINE | re.DOTALL)
script2 = soup3.find("script", text=pattern2)
s2 = json.loads(pattern2.search(script2.text).group(1))
#等待10s
time.sleep(10)
for news in s2["list"]:
articleurl = "https://mp.weixin.qq.com"+news["app_msg_ext_info"]["content_url"]
articleurl = articleurl.replace('&','&')
res4 = requests.get(articleurl,headers=headers)
res4.encoding = 'utf-8'
soup4 = BeautifulSoup(res4.text,'html.parser')
if(checkData(news["app_msg_ext_info"]["title"])):
insertData(news["app_msg_ext_info"]["title"],news["app_msg_ext_info"]["cover"],news["app_msg_ext_info"]["author"],pymysql.escape_string(str(soup4)))
count += 1
#等待5s
time.sleep(10)
for news2 in news["app_msg_ext_info"]["multi_app_msg_item_list"]:
articleurl2 = "https://mp.weixin.qq.com"+news2["content_url"]
articleurl2 = articleurl2.replace('&','&')
res5 = requests.get(articleurl2,headers=headers)
res5.encoding = 'utf-8'
soup5 = BeautifulSoup(res5.text,'html.parser')
if(checkData(news2["title"])):
insertData(news2["title"],news2["cover"],news2["author"],pymysql.escape_string(str(soup5)))
count += 1
#等待10s
time.sleep(10)
cursor.close()
conn.close()
print("操作完成")
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持。
時(shí)間:2019-03-31
python采集微信公眾號文章

本文示例分享了python采集微信公眾號文章的具體代碼,供大家參考。具體內容如下。python的一個(gè)子目錄下存放了兩個(gè)文件,分別是:采集公眾號文章.py和config.py。代碼如下:1.采集公眾號文章.py from urllib.parse import urlencode import pymongo import requests from lxml.etree import XMLSyntaxError from requests.exceptions import Connec
Python如何爬取微信公眾號文章及評論(基于Fiddler抓包分析)

背景描述我覺(jué)得微信公眾號是比較難爬的平臺之一,但是經(jīng)過(guò)一番折騰,還是有一點(diǎn)小收獲。沒(méi)用Scrapy(估計爬太快有防爬限制),不過(guò)后面會(huì )開(kāi)始整理寫(xiě)一些實(shí)戰。. 簡(jiǎn)單介紹一下本次的開(kāi)發(fā)環(huán)境:python3請求psycopg2(操作postgres數據庫) 抓包分析 本次實(shí)戰對要抓包的公眾號沒(méi)有限制,但是每次抓包前都要對不同的公眾號進(jìn)行分析。打開(kāi)Fiddler,在手機上配置相關(guān)代理。為了避免過(guò)多干擾,這里給Fiddler一個(gè)過(guò)濾規則,指定微信域名即可:
python爬取微信公眾號文章的方法

最近在學(xué)習Python3網(wǎng)絡(luò )爬蟲(chóng)(崔慶才寫(xiě)的)的開(kāi)發(fā)實(shí)踐,剛剛得知他在這里使用代理爬取了公眾號文章,但是根據他的代碼,還是出現了一些問(wèn)題。我在這里用過(guò)這本書(shū)。對本書(shū)前面提到的一些內容進(jìn)行了改進(jìn)。(作者半年前寫(xiě)了這段代碼,騰訊的網(wǎng)站半年前更新了)我直接加下面代碼:TIMEOUT = 20 from requests import Request, Session, PreparedRequest import requests from selenium import webdrive
50行Python代碼如何獲取所有公眾號文章

前言我們在閱讀公眾號文章時(shí)通常會(huì )遇到一個(gè)問(wèn)題——閱讀歷史文章的體驗并不好。我們知道爬取公眾號的常用方法有兩種:通過(guò)搜狗搜索獲取,缺點(diǎn)是只能獲取最新的十推文章。通過(guò)微信公眾號的素材管理,可以獲得公眾號文章。缺點(diǎn)是需要自己申請公眾號。微信方式獲取公眾號文章的方法。與其他方法相比,非常方便。如上圖,通過(guò)抓包工具獲取微信的網(wǎng)絡(luò )信息請求,我們發(fā)現每次文章
Python爬取指定微信公眾號文章
本文示例分享了python爬取微信公眾號文章的具體代碼,供大家參考。具體內容如下。該方法是依靠 urllib2 庫完成的。首先需要安裝你的python環(huán)境,然后安裝urllib2庫程序的啟動(dòng)方法(返回值為公眾號文章的列表): def openUrl(): print("啟動(dòng)爬蟲(chóng),打開(kāi)搜狗搜索微信界面") # 加載頁(yè)面url = ';s_from=input&query = 被抓取的公眾號名稱(chēng)
Python爬取微信公眾號文章
本文示例分享python爬取微信公眾號文章的具體代碼供大家參考,具體內容如下# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup from requests .exceptions import RequestException import time import random import MySQLdb import threading import socket import math soc
python selenium爬取微信公眾號文章代碼詳解
參考:selenium webdriver 添加cookies: 需求:想看微信公眾號文章的歷史,但是每次都找地方不方便。思路:1.使用selenium打開(kāi)微信公眾號歷史文章,滾動(dòng)刷新到底部,獲取所有歷史文章url。2.遍歷訪(fǎng)問(wèn)url,下載到本地。實(shí)現1.打開(kāi)微信客戶(hù)端,點(diǎn)擊微信公眾號->進(jìn)入公眾號->打開(kāi)歷史文章鏈接(用瀏覽器打開(kāi)),通過(guò)開(kāi)發(fā)者工具獲取cookie
Python使用webdriver爬取微信公眾號
本文示例分享了python使用webdriver爬取微信公眾號的具體代碼,供大家參考。具體內容如下# -*- 編碼:utf-8 -*- from selenium import webdriver import time import json import requests import re import random #微信公眾號user="" #公眾號密碼password="" #設置需要爬取的公眾號列表 gzlist=['香河微服務(wù)
python如何導出微信公眾號文章詳解
1.安裝wkhtmltopdf 下載地址:我用windows進(jìn)行測試,下載安裝后結果如下 2 編寫(xiě)python代碼導出微信公眾號文章 不能直接使用wkhtmltopdf導出微信公眾號文章,導出的文章會(huì )缺圖,所以需要使用微信公眾號文章頁(yè)面,然后將html文本轉換成pdf pip install wechatsogou --升級 pip install pdfkit 踩坑
Python抓取微信公眾號賬號信息的方法
搜狗微信搜索提供了兩種關(guān)鍵詞搜索,一種是搜索公眾號文章的內容,另一種是直接搜索微信公眾號。公眾號基本信息可通過(guò)微信公眾號搜索獲取。還有最近發(fā)布的10個(gè)文章,今天就來(lái)?yè)屛⑿殴娞柕馁~號信息爬蟲(chóng)吧。首先通過(guò)首頁(yè)進(jìn)入,可以按類(lèi)別抓取,通過(guò)“查看更多”可以找到頁(yè)面鏈接規則: import requests as req import re reTypes = r'id="pc_\d*" uigs=" (pc_\d*)">([\s\S]*?)&
Python爬蟲(chóng)_微信公眾號推送信息爬取示例

問(wèn)題描述 使用搜狗的微信搜索,從指定公眾號抓取最新推送,并將對應網(wǎng)頁(yè)保存到本地。注意,搜狗微信獲取的地址是臨時(shí)鏈接,具有時(shí)效性。公眾號為動(dòng)態(tài)網(wǎng)頁(yè)(JavaScript渲染),使用requests.get()獲取的內容不收錄推送消息。這里使用 selenium+PhantomJS 處理代碼#!/usr/bin/env python3 from selenium import webdriver from datetime import datetime import bs4, requ
querylist采集微信公眾號文章(讓歷史消息頁(yè)面重新超鏈接添加到有外鏈權限的公眾號圖文當中外鏈的入口)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 116 次瀏覽 ? 2022-03-27 20:18
胖友們,早上好!
對公眾號添加外鏈的限制,真是讓運營(yíng)商頭疼!因為只有開(kāi)通了微信認證和微信支付的賬號才有外鏈權限。
除服務(wù)號外,公眾號的軍隊訂閱號僅被授權與媒體主體和政府號開(kāi)通微信支付。
而現在,即使是有外鏈權限的公眾號,也無(wú)法直接超鏈接到圖文中的歷史新聞頁(yè)面!
于是出現了兩個(gè)問(wèn)題:
如何讓歷史新聞頁(yè)面重新添加具有外鏈權限的公眾號圖文超鏈接?
對于沒(méi)有外鏈權限的訂閱號,如何在公眾號中添加外鏈入口?
那么135編輯器就產(chǎn)生了解決這兩個(gè)問(wèn)題的工具:
生成短鏈接
圖像.png
我們先解決第一個(gè)問(wèn)題:讓“歷史消息頁(yè)面鏈接”在圖文消息中超鏈接。
先復制“歷史新聞頁(yè)面”鏈接,粘貼后復制生成的短鏈接。
灰色.gif
然后使用超鏈接按鈕將此鏈接超鏈接到具有外部鏈接權限的公眾號圖像和文本。
微信鏈接被識別和檢測。在我們生成一個(gè)短鏈接后,如果我們無(wú)法檢測到歷史新聞頁(yè)面的鏈接,我們可以加入它!
我們來(lái)解決第二個(gè)問(wèn)題:讓沒(méi)有外鏈權限的公眾號的圖文有外鏈的入口。
用鼠標點(diǎn)擊并拖動(dòng)生成的二維碼在新窗口中打開(kāi),右擊圖片,選擇復制圖片,然后將二維碼圖片粘貼到圖片和文字中。
沒(méi)有外鏈權限的公眾號可以放入二維碼,用戶(hù)可以識別二維碼進(jìn)入外鏈界面。 查看全部
querylist采集微信公眾號文章(讓歷史消息頁(yè)面重新超鏈接添加到有外鏈權限的公眾號圖文當中外鏈的入口)
胖友們,早上好!
對公眾號添加外鏈的限制,真是讓運營(yíng)商頭疼!因為只有開(kāi)通了微信認證和微信支付的賬號才有外鏈權限。
除服務(wù)號外,公眾號的軍隊訂閱號僅被授權與媒體主體和政府號開(kāi)通微信支付。
而現在,即使是有外鏈權限的公眾號,也無(wú)法直接超鏈接到圖文中的歷史新聞頁(yè)面!
于是出現了兩個(gè)問(wèn)題:
如何讓歷史新聞頁(yè)面重新添加具有外鏈權限的公眾號圖文超鏈接?
對于沒(méi)有外鏈權限的訂閱號,如何在公眾號中添加外鏈入口?
那么135編輯器就產(chǎn)生了解決這兩個(gè)問(wèn)題的工具:
生成短鏈接
圖像.png
我們先解決第一個(gè)問(wèn)題:讓“歷史消息頁(yè)面鏈接”在圖文消息中超鏈接。
先復制“歷史新聞頁(yè)面”鏈接,粘貼后復制生成的短鏈接。
灰色.gif
然后使用超鏈接按鈕將此鏈接超鏈接到具有外部鏈接權限的公眾號圖像和文本。

微信鏈接被識別和檢測。在我們生成一個(gè)短鏈接后,如果我們無(wú)法檢測到歷史新聞頁(yè)面的鏈接,我們可以加入它!
我們來(lái)解決第二個(gè)問(wèn)題:讓沒(méi)有外鏈權限的公眾號的圖文有外鏈的入口。
用鼠標點(diǎn)擊并拖動(dòng)生成的二維碼在新窗口中打開(kāi),右擊圖片,選擇復制圖片,然后將二維碼圖片粘貼到圖片和文字中。
沒(méi)有外鏈權限的公眾號可以放入二維碼,用戶(hù)可以識別二維碼進(jìn)入外鏈界面。
querylist采集微信公眾號文章(Python模擬操作微信App的所有歷史數據方法(詳見(jiàn))(圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 374 次瀏覽 ? 2022-03-27 20:04
鯤之鵬技術(shù)人員將在本文中介紹一種采集通過(guò)模擬微信App操作來(lái)指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket和Cookie)。
為了得到這四個(gè)參數,我們需要模擬App的運行,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(見(jiàn)詳情)。對于 HTTP 集成抓包,我們之前已經(jīng)介紹過(guò) Mitmproxy(詳見(jiàn))。
我們需要模擬微信的操作,完成以下步驟:
1.啟動(dòng)微信應用
2. 點(diǎn)擊“通訊錄”
3.點(diǎn)擊“公眾號”
4.點(diǎn)擊公眾號成為采集
5.點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”
此時(shí),我們可以從響應數據中捕獲__biz、appmsg_token和pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下圖。
通過(guò)以上四個(gè)參數,我們可以構造API請求獲取歷史列表文章,直接調用API接口獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變offset參數,可以得到所有的歷史數據。
# Cookie
headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'}
url = 'https://mp.weixin.qq.com/mp/profile_ext?'
data = {}
data['is_ok'] = '1'
data['count'] = '10'
data['wxtoken'] = ''
data['f'] = 'json'
data['scene'] = '124'
data['uin'] = '777'
data['key'] = '777'
data['offset'] = '0'
data['action'] = 'getmsg'
data['x5'] = '0'
# 下面三個(gè)參數需要替換
# https://mp.weixin.qq.com/mp/pr ... Dhome應答數據里會(huì )暴漏這三個(gè)參數
data['__biz'] = 'MjM5MzQyOTM1OQ=='
data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~'
data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE'
url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集流程操作截圖如下:
輸出截圖如下:
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。 查看全部
querylist采集微信公眾號文章(Python模擬操作微信App的所有歷史數據方法(詳見(jiàn))(圖))
鯤之鵬技術(shù)人員將在本文中介紹一種采集通過(guò)模擬微信App操作來(lái)指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket和Cookie)。

為了得到這四個(gè)參數,我們需要模擬App的運行,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(見(jiàn)詳情)。對于 HTTP 集成抓包,我們之前已經(jīng)介紹過(guò) Mitmproxy(詳見(jiàn))。
我們需要模擬微信的操作,完成以下步驟:
1.啟動(dòng)微信應用
2. 點(diǎn)擊“通訊錄”
3.點(diǎn)擊“公眾號”
4.點(diǎn)擊公眾號成為采集
5.點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”


此時(shí),我們可以從響應數據中捕獲__biz、appmsg_token和pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下圖。



通過(guò)以上四個(gè)參數,我們可以構造API請求獲取歷史列表文章,直接調用API接口獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變offset參數,可以得到所有的歷史數據。
# Cookie
headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'}
url = 'https://mp.weixin.qq.com/mp/profile_ext?'
data = {}
data['is_ok'] = '1'
data['count'] = '10'
data['wxtoken'] = ''
data['f'] = 'json'
data['scene'] = '124'
data['uin'] = '777'
data['key'] = '777'
data['offset'] = '0'
data['action'] = 'getmsg'
data['x5'] = '0'
# 下面三個(gè)參數需要替換
# https://mp.weixin.qq.com/mp/pr ... Dhome應答數據里會(huì )暴漏這三個(gè)參數
data['__biz'] = 'MjM5MzQyOTM1OQ=='
data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~'
data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE'
url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集流程操作截圖如下:

輸出截圖如下:

以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
querylist采集微信公眾號文章(querylist采集微信公眾號文章的信息濃縮了怎么辦?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 124 次瀏覽 ? 2022-03-27 08:04
querylist采集微信公眾號文章的信息。微信公眾號文章一般放在一個(gè)列表,每一條信息就像一個(gè)信息庫。針對每一個(gè)信息庫,可以有多次搜索機會(huì ),即可以多次批量提取微信公眾號文章鏈接。base64解碼。通過(guò)這兩步,可以在很大程度上避免抄襲問(wèn)題。但是從搜索的角度來(lái)說(shuō),很難區分可能有質(zhì)量的文章是來(lái)自公眾號的,還是其他平臺。傳統方法包括人工打標簽和用python的base64解碼。前者可能有累積性問(wèn)題,后者不可控性很大。
有靠譜的文章可以搜索到的地方也就是微信公眾號了,公眾號現在增多了不少,一百來(lái)個(gè)還算是正常的量。所以這個(gè)數量的文章就是信息的濃縮了。以前大部分都是人工一個(gè)個(gè)搜索來(lái)的,包括文章標題里的id,但是現在這方面做的比較好的只有搜狗和百度了。比如你想找來(lái)自“吃瓜群眾”的第一篇文章的鏈接,就搜索“吃瓜群眾#閱讀量6000+"然后就能搜到來(lái)自“看雪論壇”的所有來(lái)自“吃瓜群眾”的內容;找一篇發(fā)于10年前的新聞聯(lián)播的文章的鏈接,只需要搜索“新聞聯(lián)播#閱讀量4000+",就能搜索到內容發(fā)布于2007年的新聞了。
微信公眾號除了文章還有公眾號文章,其實(shí)就是一個(gè)文章列表庫,可以按類(lèi)別索引,但需要文章發(fā)布的時(shí)候才會(huì )更新。因此可以一個(gè)一個(gè)搜索。但搜索出來(lái)的文章質(zhì)量應該很高,本身微信里就是有百家號的內容,質(zhì)量應該比較高。不過(guò)有些公眾號圖文消息多,那么就需要用關(guān)鍵詞進(jìn)行定位了。主要是可以搜索的手段很多,也有很多方法,也有很多局限。以后能用到的方法應該會(huì )越來(lái)越多,有時(shí)候覺(jué)得還是文章質(zhì)量高,分類(lèi)定位合理方便處理。 查看全部
querylist采集微信公眾號文章(querylist采集微信公眾號文章的信息濃縮了怎么辦?)
querylist采集微信公眾號文章的信息。微信公眾號文章一般放在一個(gè)列表,每一條信息就像一個(gè)信息庫。針對每一個(gè)信息庫,可以有多次搜索機會(huì ),即可以多次批量提取微信公眾號文章鏈接。base64解碼。通過(guò)這兩步,可以在很大程度上避免抄襲問(wèn)題。但是從搜索的角度來(lái)說(shuō),很難區分可能有質(zhì)量的文章是來(lái)自公眾號的,還是其他平臺。傳統方法包括人工打標簽和用python的base64解碼。前者可能有累積性問(wèn)題,后者不可控性很大。
有靠譜的文章可以搜索到的地方也就是微信公眾號了,公眾號現在增多了不少,一百來(lái)個(gè)還算是正常的量。所以這個(gè)數量的文章就是信息的濃縮了。以前大部分都是人工一個(gè)個(gè)搜索來(lái)的,包括文章標題里的id,但是現在這方面做的比較好的只有搜狗和百度了。比如你想找來(lái)自“吃瓜群眾”的第一篇文章的鏈接,就搜索“吃瓜群眾#閱讀量6000+"然后就能搜到來(lái)自“看雪論壇”的所有來(lái)自“吃瓜群眾”的內容;找一篇發(fā)于10年前的新聞聯(lián)播的文章的鏈接,只需要搜索“新聞聯(lián)播#閱讀量4000+",就能搜索到內容發(fā)布于2007年的新聞了。
微信公眾號除了文章還有公眾號文章,其實(shí)就是一個(gè)文章列表庫,可以按類(lèi)別索引,但需要文章發(fā)布的時(shí)候才會(huì )更新。因此可以一個(gè)一個(gè)搜索。但搜索出來(lái)的文章質(zhì)量應該很高,本身微信里就是有百家號的內容,質(zhì)量應該比較高。不過(guò)有些公眾號圖文消息多,那么就需要用關(guān)鍵詞進(jìn)行定位了。主要是可以搜索的手段很多,也有很多方法,也有很多局限。以后能用到的方法應該會(huì )越來(lái)越多,有時(shí)候覺(jué)得還是文章質(zhì)量高,分類(lèi)定位合理方便處理。
querylist采集微信公眾號文章(微信小程序中如何打開(kāi)公眾號中的文章(圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 172 次瀏覽 ? 2022-03-25 21:12
本文文章主要介紹微信小程序如何獲取公眾號文章文章的列表和展示。文中的介紹很詳細,有一定的參考價(jià)值。有興趣的朋友一定要閱讀!
如何在微信小程序中打開(kāi)公眾號中的文章,步驟比較簡(jiǎn)單。
1、公共賬號設置
如果小程序想要獲取公眾號的資料,公眾號需要做一些設置。
1.1 綁定小程序
公眾號需要綁定目標小程序,否則無(wú)法打開(kāi)公眾號的文章。
在公眾號管理界面,點(diǎn)擊小程序管理-->關(guān)聯(lián)小程序
輸入小程序的AppID進(jìn)行搜索綁定。
1.2 公眾號開(kāi)發(fā)者功能配置
?。?)在公眾號管理界面,點(diǎn)擊開(kāi)發(fā)模塊中的基本配置選項。
(2) 打開(kāi)開(kāi)發(fā)者密碼(AppSecret),注意保存和更改密碼。
(3)設置IP白名單。這個(gè)是發(fā)起請求的機器的外網(wǎng)IP。如果是在自己的電腦上,就是你電腦的外網(wǎng)IP。如果部署到服務(wù)器上,它是服務(wù)器的外部IP。
2、獲取文章信息的步驟
以下僅用于演示。
在實(shí)際項目中,可以在自己的服務(wù)器程序中獲取,而不是直接在小程序中獲取。畢竟需要用到appid、appsecret等高度機密的參數。
2.1 獲取 access_token
access_token是公眾號全球唯一的API調用憑證。公眾號調用各個(gè)API時(shí)需要access_token。API 文檔
private?String?getToken()?throws?MalformedURLException,?IOException,?ProtocolException?{
//?access_token接口https請求方式:?GET?https://api.weixin.qq.com/cgi- ... ECRET
String?path?=?"?https://api.weixin.qq.com/cgi- ... 3B%3B
String?appid?=?"公眾號的開(kāi)發(fā)者ID(AppID)";
String?secret?=?"公眾號的開(kāi)發(fā)者密碼(AppSecret)";
URL?url?=?new?URL(path+"&appid="?+?appid?+?"&secret="?+?secret);
HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();?
connection.setRequestMethod("GET");
connection.connect();
InputStream?in?=?connection.getInputStream();
byte[]?b?=?new?byte[100];
int?len?=?-1;
StringBuffer?sb?=?new?StringBuffer();
while((len?=?in.read(b))?!=?-1)?{
sb.append(new?String(b,0,len));
}
System.out.println(sb.toString());
in.close();
return?sb.toString();
}
2.2 獲取文章的列表
API 文檔
private?String?getContentList(String?token)?throws?IOException?{
String?path?=?"?https://api.weixin.qq.com/cgi- ... ot%3B?+?token;
URL?url?=?new?URL(path);
HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();?
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("content-type",?"application/json;charset=utf-8");
connection.connect();
//?post發(fā)送的參數
Map?map?=?new?HashMap();
map.put("type",?"news");?//?news表示圖文類(lèi)型的素材,具體看API文檔
map.put("offset",?0);
map.put("count",?1);
//?將map轉換成json字符串
String?paramBody?=?JSON.toJSONString(map);?//?這里用了Alibaba的fastjson
OutputStream?out?=?connection.getOutputStream();
BufferedWriter?bw?=?new?BufferedWriter(new?OutputStreamWriter(out));
bw.write(paramBody);?//?向流中寫(xiě)入參數字符串
bw.flush();
InputStream?in?=?connection.getInputStream();
byte[]?b?=?new?byte[100];
int?len?=?-1;
StringBuffer?sb?=?new?StringBuffer();
while((len?=?in.read(b))?!=?-1)?{
sb.append(new?String(b,0,len));
}
in.close();
return?sb.toString();
}
測試:
@Test
public?void?test()?throws?IOException?{
String?result1?=?getToken();
Map?token?=?(Map)?JSON.parseObject(result1);
String?result2?=?getContentList(token.get("access_token").toString());
System.out.println(result2);
}
轉換為json格式,參數說(shuō)明見(jiàn)上述API文檔
第二張圖片中的url是公眾號文章的地址,獲得的tem物品數量就會(huì )有多少物品。只要得到以上結果,在小程序中打開(kāi)公眾號文章就有過(guò)半成功了。
最后可以在小程序中使用組件打開(kāi),src中文章的url地址。
以上就是微信小程序文章文章《如何獲取公眾號文章文章的列表和展示》的全部?jì)热?,感謝閱讀!希望分享的內容對您有所幫助。更多相關(guān)知識,請關(guān)注易宿云行業(yè)資訊頻道! 查看全部
querylist采集微信公眾號文章(微信小程序中如何打開(kāi)公眾號中的文章(圖))
本文文章主要介紹微信小程序如何獲取公眾號文章文章的列表和展示。文中的介紹很詳細,有一定的參考價(jià)值。有興趣的朋友一定要閱讀!
如何在微信小程序中打開(kāi)公眾號中的文章,步驟比較簡(jiǎn)單。
1、公共賬號設置
如果小程序想要獲取公眾號的資料,公眾號需要做一些設置。
1.1 綁定小程序
公眾號需要綁定目標小程序,否則無(wú)法打開(kāi)公眾號的文章。
在公眾號管理界面,點(diǎn)擊小程序管理-->關(guān)聯(lián)小程序

輸入小程序的AppID進(jìn)行搜索綁定。

1.2 公眾號開(kāi)發(fā)者功能配置
?。?)在公眾號管理界面,點(diǎn)擊開(kāi)發(fā)模塊中的基本配置選項。

(2) 打開(kāi)開(kāi)發(fā)者密碼(AppSecret),注意保存和更改密碼。
(3)設置IP白名單。這個(gè)是發(fā)起請求的機器的外網(wǎng)IP。如果是在自己的電腦上,就是你電腦的外網(wǎng)IP。如果部署到服務(wù)器上,它是服務(wù)器的外部IP。

2、獲取文章信息的步驟
以下僅用于演示。
在實(shí)際項目中,可以在自己的服務(wù)器程序中獲取,而不是直接在小程序中獲取。畢竟需要用到appid、appsecret等高度機密的參數。
2.1 獲取 access_token
access_token是公眾號全球唯一的API調用憑證。公眾號調用各個(gè)API時(shí)需要access_token。API 文檔
private?String?getToken()?throws?MalformedURLException,?IOException,?ProtocolException?{
//?access_token接口https請求方式:?GET?https://api.weixin.qq.com/cgi- ... ECRET
String?path?=?"?https://api.weixin.qq.com/cgi- ... 3B%3B
String?appid?=?"公眾號的開(kāi)發(fā)者ID(AppID)";
String?secret?=?"公眾號的開(kāi)發(fā)者密碼(AppSecret)";
URL?url?=?new?URL(path+"&appid="?+?appid?+?"&secret="?+?secret);
HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();?
connection.setRequestMethod("GET");
connection.connect();
InputStream?in?=?connection.getInputStream();
byte[]?b?=?new?byte[100];
int?len?=?-1;
StringBuffer?sb?=?new?StringBuffer();
while((len?=?in.read(b))?!=?-1)?{
sb.append(new?String(b,0,len));
}
System.out.println(sb.toString());
in.close();
return?sb.toString();
}
2.2 獲取文章的列表
API 文檔
private?String?getContentList(String?token)?throws?IOException?{
String?path?=?"?https://api.weixin.qq.com/cgi- ... ot%3B?+?token;
URL?url?=?new?URL(path);
HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();?
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("content-type",?"application/json;charset=utf-8");
connection.connect();
//?post發(fā)送的參數
Map?map?=?new?HashMap();
map.put("type",?"news");?//?news表示圖文類(lèi)型的素材,具體看API文檔
map.put("offset",?0);
map.put("count",?1);
//?將map轉換成json字符串
String?paramBody?=?JSON.toJSONString(map);?//?這里用了Alibaba的fastjson
OutputStream?out?=?connection.getOutputStream();
BufferedWriter?bw?=?new?BufferedWriter(new?OutputStreamWriter(out));
bw.write(paramBody);?//?向流中寫(xiě)入參數字符串
bw.flush();
InputStream?in?=?connection.getInputStream();
byte[]?b?=?new?byte[100];
int?len?=?-1;
StringBuffer?sb?=?new?StringBuffer();
while((len?=?in.read(b))?!=?-1)?{
sb.append(new?String(b,0,len));
}
in.close();
return?sb.toString();
}
測試:
@Test
public?void?test()?throws?IOException?{
String?result1?=?getToken();
Map?token?=?(Map)?JSON.parseObject(result1);
String?result2?=?getContentList(token.get("access_token").toString());
System.out.println(result2);
}

轉換為json格式,參數說(shuō)明見(jiàn)上述API文檔


第二張圖片中的url是公眾號文章的地址,獲得的tem物品數量就會(huì )有多少物品。只要得到以上結果,在小程序中打開(kāi)公眾號文章就有過(guò)半成功了。
最后可以在小程序中使用組件打開(kāi),src中文章的url地址。

以上就是微信小程序文章文章《如何獲取公眾號文章文章的列表和展示》的全部?jì)热?,感謝閱讀!希望分享的內容對您有所幫助。更多相關(guān)知識,請關(guān)注易宿云行業(yè)資訊頻道!
querylist采集微信公眾號文章(如何用微信公眾號同SAPC4C的ODataAPI.?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 151 次瀏覽 ? 2022-03-25 07:24
最近有很多朋友問(wèn)我微信上SAP系統和微信公眾號的整合,所以我把當時(shí)寫(xiě)的英文版翻譯成中文重新發(fā)布到我的公眾號上。
需要注意的是,三年后,微信公眾號的開(kāi)發(fā)流程可能會(huì )發(fā)生變化,請自行識別。系統集成了微信公眾號,三年前我選擇了SAP Cloud for Customer。
永遠記住,我們系列的目標是學(xué)習如何使用微信公眾號與SAP系統(SAP Cloud for Customer,以下簡(jiǎn)稱(chēng)C4C)集成。要實(shí)現這個(gè)目標,需要通過(guò)微信公眾號使用SAP C4C的OData API。
作為學(xué)習的第一步,我們首先學(xué)習如何調用微信公眾號上的通用API,而不是SAP C4C OData API。
假設這樣一個(gè)簡(jiǎn)單的場(chǎng)景:用戶(hù)關(guān)注微信公眾號后,通過(guò)微信應用向公眾號發(fā)送了一些短信。公眾號收到這些短信后,會(huì )轉發(fā)到本系列第一篇文章中提到的微信消息服務(wù)器文章微信開(kāi)發(fā)環(huán)境搭建。此時(shí),微信消息服務(wù)器收到轉發(fā)的文本信息后,會(huì )調用一些帶有人工智能的API,并通過(guò)微信APP將API響應返回給用戶(hù)。
與微信消息服務(wù)器綁定的微信公眾號,在這個(gè)場(chǎng)景中實(shí)際上扮演了一個(gè)簡(jiǎn)單的聊天機器人的角色。用戶(hù)與微信公眾號通過(guò)問(wèn)答方式進(jìn)行互動(dòng)。
Jerry 還記得,他上大學(xué)的時(shí)候,上過(guò)專(zhuān)業(yè)課《Unix 網(wǎng)絡(luò )編程》。其中一個(gè)練習是通過(guò)套接字實(shí)現一對客戶(hù)端和服務(wù)器??蛻?hù)端向服務(wù)器發(fā)送了一個(gè)字符串,服務(wù)器完整地接收到了它。返回它,即所謂的 Echo Server。
在實(shí)現微信聊天機器人之前,我們先降低難度,實(shí)現一個(gè)簡(jiǎn)單的微信回顯服務(wù),即無(wú)論用戶(hù)向公眾號發(fā)送什么信息,都會(huì )收到信息本身,加上前綴“Add by Jerry”。
本文使用的項目的完整源代碼可以從我的 Github 下載。
首先,在 server.js 中,使用 nodejs express 庫來(lái)啟動(dòng)一個(gè) web 服務(wù)器:
上圖第二行中routesEngine的實(shí)現位于index.js中。當微信app收到用戶(hù)通過(guò)微信app發(fā)送的短信時(shí),會(huì )通過(guò)HTTP POST請求轉發(fā)給微信消息服務(wù)器。微信消息服務(wù)器收到請求后,調用第五行的echoService處理:
echoService 的實(shí)現位于文件 echo.js 中:首先從變量 req(第 11 行)中收錄的 HTTP 請求中解析用戶(hù)輸入的文本信息,然后添加前綴“Add by Jerry:”,然后存儲結果。在變量content(第13行)中,最后調用自研工具方法replyMessage,將前綴文本信息返回給用戶(hù)。
上圖第15行replyMessage工具方法需要在微信app轉發(fā)給微信消息服務(wù)器的HTTP POST請求中解析出發(fā)送消息的微信用戶(hù)id,然后發(fā)送以“Add by Jerry”為前綴的內容:" 發(fā)給這個(gè)id標識的微信用戶(hù)。
replyMessage 的實(shí)現在replyMessage.js 中:
有了 Echo Service 的實(shí)現經(jīng)驗,實(shí)現微信聊天機器人沒(méi)有難度。
只需將 index.js 中接收到 HTTP Post 請求后的操作由調用 echoService 更改為調用新的實(shí)現,tuningService 即可。
調用圖靈API的tuningService函數的源碼可以在這里下載。
我在 2017 年使用的 Turing API 由以下 網(wǎng)站 提供:
申請API key,粘貼到下圖第6行的url中:
解析用戶(hù)輸入的文本信息,在第20行存儲到body變量中,使用encodeURI處理,直接拼接到圖靈API url的末尾,然后使用request函數調用圖靈API第27行,在匿名回調函數中獲取API的響應,最后調用工具方法replyMessage,通過(guò)微信消息服務(wù)器將響應發(fā)送給微信app。 查看全部
querylist采集微信公眾號文章(如何用微信公眾號同SAPC4C的ODataAPI.?)
最近有很多朋友問(wèn)我微信上SAP系統和微信公眾號的整合,所以我把當時(shí)寫(xiě)的英文版翻譯成中文重新發(fā)布到我的公眾號上。
需要注意的是,三年后,微信公眾號的開(kāi)發(fā)流程可能會(huì )發(fā)生變化,請自行識別。系統集成了微信公眾號,三年前我選擇了SAP Cloud for Customer。
永遠記住,我們系列的目標是學(xué)習如何使用微信公眾號與SAP系統(SAP Cloud for Customer,以下簡(jiǎn)稱(chēng)C4C)集成。要實(shí)現這個(gè)目標,需要通過(guò)微信公眾號使用SAP C4C的OData API。
作為學(xué)習的第一步,我們首先學(xué)習如何調用微信公眾號上的通用API,而不是SAP C4C OData API。
假設這樣一個(gè)簡(jiǎn)單的場(chǎng)景:用戶(hù)關(guān)注微信公眾號后,通過(guò)微信應用向公眾號發(fā)送了一些短信。公眾號收到這些短信后,會(huì )轉發(fā)到本系列第一篇文章中提到的微信消息服務(wù)器文章微信開(kāi)發(fā)環(huán)境搭建。此時(shí),微信消息服務(wù)器收到轉發(fā)的文本信息后,會(huì )調用一些帶有人工智能的API,并通過(guò)微信APP將API響應返回給用戶(hù)。

與微信消息服務(wù)器綁定的微信公眾號,在這個(gè)場(chǎng)景中實(shí)際上扮演了一個(gè)簡(jiǎn)單的聊天機器人的角色。用戶(hù)與微信公眾號通過(guò)問(wèn)答方式進(jìn)行互動(dòng)。

Jerry 還記得,他上大學(xué)的時(shí)候,上過(guò)專(zhuān)業(yè)課《Unix 網(wǎng)絡(luò )編程》。其中一個(gè)練習是通過(guò)套接字實(shí)現一對客戶(hù)端和服務(wù)器??蛻?hù)端向服務(wù)器發(fā)送了一個(gè)字符串,服務(wù)器完整地接收到了它。返回它,即所謂的 Echo Server。
在實(shí)現微信聊天機器人之前,我們先降低難度,實(shí)現一個(gè)簡(jiǎn)單的微信回顯服務(wù),即無(wú)論用戶(hù)向公眾號發(fā)送什么信息,都會(huì )收到信息本身,加上前綴“Add by Jerry”。

本文使用的項目的完整源代碼可以從我的 Github 下載。
首先,在 server.js 中,使用 nodejs express 庫來(lái)啟動(dòng)一個(gè) web 服務(wù)器:

上圖第二行中routesEngine的實(shí)現位于index.js中。當微信app收到用戶(hù)通過(guò)微信app發(fā)送的短信時(shí),會(huì )通過(guò)HTTP POST請求轉發(fā)給微信消息服務(wù)器。微信消息服務(wù)器收到請求后,調用第五行的echoService處理:

echoService 的實(shí)現位于文件 echo.js 中:首先從變量 req(第 11 行)中收錄的 HTTP 請求中解析用戶(hù)輸入的文本信息,然后添加前綴“Add by Jerry:”,然后存儲結果。在變量content(第13行)中,最后調用自研工具方法replyMessage,將前綴文本信息返回給用戶(hù)。

上圖第15行replyMessage工具方法需要在微信app轉發(fā)給微信消息服務(wù)器的HTTP POST請求中解析出發(fā)送消息的微信用戶(hù)id,然后發(fā)送以“Add by Jerry”為前綴的內容:" 發(fā)給這個(gè)id標識的微信用戶(hù)。
replyMessage 的實(shí)現在replyMessage.js 中:

有了 Echo Service 的實(shí)現經(jīng)驗,實(shí)現微信聊天機器人沒(méi)有難度。
只需將 index.js 中接收到 HTTP Post 請求后的操作由調用 echoService 更改為調用新的實(shí)現,tuningService 即可。

調用圖靈API的tuningService函數的源碼可以在這里下載。
我在 2017 年使用的 Turing API 由以下 網(wǎng)站 提供:

申請API key,粘貼到下圖第6行的url中:

解析用戶(hù)輸入的文本信息,在第20行存儲到body變量中,使用encodeURI處理,直接拼接到圖靈API url的末尾,然后使用request函數調用圖靈API第27行,在匿名回調函數中獲取API的響應,最后調用工具方法replyMessage,通過(guò)微信消息服務(wù)器將響應發(fā)送給微信app。
querylist采集微信公眾號文章(為什么你的App會(huì )卡頓-Android-掘金Cover有什么料?(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 206 次瀏覽 ? 2022-03-25 01:09
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程
推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId
作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
史上最全的Android文章精選合集
作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
微信支付教程系列公眾號支付
作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信支付教程系列現金紅包
作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題
作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪
作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號中獲取用戶(hù)的地理位置需要js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答
作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容
作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文 查看全部
querylist采集微信公眾號文章(為什么你的App會(huì )卡頓-Android-掘金Cover有什么料?(組圖))
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程

推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId


作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
史上最全的Android文章精選合集


作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
微信支付教程系列公眾號支付


作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信支付教程系列現金紅包


作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題


作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪


作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號中獲取用戶(hù)的地理位置需要js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答


作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容


作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文
querylist采集微信公眾號文章(微信公眾號開(kāi)發(fā)之VS遠程調試(二)(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 278 次瀏覽 ? 2022-03-25 01:08
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程
推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題
作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
微信支付教程系列公眾號支付
作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)的Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信支付教程系列現金紅包
作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)的Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId
作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答
作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪
作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號中獲取用戶(hù)的地理位置需要一個(gè)js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
史上最全的Android文章精選合集
作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容
作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文 查看全部
querylist采集微信公眾號文章(微信公眾號開(kāi)發(fā)之VS遠程調試(二)(組圖))
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程

推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題


作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
微信支付教程系列公眾號支付


作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)的Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信支付教程系列現金紅包


作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)微信公眾號授權獲取用戶(hù)基本信息(五)當前用戶(hù)的Openid及注意事項可在微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)中及時(shí)獲?。┪⑿殴娞栭_(kāi)發(fā))
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId


作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答


作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪


作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號中獲取用戶(hù)的地理位置需要一個(gè)js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
史上最全的Android文章精選合集


作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容


作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文
querylist采集微信公眾號文章(為什么你的App會(huì )卡頓-Android-掘金Cover(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 178 次瀏覽 ? 2022-03-25 01:02
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程
推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
史上最全的Android文章精選合集
作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答
作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪
作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、獲取用戶(hù)在微信公眾號的地理位置需要js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題
作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId
作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容
作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文
微信支付教程系列現金紅包
作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)由微信公眾號授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)站可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)的
閱讀全文
微信支付教程系列公眾號支付
作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)由微信公眾號授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)站可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)的
閱讀全文 查看全部
querylist采集微信公眾號文章(為什么你的App會(huì )卡頓-Android-掘金Cover(組圖))
阿里云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程

推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)話(huà)題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
史上最全的Android文章精選合集


作者:android飛魚(yú)2557人查看評論:03年前
用兩張圖告訴你,為什么你的應用卡住了?- Android - Nuggets Cover 有什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎?... Android常見(jiàn)的獲取View寬高的正確方法
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答


作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql。您可以在 Internet 上找到相應的教程以了解一般語(yǔ)法。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪


作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、獲取用戶(hù)在微信公眾號的地理位置需要js-sdk簽名包(文檔里面有如何獲取的介紹)2、根據獲取到的地理位置, ajax去后臺請求,通過(guò)sql語(yǔ)句,查詢(xún)中就近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、來(lái)查詢(xún)store list根據城市,使用
閱讀全文
【044】微信公眾平臺開(kāi)發(fā)教程第20章——40個(gè)新手謎題


作者:云啟希望。2102人查看評論數:04年前
筆者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,聯(lián)系了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,筆者將這些問(wèn)題。并整理出答案,以幫助許多剛開(kāi)始學(xué)習少走彎路的人。1、訂閱賬戶(hù)和服務(wù)賬戶(hù)的主要區別是什么?
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId


作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年在微信小程序支付、小程序支付、支付寶小程序支付、云閃付小程序支付方面的工作和研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以想把記錄寫(xiě)下來(lái),以后遇到微信相關(guān)的API調用,用不了那么久。
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容


作者:thinkyoung1544 人瀏覽評論:06年前
以前,我使用Java Jsoup 來(lái)捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。QueryList 是一個(gè)基于 phpQ 的
閱讀全文
微信支付教程系列現金紅包


作者:micahel1530 觀(guān)眾評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)由微信公眾號授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)站可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)的
閱讀全文
微信支付教程系列公眾號支付


作者:micahel1202 人瀏覽評論:03年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)(四)開(kāi)發(fā)的網(wǎng)頁(yè)由微信公眾號授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)站可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)的
閱讀全文
querylist采集微信公眾號文章(如何獲取微信公眾號所有文章?ID與開(kāi)發(fā)者密碼)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 454 次瀏覽 ? 2022-03-24 00:24
導出所有公眾號文章
隨著(zhù)互聯(lián)網(wǎng)的不斷發(fā)展,互聯(lián)網(wǎng)上出現了許多自媒體平臺。不用說(shuō),相信大家都知道現在哪些平臺很火。
可以說(shuō),所有知名的自媒體都有自己的公眾號。然而,平臺的創(chuàng )新和涌現可謂是層出不窮。如果需要在平臺上直播,則必須獲取原平臺的歷史資源。
例如,對于微信公眾號,我們需要獲取微信公眾號的文章。導出后,我們可以在其他平臺上查看。那么如何獲取我們公眾號下的所有文章呢?
開(kāi)發(fā)者 ID 和開(kāi)發(fā)者密碼
其實(shí)公眾號為我們的開(kāi)發(fā)提供了一個(gè)非常友好的界面,我們可以得到文章的所有鏈接,而不需要一一抓取。
如上圖,我們需要進(jìn)入公眾號主頁(yè),然后通過(guò)設置與開(kāi)發(fā)-基礎配置找到開(kāi)發(fā)者ID和開(kāi)發(fā)者密碼。
因為微信為我們提供了一個(gè)專(zhuān)門(mén)為我們獲取公眾號文章的接口,具體接口URL如下代碼所示:
https://api.weixin.qq.com/cgi- ... ECRET
這里的APPID是開(kāi)發(fā)中的ID,APPSECRET是開(kāi)發(fā)者密碼,獲取方式如下圖。
但是,有一個(gè)IP白名需要注意。為了公眾號文章的安全,必須設置IP地址才能獲取。如果后面的代碼不在IP下運行,肯定會(huì )報錯。
如上圖所示,IP白名單就是直接設置你的IP地址。設置完成后點(diǎn)擊修改,彈出二維碼,用微信掃描即可。
https://api.weixin.qq.com/cgi- ... en%3D
這還不夠,因為URL接口只獲取access_token,也就是訪(fǎng)問(wèn)公眾號的token,獲取公眾號的鏈接文章就是上面那個(gè)。
獲取Json格式的公眾號文章信息
現在我們對原理有了基本的了解,下面我們通過(guò)實(shí)戰來(lái)獲取文章的所有公眾號標題、鏈接、描述、展示圖片。一個(gè)例子如下:
import requests
import json
import csv
def getGZHJson(appid, secret):
path = " https://api.weixin.qq.com/cgi- ... ot%3B
url = path + "&appid=" + appid + "&secret=" + secret
result = requests.get(url)
token = json.loads(result.text)
access_token = token["access_token"]
data = {
"type": "news",
"offset": 0,
"count": 1,
}
headers = {
"content-type": "application/json",
"Accept-Language": "zh-CN,zh;q=0.9"
}
url = "https://api.weixin.qq.com/cgi- ... ot%3B + access_token
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
count = int(result["total_count"])
gzh_dict = {"news_item": []}
for i in range(0, count):
data["offset"] = i
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
for item in result["item"][0]["content"]["news_item"]:
temp_dict = {}
temp_dict["title"] = item["title"]
temp_dict["digest"] = item["digest"]
temp_dict["url"] = item["url"]
temp_dict["thumb_url"] = item["thumb_url"]
print(temp_dict)
gzh_dict["news_item"].append(temp_dict)
return json.dumps(gzh_dict)
getGZHJson("開(kāi)發(fā)者ID", "開(kāi)發(fā)者密碼")
這里,我們看一下結果的原創(chuàng )文本數據,如下:
在原創(chuàng )的JSON數據中,有一個(gè)非常重要的數據就是total_count,它是公眾號成立以來(lái)的推送次數。
不過(guò)需要注意的是,公眾號可以一次推送一篇文章,也可以一次推送2、3、4篇文章,并不總是一樣的。
至于獲取哪些推送數據,可以通過(guò)offset追溯到源頭。至于每次有多少篇文章,需要確定返回多少Json數據news_item。如下所示:
因此,我們還為其添加了遍歷。第一層遍歷是微信公眾號推送當天的數據,第二層遍歷是當天發(fā)送的文章數。運行后效果如下:
參數含義
標題
文章標題
消化
文章說(shuō)明
網(wǎng)址
文章鏈接
拇指網(wǎng)址
文章顯示地圖
將數據保存到 CSV 文件
當然,我們獲取的數據并不是在控制臺上打印出來(lái),而是導出數據。因此,我們將上述數據打包成 CSV 文件并保存。
一個(gè)例子如下:
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
print(result.encoding)
result = json.loads(result.text)
count = int(result["total_count"])
#替換下面的代碼
ulist = ["_id", "title", "digest", "url", "thumb_url"]
# 保存數據到csv文件
new_item_csv = "week"
with open("{}.csv".format(new_item_csv), "w", encoding="utf-8-sig", newline="") as f:
writer = csv.writer(f, dialect="excel")
writer.writerow(ulist)
for i in range(0, count):
data["offset"] = i
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
for item in result["item"][0]["content"]["news_item"]:
writer.writerow([count_id, item["title"], item["digest"], item["url"], item["thumb_url"]])
count_id += 1
這里只需要更改代碼count = int(result['total_count"])下面的所有數據即可。上面的代碼保持不變。
需要注意的是,之所以設置result.encoding = result.apparent_encoding,是因為我們事先并不知道返回數據的編碼。這確保了可以有效地解析任何編碼。
運行后如下圖,公眾號文章的所有基本信息都已獲取。
這是文章關(guān)于使用Python獲取公眾號下所有文章的介紹。更多關(guān)于Python獲取公眾號文章的信息,請搜索上一期服務(wù)器首頁(yè)文章或繼續瀏覽以下相關(guān)文章希望大家多多支持服務(wù)器首頁(yè)未來(lái)!
原文鏈接: 查看全部
querylist采集微信公眾號文章(如何獲取微信公眾號所有文章?ID與開(kāi)發(fā)者密碼)
導出所有公眾號文章
隨著(zhù)互聯(lián)網(wǎng)的不斷發(fā)展,互聯(lián)網(wǎng)上出現了許多自媒體平臺。不用說(shuō),相信大家都知道現在哪些平臺很火。
可以說(shuō),所有知名的自媒體都有自己的公眾號。然而,平臺的創(chuàng )新和涌現可謂是層出不窮。如果需要在平臺上直播,則必須獲取原平臺的歷史資源。
例如,對于微信公眾號,我們需要獲取微信公眾號的文章。導出后,我們可以在其他平臺上查看。那么如何獲取我們公眾號下的所有文章呢?
開(kāi)發(fā)者 ID 和開(kāi)發(fā)者密碼
其實(shí)公眾號為我們的開(kāi)發(fā)提供了一個(gè)非常友好的界面,我們可以得到文章的所有鏈接,而不需要一一抓取。

如上圖,我們需要進(jìn)入公眾號主頁(yè),然后通過(guò)設置與開(kāi)發(fā)-基礎配置找到開(kāi)發(fā)者ID和開(kāi)發(fā)者密碼。
因為微信為我們提供了一個(gè)專(zhuān)門(mén)為我們獲取公眾號文章的接口,具體接口URL如下代碼所示:
https://api.weixin.qq.com/cgi- ... ECRET
這里的APPID是開(kāi)發(fā)中的ID,APPSECRET是開(kāi)發(fā)者密碼,獲取方式如下圖。

但是,有一個(gè)IP白名需要注意。為了公眾號文章的安全,必須設置IP地址才能獲取。如果后面的代碼不在IP下運行,肯定會(huì )報錯。

如上圖所示,IP白名單就是直接設置你的IP地址。設置完成后點(diǎn)擊修改,彈出二維碼,用微信掃描即可。
https://api.weixin.qq.com/cgi- ... en%3D
這還不夠,因為URL接口只獲取access_token,也就是訪(fǎng)問(wèn)公眾號的token,獲取公眾號的鏈接文章就是上面那個(gè)。
獲取Json格式的公眾號文章信息
現在我們對原理有了基本的了解,下面我們通過(guò)實(shí)戰來(lái)獲取文章的所有公眾號標題、鏈接、描述、展示圖片。一個(gè)例子如下:
import requests
import json
import csv
def getGZHJson(appid, secret):
path = " https://api.weixin.qq.com/cgi- ... ot%3B
url = path + "&appid=" + appid + "&secret=" + secret
result = requests.get(url)
token = json.loads(result.text)
access_token = token["access_token"]
data = {
"type": "news",
"offset": 0,
"count": 1,
}
headers = {
"content-type": "application/json",
"Accept-Language": "zh-CN,zh;q=0.9"
}
url = "https://api.weixin.qq.com/cgi- ... ot%3B + access_token
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
count = int(result["total_count"])
gzh_dict = {"news_item": []}
for i in range(0, count):
data["offset"] = i
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
for item in result["item"][0]["content"]["news_item"]:
temp_dict = {}
temp_dict["title"] = item["title"]
temp_dict["digest"] = item["digest"]
temp_dict["url"] = item["url"]
temp_dict["thumb_url"] = item["thumb_url"]
print(temp_dict)
gzh_dict["news_item"].append(temp_dict)
return json.dumps(gzh_dict)
getGZHJson("開(kāi)發(fā)者ID", "開(kāi)發(fā)者密碼")
這里,我們看一下結果的原創(chuàng )文本數據,如下:

在原創(chuàng )的JSON數據中,有一個(gè)非常重要的數據就是total_count,它是公眾號成立以來(lái)的推送次數。
不過(guò)需要注意的是,公眾號可以一次推送一篇文章,也可以一次推送2、3、4篇文章,并不總是一樣的。
至于獲取哪些推送數據,可以通過(guò)offset追溯到源頭。至于每次有多少篇文章,需要確定返回多少Json數據news_item。如下所示:

因此,我們還為其添加了遍歷。第一層遍歷是微信公眾號推送當天的數據,第二層遍歷是當天發(fā)送的文章數。運行后效果如下:

參數含義
標題
文章標題
消化
文章說(shuō)明
網(wǎng)址
文章鏈接
拇指網(wǎng)址
文章顯示地圖
將數據保存到 CSV 文件
當然,我們獲取的數據并不是在控制臺上打印出來(lái),而是導出數據。因此,我們將上述數據打包成 CSV 文件并保存。
一個(gè)例子如下:
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
print(result.encoding)
result = json.loads(result.text)
count = int(result["total_count"])
#替換下面的代碼
ulist = ["_id", "title", "digest", "url", "thumb_url"]
# 保存數據到csv文件
new_item_csv = "week"
with open("{}.csv".format(new_item_csv), "w", encoding="utf-8-sig", newline="") as f:
writer = csv.writer(f, dialect="excel")
writer.writerow(ulist)
for i in range(0, count):
data["offset"] = i
result = requests.post(url=url, data=json.dumps(data), headers=headers)
result.encoding = result.apparent_encoding
result = json.loads(result.text)
for item in result["item"][0]["content"]["news_item"]:
writer.writerow([count_id, item["title"], item["digest"], item["url"], item["thumb_url"]])
count_id += 1
這里只需要更改代碼count = int(result['total_count"])下面的所有數據即可。上面的代碼保持不變。
需要注意的是,之所以設置result.encoding = result.apparent_encoding,是因為我們事先并不知道返回數據的編碼。這確保了可以有效地解析任何編碼。
運行后如下圖,公眾號文章的所有基本信息都已獲取。

這是文章關(guān)于使用Python獲取公眾號下所有文章的介紹。更多關(guān)于Python獲取公眾號文章的信息,請搜索上一期服務(wù)器首頁(yè)文章或繼續瀏覽以下相關(guān)文章希望大家多多支持服務(wù)器首頁(yè)未來(lái)!
原文鏈接:
querylist采集微信公眾號文章(querylist采集微信公眾號文章、應用二維碼,整體測試代碼)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 185 次瀏覽 ? 2022-03-23 02:01
querylist采集微信公眾號文章、應用二維碼。詳細介紹可以看下我的這篇文章,關(guān)于querylist的實(shí)現方式,支持二維碼,整體測試代碼如下:這里有我寫(xiě)的一篇基于mongodb的react+redux+egg-router做應用二維碼+微信公眾號的開(kāi)發(fā)文章,對于微信二維碼本身的處理寫(xiě)的比較深入,有興趣的朋友可以去看看。querylist二維碼解析demo:querylist。
二維碼的二維碼基本是不能復制的,需要生成二維碼的時(shí)候進(jìn)行config屬性配置防止復制。ios開(kāi)發(fā)者可以直接在ios文件中配置imf,partialiftrim('2'){fragmentid='0307';trim('\'');}即可進(jìn)行復制。二維碼的生成看到有人推薦用postman,但我覺(jué)得這個(gè)方法不靠譜,其他語(yǔ)言不了解。
第一次看見(jiàn)可以提交的方式。
mgstyle二維碼具體哪里查看這個(gè)吧,不太好說(shuō),
recode不知道這個(gè)
step1。在github上面關(guān)注一下uenocloud的項目fogu-zhang/querylist·githubstep2。打開(kāi)項目查看幫助step3。查看源碼,方便第三方同學(xué)第一次接觸二維碼然后再修改你需要的代碼step4。交互中step5。step6。step7。第三方的同學(xué)github上面提交代碼step8。
還可以在本地瀏覽github上面這個(gè)項目step9。完成以上步驟也可以在本地搭建二維碼服務(wù)那么一起看看我自己發(fā)的項目,一個(gè)博客應用的項目querylist。 查看全部
querylist采集微信公眾號文章(querylist采集微信公眾號文章、應用二維碼,整體測試代碼)
querylist采集微信公眾號文章、應用二維碼。詳細介紹可以看下我的這篇文章,關(guān)于querylist的實(shí)現方式,支持二維碼,整體測試代碼如下:這里有我寫(xiě)的一篇基于mongodb的react+redux+egg-router做應用二維碼+微信公眾號的開(kāi)發(fā)文章,對于微信二維碼本身的處理寫(xiě)的比較深入,有興趣的朋友可以去看看。querylist二維碼解析demo:querylist。
二維碼的二維碼基本是不能復制的,需要生成二維碼的時(shí)候進(jìn)行config屬性配置防止復制。ios開(kāi)發(fā)者可以直接在ios文件中配置imf,partialiftrim('2'){fragmentid='0307';trim('\'');}即可進(jìn)行復制。二維碼的生成看到有人推薦用postman,但我覺(jué)得這個(gè)方法不靠譜,其他語(yǔ)言不了解。
第一次看見(jiàn)可以提交的方式。
mgstyle二維碼具體哪里查看這個(gè)吧,不太好說(shuō),
recode不知道這個(gè)
step1。在github上面關(guān)注一下uenocloud的項目fogu-zhang/querylist·githubstep2。打開(kāi)項目查看幫助step3。查看源碼,方便第三方同學(xué)第一次接觸二維碼然后再修改你需要的代碼step4。交互中step5。step6。step7。第三方的同學(xué)github上面提交代碼step8。
還可以在本地瀏覽github上面這個(gè)項目step9。完成以上步驟也可以在本地搭建二維碼服務(wù)那么一起看看我自己發(fā)的項目,一個(gè)博客應用的項目querylist。
querylist采集微信公眾號文章(有哪些高質(zhì)量的微信公眾號文章推送的鏈接?)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 109 次瀏覽 ? 2022-03-21 14:08
querylist采集微信公眾號文章推送的鏈接,使用google的googleanalytics,谷歌搜索抓取,traversableviavideo返回公眾號鏈接。querylist還可以批量下載文章下載二維碼,公眾號的文章,可以直接獲取下載二維碼。
技術(shù)牛人多回復分享更多干貨!看到一篇和我想法很相似的文章
vitess,weixindisallowit。formerweixinallowssharingwechatcontenttoattributebyyourown。copyrightrightsownerexists。excludegainstitute'svideorecordingfoundationproduct;contentmissingintheweixindisallowsvideorecordingonpublicsafety。
有哪些高質(zhì)量的微信公眾號文章推送,能夠一鍵直達微信群?-mr彭的回答提供了從微信公眾號源文件下載、開(kāi)源微信小程序之類(lèi)的。
有木有,保存本文章,然后共享,
百度文庫免費下載百度文庫也提供網(wǎng)盤(pán)的下載
豬八戒上面有客一鍵下單的??梢試L試一下。
技術(shù)牛人多回復分享更多干貨!看到一篇和我想法很相似的文章,希望對你有幫助。
考試官網(wǎng),免費題庫,由中國大學(xué)mooc的engineercenter提供。其中浙江大學(xué)的課程比較全,人教,浙大的都有,其他的不用考慮了。 查看全部
querylist采集微信公眾號文章(有哪些高質(zhì)量的微信公眾號文章推送的鏈接?)
querylist采集微信公眾號文章推送的鏈接,使用google的googleanalytics,谷歌搜索抓取,traversableviavideo返回公眾號鏈接。querylist還可以批量下載文章下載二維碼,公眾號的文章,可以直接獲取下載二維碼。
技術(shù)牛人多回復分享更多干貨!看到一篇和我想法很相似的文章
vitess,weixindisallowit。formerweixinallowssharingwechatcontenttoattributebyyourown。copyrightrightsownerexists。excludegainstitute'svideorecordingfoundationproduct;contentmissingintheweixindisallowsvideorecordingonpublicsafety。
有哪些高質(zhì)量的微信公眾號文章推送,能夠一鍵直達微信群?-mr彭的回答提供了從微信公眾號源文件下載、開(kāi)源微信小程序之類(lèi)的。
有木有,保存本文章,然后共享,
百度文庫免費下載百度文庫也提供網(wǎng)盤(pán)的下載
豬八戒上面有客一鍵下單的??梢試L試一下。
技術(shù)牛人多回復分享更多干貨!看到一篇和我想法很相似的文章,希望對你有幫助。
考試官網(wǎng),免費題庫,由中國大學(xué)mooc的engineercenter提供。其中浙江大學(xué)的課程比較全,人教,浙大的都有,其他的不用考慮了。
querylist采集微信公眾號文章(微信公眾號開(kāi)發(fā)之VS遠程調試(二)(組圖))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 166 次瀏覽 ? 2022-03-20 09:03
阿里巴巴云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程
推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)主題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
【044】微信公眾平臺開(kāi)發(fā)教程第20章-初學(xué)者40題
作者:云啟希望。 2102人查看評論數:04年前
作者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,接觸了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,作者將這些問(wèn)題和答案放在一起,將幫助許多其他剛起步的人少走彎路。 1、訂閱帳號和服務(wù)帳號的主要區別是什么?
閱讀全文
微信支付教程系列公眾號支付
作者:micahel1202 查看評論:03 年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)四)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)
閱讀全文
微信支付教程系列現金紅包
作者:micahel1530 查看評論:03 年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)四)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId
作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年對微信支付、小程序支付、支付寶應用支付、云閃付應用支付的研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以我想寫(xiě)個(gè)記錄,這樣以后遇到微信相關(guān)的API調用,就不用那么久了
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答
作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql,可以在網(wǎng)上找對應的教程了解大致的語(yǔ)法,但不要深入。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪
作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號獲取用戶(hù)地理位置需要js-sdk簽名包(文檔獲取方法有介紹)2、根據獲取地理位置,ajax去后臺請求,通過(guò)sql語(yǔ)句,在查詢(xún)中查詢(xún)最近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、根據店鋪列表查詢(xún)到市區,通過(guò)
閱讀全文
最全的安卓文章合集
作者:android飛魚(yú)2557人查看評論:03年前
告訴你兩張圖,為什么你的應用會(huì )死機? - Android - 掘金隊的封面是什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎? ... Android 獲取 View 寬度和高度的常見(jiàn)正確方法
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容
作者:thinkyoung1544 瀏覽評論:06年前
過(guò)去,Java Jsoup 用于捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。 QueryList 基于 phpQ
閱讀全文 查看全部
querylist采集微信公眾號文章(微信公眾號開(kāi)發(fā)之VS遠程調試(二)(組圖))
阿里巴巴云>云棲社區>主題圖>>.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程

推薦活動(dòng):
更多優(yōu)惠>
當前話(huà)題:.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程加入采集
相關(guān)主題:
.net網(wǎng)頁(yè)微信支付接口開(kāi)發(fā)教程相關(guān)博客看更多博文
【044】微信公眾平臺開(kāi)發(fā)教程第20章-初學(xué)者40題


作者:云啟希望。 2102人查看評論數:04年前
作者在CSDN博客頻道推出微信公眾平臺開(kāi)發(fā)教程后,接觸了很多公眾平臺開(kāi)發(fā)愛(ài)好者,幫助他們克服了很多實(shí)際問(wèn)題。當然,這些問(wèn)題中的許多都是重復的。因此,作者將這些問(wèn)題和答案放在一起,將幫助許多其他剛起步的人少走彎路。 1、訂閱帳號和服務(wù)帳號的主要區別是什么?
閱讀全文
微信支付教程系列公眾號支付


作者:micahel1202 查看評論:03 年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)四)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)
閱讀全文
微信支付教程系列現金紅包


作者:micahel1530 查看評論:03 年前
目錄(一)微信公眾號開(kāi)發(fā)VS遠程調試(二)微信公眾號開(kāi)發(fā)基礎知識(三)微信公眾號開(kāi)發(fā)自動(dòng)回復消息和自定義菜單)四)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)授權獲取用戶(hù)的基本信息(五)微信公眾號開(kāi)發(fā)的網(wǎng)頁(yè)可以及時(shí)獲取當前用戶(hù)的Openid及注意事項(六)微信公眾號開(kāi)發(fā)
閱讀全文
微信公眾號支付失敗問(wèn)題-微信支付提示調用支付JSAPI缺少參數:appId


作者:聚友云輝 2003 瀏覽評論:02年前
場(chǎng)景概述 鑒于去年對微信支付、小程序支付、支付寶應用支付、云閃付應用支付的研究。最近要完成一個(gè)微信公眾號支付的場(chǎng)景。其中,我遇到了一個(gè)坑,花了我一個(gè)多上午的時(shí)間。所以我想寫(xiě)個(gè)記錄,這樣以后遇到微信相關(guān)的API調用,就不用那么久了
閱讀全文
微信公眾平臺開(kāi)發(fā)問(wèn)答


作者:方北工作室2281查看評論:06年前
微信公眾平臺開(kāi)發(fā)問(wèn)答是微信知識問(wèn)答專(zhuān)區,專(zhuān)注于微信應用開(kāi)發(fā)技術(shù)知識的整理、分類(lèi)和檢索。主題:新手常見(jiàn)問(wèn)題 Q:我是新手,沒(méi)有開(kāi)發(fā)基礎。我應該如何學(xué)習微信公眾平臺的開(kāi)發(fā)?答:先學(xué)PHP和Mysql,可以在網(wǎng)上找對應的教程了解大致的語(yǔ)法,但不要深入。
閱讀全文
【轉載】微信公眾號獲取用戶(hù)地理位置并列出附近店鋪


作者:php的小菜鳥(niǎo)2236人查看評論數:04年前
思路分析:1、在微信公眾號獲取用戶(hù)地理位置需要js-sdk簽名包(文檔獲取方法有介紹)2、根據獲取地理位置,ajax去后臺請求,通過(guò)sql語(yǔ)句,在查詢(xún)中查詢(xún)最近的store(sql語(yǔ)句在網(wǎng)上搜索,通過(guò)后臺添加位置)3、根據店鋪列表查詢(xún)到市區,通過(guò)
閱讀全文
最全的安卓文章合集


作者:android飛魚(yú)2557人查看評論:03年前
告訴你兩張圖,為什么你的應用會(huì )死機? - Android - 掘金隊的封面是什么?從這個(gè) 文章 你可以得到這個(gè)信息:知道 setContentView() 之后會(huì )發(fā)生什么嗎? ... Android 獲取 View 寬度和高度的常見(jiàn)正確方法
閱讀全文
PHP 使用 QueryList 抓取網(wǎng)頁(yè)內容


作者:thinkyoung1544 瀏覽評論:06年前
過(guò)去,Java Jsoup 用于捕獲網(wǎng)頁(yè)數據。前幾天聽(tīng)說(shuō)用PHP比較方便。今天簡(jiǎn)單研究了一下,主要是使用QueryList。 QueryList 基于 phpQ
閱讀全文
querylist采集微信公眾號文章(querylist采集微信公眾號文章,去重后傳給es然后用轉換為txt格式)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 186 次瀏覽 ? 2022-03-17 16:01
querylist采集微信公眾號文章,去重后傳給es,然后用es轉換為txt格式,然后相應的token會(huì )傳到querylist上,下次查詢(xún)可以不重復用token查詢(xún),查詢(xún)時(shí)直接用querylist查詢(xún)即可。
想要token等價(jià)于queryid的話(huà),可以用如下python庫:apiversion:v1appgametype:pygameversion:1。5supportedsuggestion:truetargetpath:android:entity。querystringaccessname:truecrawledurl:data。
querystring。contentspath@apiversion:android。view。adaptor。adaptorappname:app。myappkey:app。properties。active_account:app。entity。querystringcontentspath::data。querystring。
請參照我的系列文章-querylist是什么?-querylist-encodebox.html
從第一篇文章里引用過(guò)來(lái)的token可以進(jìn)行key存儲和encode模式處理,encode模式基本就是是用key來(lái)表示query,再用json或者類(lèi)似的格式存儲至于上面有同學(xué)說(shuō)的利用json來(lái)存儲query,是沒(méi)有問(wèn)題的,但是json格式有許多問(wèn)題,并不好于數據庫的列式存儲格式如下jsoncached的工作是:獲取數據-解析json-存儲數據最終的處理流程:客戶(hù)端從本地拉取原始jsonjsoncached解析jsonjsoncached和jsonbuffer這個(gè)不是數據庫里的,但是有相同的特性,那就是用大量的key來(lái)存儲query。 查看全部
querylist采集微信公眾號文章(querylist采集微信公眾號文章,去重后傳給es然后用轉換為txt格式)
querylist采集微信公眾號文章,去重后傳給es,然后用es轉換為txt格式,然后相應的token會(huì )傳到querylist上,下次查詢(xún)可以不重復用token查詢(xún),查詢(xún)時(shí)直接用querylist查詢(xún)即可。
想要token等價(jià)于queryid的話(huà),可以用如下python庫:apiversion:v1appgametype:pygameversion:1。5supportedsuggestion:truetargetpath:android:entity。querystringaccessname:truecrawledurl:data。
querystring。contentspath@apiversion:android。view。adaptor。adaptorappname:app。myappkey:app。properties。active_account:app。entity。querystringcontentspath::data。querystring。
請參照我的系列文章-querylist是什么?-querylist-encodebox.html
從第一篇文章里引用過(guò)來(lái)的token可以進(jìn)行key存儲和encode模式處理,encode模式基本就是是用key來(lái)表示query,再用json或者類(lèi)似的格式存儲至于上面有同學(xué)說(shuō)的利用json來(lái)存儲query,是沒(méi)有問(wèn)題的,但是json格式有許多問(wèn)題,并不好于數據庫的列式存儲格式如下jsoncached的工作是:獲取數據-解析json-存儲數據最終的處理流程:客戶(hù)端從本地拉取原始jsonjsoncached解析jsonjsoncached和jsonbuffer這個(gè)不是數據庫里的,但是有相同的特性,那就是用大量的key來(lái)存儲query。
querylist采集微信公眾號文章(WordPress采集插件蜜蜂采集BeePress破解安裝教程)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 867 次瀏覽 ? 2022-03-16 21:12
WordPress采集插件蜜蜂采集BeePress
“小蜜蜂-BeePress”是一個(gè)微信公眾號文章導入插件。通過(guò)粘貼公眾號文章的鏈接,可以一鍵導入公眾號文章到自己的網(wǎng)站,支持批量導入、自動(dòng)采集、設置特色圖片等功能,減少繁瑣操作。
最新版本已支持知乎欄目文章、簡(jiǎn)書(shū)文章、今日頭條的導入
WordPress采集Plugin Bee采集BeePress 安裝
進(jìn)入WordPress管理后臺,選擇安裝插件,搜索bees采集
也可以直接從WordPress官網(wǎng)下載,下載鏈接
下載后解壓到插件目錄
WordPress采集插件Bee采集BeePress專(zhuān)業(yè)版破解
安裝完成后,左側會(huì )出現“專(zhuān)業(yè)版”和“基礎版”。專(zhuān)業(yè)版功能更強大,但僅提供 5 次試用。完成次數后,需要以人民幣購買(mǎi)。(本教程僅供技術(shù)經(jīng)驗分享,部署網(wǎng)站時(shí)請支持原創(chuàng )原版)
使用數據庫管理工具,這里以phpMyadmin為例。
選擇 wp_options 數據表,找到 bp_count 字段
將 option_value 值從 5 更改為任意值
破解成功
如果沒(méi)有可視化數據庫管理工具,也可以直接使用sql命令執行修改,
更新 wp_options SET option_value = 99999 WHERE option_name = 'bp_count';
這里的破解只是增加試用次數,達到專(zhuān)業(yè)版無(wú)限次使用的效果。如需正常使用授權,請聯(lián)系作者購買(mǎi)正版插件。
原創(chuàng )文章,作者:dongdongxiao,如轉載請注明出處: 查看全部
querylist采集微信公眾號文章(WordPress采集插件蜜蜂采集BeePress破解安裝教程)
WordPress采集插件蜜蜂采集BeePress
“小蜜蜂-BeePress”是一個(gè)微信公眾號文章導入插件。通過(guò)粘貼公眾號文章的鏈接,可以一鍵導入公眾號文章到自己的網(wǎng)站,支持批量導入、自動(dòng)采集、設置特色圖片等功能,減少繁瑣操作。
最新版本已支持知乎欄目文章、簡(jiǎn)書(shū)文章、今日頭條的導入
WordPress采集Plugin Bee采集BeePress 安裝
進(jìn)入WordPress管理后臺,選擇安裝插件,搜索bees采集

也可以直接從WordPress官網(wǎng)下載,下載鏈接
下載后解壓到插件目錄

WordPress采集插件Bee采集BeePress專(zhuān)業(yè)版破解
安裝完成后,左側會(huì )出現“專(zhuān)業(yè)版”和“基礎版”。專(zhuān)業(yè)版功能更強大,但僅提供 5 次試用。完成次數后,需要以人民幣購買(mǎi)。(本教程僅供技術(shù)經(jīng)驗分享,部署網(wǎng)站時(shí)請支持原創(chuàng )原版)

使用數據庫管理工具,這里以phpMyadmin為例。
選擇 wp_options 數據表,找到 bp_count 字段

將 option_value 值從 5 更改為任意值

破解成功

如果沒(méi)有可視化數據庫管理工具,也可以直接使用sql命令執行修改,
更新 wp_options SET option_value = 99999 WHERE option_name = 'bp_count';
這里的破解只是增加試用次數,達到專(zhuān)業(yè)版無(wú)限次使用的效果。如需正常使用授權,請聯(lián)系作者購買(mǎi)正版插件。
原創(chuàng )文章,作者:dongdongxiao,如轉載請注明出處:
querylist采集微信公眾號文章(import_module采集模塊實(shí)現公眾號文章的入口邏輯)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 159 次瀏覽 ? 2022-03-15 22:14
因為采集器有兩種不同的實(shí)現方式,ruia和playwright,使用哪一種由配置文件決定,然后通過(guò)import_module方法動(dòng)態(tài)導入對應的模塊,然后運行模塊的run方法,從而實(shí)現文章的公眾號 bool:
"""
采集器工廠(chǎng)函數
:param collect_type: 采集器類(lèi)型
:param collect_config: 采集器配置
:return:
"""
collect_status = False
try:
# import_module方法動(dòng)態(tài)載入具體的采集模塊
collect_module = import_module(f"src.collector.{collect_type}")
collect_status = collect_module.run(collect_config)
except ModuleNotFoundError:
LOGGER.error(f"采集器類(lèi)型不存在 {collect_type} - {collect_config}")
except Exception as e:
LOGGER.error(f"采集器執行出錯 {collect_type} - {collect_config} - {e}")
return collect_status
編劇采集模塊實(shí)現
Playwright 是微軟出品的自動(dòng)化庫。它類(lèi)似于硒。它定位于網(wǎng)頁(yè)測試,但也被人們用來(lái)獲取網(wǎng)頁(yè)信息。當然,一些前端的反爬措施,編劇是無(wú)法突破的。
與selenium相比,playwright支持python的async,性能有所提升(但還是比不上直接請求)。下面是獲取公眾號下最新= cos_value else 0
max_pro = value if value > max_pro else max_pro
if result == 1:
break
return {"result": result, "value": max_pro}
?
<p>余弦值的具體操作邏輯在CosineSimilarity的calculate方法中,都是和數學(xué)有關(guān)的,我就不看了。核心是判斷當前 查看全部
querylist采集微信公眾號文章(import_module采集模塊實(shí)現公眾號文章的入口邏輯)
因為采集器有兩種不同的實(shí)現方式,ruia和playwright,使用哪一種由配置文件決定,然后通過(guò)import_module方法動(dòng)態(tài)導入對應的模塊,然后運行模塊的run方法,從而實(shí)現文章的公眾號 bool:
"""
采集器工廠(chǎng)函數
:param collect_type: 采集器類(lèi)型
:param collect_config: 采集器配置
:return:
"""
collect_status = False
try:
# import_module方法動(dòng)態(tài)載入具體的采集模塊
collect_module = import_module(f"src.collector.{collect_type}")
collect_status = collect_module.run(collect_config)
except ModuleNotFoundError:
LOGGER.error(f"采集器類(lèi)型不存在 {collect_type} - {collect_config}")
except Exception as e:
LOGGER.error(f"采集器執行出錯 {collect_type} - {collect_config} - {e}")
return collect_status
編劇采集模塊實(shí)現
Playwright 是微軟出品的自動(dòng)化庫。它類(lèi)似于硒。它定位于網(wǎng)頁(yè)測試,但也被人們用來(lái)獲取網(wǎng)頁(yè)信息。當然,一些前端的反爬措施,編劇是無(wú)法突破的。
與selenium相比,playwright支持python的async,性能有所提升(但還是比不上直接請求)。下面是獲取公眾號下最新= cos_value else 0
max_pro = value if value > max_pro else max_pro
if result == 1:
break
return {"result": result, "value": max_pro}
?
<p>余弦值的具體操作邏輯在CosineSimilarity的calculate方法中,都是和數學(xué)有關(guān)的,我就不看了。核心是判斷當前
querylist采集微信公眾號文章(爬取大牛用微信公眾號爬取程序的難點(diǎn)及解決辦法)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 135 次瀏覽 ? 2022-03-15 03:10
最近需要爬取微信公眾號的文章信息。我在網(wǎng)上搜索,發(fā)現爬取微信公眾號的難點(diǎn)在于公眾號文章的鏈接在PC端打不開(kāi),所以需要使用微信自帶的瀏覽器(獲取參數微信客戶(hù)端補充)可以在其他平臺打開(kāi)),給爬蟲(chóng)帶來(lái)了很大的麻煩。后來(lái)在知乎上看到了一個(gè)大牛用php寫(xiě)的微信公眾號爬蟲(chóng)程序,直接按照大佬的思路做成了java。改造過(guò)程中遇到了很多細節和問(wèn)題,就分享給大家。
附上大牛的鏈接文章:寫(xiě)php或者只需要爬取思路的可以直接看這個(gè)。這些想法寫(xiě)得很詳細。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------
系統的基本思路是在A(yíng)ndroid模擬器上運行微信,在模擬器上設置代理,通過(guò)代理服務(wù)器截取微信數據,將獲取到的數據發(fā)送給自己的程序進(jìn)行處理。
需要準備的環(huán)境:nodejs、anyproxy代理、安卓模擬器
Nodejs下載地址:我下載的是windows版本的,直接安裝就好了。安裝后直接運行 C:\Program Files\nodejs\npm.cmd 會(huì )自動(dòng)配置環(huán)境。
anyproxy 安裝:按照上一步安裝nodejs后,直接在cmd中運行npm install -g anyproxy即可安裝
網(wǎng)上的安卓模擬器就好了,有很多。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------
首先安裝代理服務(wù)器的證書(shū)。Anyproxy 默認不解析 https 鏈接。安裝證書(shū)后,就可以解析了。在cmd中執行anyproxy --root安裝證書(shū),然后在模擬器中下載證書(shū)。
然后輸入anyproxy -i 命令打開(kāi)代理服務(wù)。(記得添加參數?。?br />
記住這個(gè)ip和端口,那么安卓模擬器的代理就會(huì )用到這個(gè)?,F在用瀏覽器打開(kāi)網(wǎng)頁(yè)::8002/ 這是anyproxy的網(wǎng)頁(yè)界面,用來(lái)顯示http傳輸的數據。
點(diǎn)擊上方紅框中的菜單,會(huì )出現一個(gè)二維碼。用安卓模擬器掃碼識別。模擬器(手機)會(huì )下載證書(shū)并安裝。
現在準備為模擬器設置代理,代理模式設置為手動(dòng),代理ip為運行anyproxy的機器的ip,端口為8001
準備工作到這里基本完成。在模擬器上打開(kāi)微信,打開(kāi)一個(gè)公眾號的文章,可以從剛剛打開(kāi)的web界面看到anyproxy抓取的數據:
上圖紅框是微信文章的鏈接,點(diǎn)擊查看具體數據。如果響應正文中沒(méi)有任何內容,則可能是證書(shū)安裝有問(wèn)題。
如果頂部清晰,您可以向下。
這里我們依靠代理服務(wù)抓取微信數據,但是我們不能抓取一條數據自己操作微信,所以還是手動(dòng)復制比較好。所以我們需要微信客戶(hù)端自己跳轉到頁(yè)面。這時(shí)可以使用anyproxy攔截微信服務(wù)器返回的數據,將頁(yè)面跳轉代碼注入其中,然后將處理后的數據返回給模擬器,實(shí)現微信客戶(hù)端的自動(dòng)跳轉。
在anyproxy中打開(kāi)一個(gè)名為rule_default.js的js文件,windows下的文件為:C:\Users\Administrator\AppData\Roaming\npm\node_modules\anyproxy\lib
文件中有一個(gè)方法叫做replaceServerResDataAsync: function(req,res,serverResData,callback)。該方法負責對anyproxy獲取的數據進(jìn)行各種操作。開(kāi)頭應該只有 callback(serverResData) ;該語(yǔ)句的意思是直接將服務(wù)器響應數據返回給客戶(hù)端。直接把這條語(yǔ)句刪掉,換成下面大牛寫(xiě)的代碼。我這里的代碼沒(méi)有做任何改動(dòng),里面的注釋也很清楚。順著(zhù)邏輯去理解就行了,問(wèn)題不大。
1 replaceServerResDataAsync: function(req,res,serverResData,callback){
2 if(/mp\/getmasssendmsg/i.test(req.url)){//當鏈接地址為公眾號歷史消息頁(yè)面時(shí)(第一種頁(yè)面形式)
3 //console.log("開(kāi)始第一種頁(yè)面爬取");
4 if(serverResData.toString() !== ""){
5 6 try {//防止報錯退出程序
7 var reg = /msgList = (.*?);/;//定義歷史消息正則匹配規則
8 var ret = reg.exec(serverResData.toString());//轉換變量為string
9 HttpPost(ret[1],req.url,"/InternetSpider/getData/showBiz");//這個(gè)函數是后文定義的,將匹配到的歷史消息json發(fā)送到自己的服務(wù)器
10 var http = require('http');
11 http.get('http://xxx/getWxHis', function(res) {//這個(gè)地址是自己服務(wù)器上的一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxHis.php的原理。
12 res.on('data', function(chunk){
13 callback(chunk+serverResData);//將返回的代碼插入到歷史消息頁(yè)面中,并返回顯示出來(lái)
14 })
15 });
16 }catch(e){//如果上面的正則沒(méi)有匹配到,那么這個(gè)頁(yè)面內容可能是公眾號歷史消息頁(yè)面向下翻動(dòng)的第二頁(yè),因為歷史消息第一頁(yè)是html格式的,第二頁(yè)就是json格式的。
17 //console.log("開(kāi)始第一種頁(yè)面爬取向下翻形式");
18 try {
19 var json = JSON.parse(serverResData.toString());
20 if (json.general_msg_list != []) {
21 HttpPost(json.general_msg_list,req.url,"/xxx/showBiz");//這個(gè)函數和上面的一樣是后文定義的,將第二頁(yè)歷史消息的json發(fā)送到自己的服務(wù)器
22 }
23 }catch(e){
24 console.log(e);//錯誤捕捉
25 }
26 callback(serverResData);//直接返回第二頁(yè)json內容
27 }
28 }
29 //console.log("開(kāi)始第一種頁(yè)面爬取 結束");
30 }else if(/mp\/profile_ext\?action=home/i.test(req.url)){//當鏈接地址為公眾號歷史消息頁(yè)面時(shí)(第二種頁(yè)面形式)
31 try {
32 var reg = /var msgList = \'(.*?)\';/;//定義歷史消息正則匹配規則(和第一種頁(yè)面形式的正則不同)
33 var ret = reg.exec(serverResData.toString());//轉換變量為string
34 HttpPost(ret[1],req.url,"/xxx/showBiz");//這個(gè)函數是后文定義的,將匹配到的歷史消息json發(fā)送到自己的服務(wù)器
35 var http = require('http');
36 http.get('xxx/getWxHis', function(res) {//這個(gè)地址是自己服務(wù)器上的一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxHis.php的原理。
37 res.on('data', function(chunk){
38 callback(chunk+serverResData);//將返回的代碼插入到歷史消息頁(yè)面中,并返回顯示出來(lái)
39 })
40 });
41 }catch(e){
42 //console.log(e);
43 callback(serverResData);
44 }
45 }else if(/mp\/profile_ext\?action=getmsg/i.test(req.url)){//第二種頁(yè)面表現形式的向下翻頁(yè)后的json
46 try {
47 var json = JSON.parse(serverResData.toString());
48 if (json.general_msg_list != []) {
49 HttpPost(json.general_msg_list,req.url,"/xxx/showBiz");//這個(gè)函數和上面的一樣是后文定義的,將第二頁(yè)歷史消息的json發(fā)送到自己的服務(wù)器
50 }
51 }catch(e){
52 console.log(e);
53 }
54 callback(serverResData);
55 }else if(/mp\/getappmsgext/i.test(req.url)){//當鏈接地址為公眾號文章閱讀量和點(diǎn)贊量時(shí)
56 try {
57 HttpPost(serverResData,req.url,"/xxx/getMsgExt");//函數是后文定義的,功能是將文章閱讀量點(diǎn)贊量的json發(fā)送到服務(wù)器
58 }catch(e){
59
60 }
61 callback(serverResData);
62 }else if(/s\?__biz/i.test(req.url) || /mp\/rumor/i.test(req.url)){//當鏈接地址為公眾號文章時(shí)(rumor這個(gè)地址是公眾號文章被辟謠了)
63 try {
64 var http = require('http');
65 http.get('http://xxx/getWxPost', function(res) {//這個(gè)地址是自己服務(wù)器上的另一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxPost.php的原理。
66 res.on('data', function(chunk){
67 callback(chunk+serverResData);
68 })
69 });
70 }catch(e){
71 callback(serverResData);
72 }
73 }else{
74 callback(serverResData);
75 }
76 //callback(serverResData);
77 },
這是一個(gè)簡(jiǎn)短的解釋。微信公眾號歷史新聞頁(yè)面的鏈接有兩種形式:一種以/mp/getmasssendmsg開(kāi)頭,另一種以/mp/profile_ext開(kāi)頭。歷史頁(yè)面可以向下滾動(dòng)。向下滾動(dòng)會(huì )觸發(fā)js事件發(fā)送請求獲取json數據(下一頁(yè)的內容)。還有公眾號文章的鏈接,以及文章的閱讀和點(diǎn)贊鏈接(返回json數據)。這些環(huán)節的形式是固定的,可以通過(guò)邏輯判斷加以區分。這里有個(gè)問(wèn)題,如果歷史頁(yè)面需要一路爬取怎么辦。我的想法是通過(guò)js模擬鼠標向下滑動(dòng),從而觸發(fā)提交下一部分列表的負載的請求?;蛘咧苯邮褂胊nyproxy分析下載請求,直接向微信服務(wù)器發(fā)出這個(gè)請求。但是有一個(gè)問(wèn)題是如何判斷沒(méi)有剩余數據。我正在抓取最新數據。我暫時(shí)沒(méi)有這個(gè)要求,但以后可能需要。如果需要,您可以嘗試一下。 查看全部
querylist采集微信公眾號文章(爬取大牛用微信公眾號爬取程序的難點(diǎn)及解決辦法)
最近需要爬取微信公眾號的文章信息。我在網(wǎng)上搜索,發(fā)現爬取微信公眾號的難點(diǎn)在于公眾號文章的鏈接在PC端打不開(kāi),所以需要使用微信自帶的瀏覽器(獲取參數微信客戶(hù)端補充)可以在其他平臺打開(kāi)),給爬蟲(chóng)帶來(lái)了很大的麻煩。后來(lái)在知乎上看到了一個(gè)大牛用php寫(xiě)的微信公眾號爬蟲(chóng)程序,直接按照大佬的思路做成了java。改造過(guò)程中遇到了很多細節和問(wèn)題,就分享給大家。
附上大牛的鏈接文章:寫(xiě)php或者只需要爬取思路的可以直接看這個(gè)。這些想法寫(xiě)得很詳細。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------
系統的基本思路是在A(yíng)ndroid模擬器上運行微信,在模擬器上設置代理,通過(guò)代理服務(wù)器截取微信數據,將獲取到的數據發(fā)送給自己的程序進(jìn)行處理。
需要準備的環(huán)境:nodejs、anyproxy代理、安卓模擬器
Nodejs下載地址:我下載的是windows版本的,直接安裝就好了。安裝后直接運行 C:\Program Files\nodejs\npm.cmd 會(huì )自動(dòng)配置環(huán)境。
anyproxy 安裝:按照上一步安裝nodejs后,直接在cmd中運行npm install -g anyproxy即可安裝
網(wǎng)上的安卓模擬器就好了,有很多。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------
首先安裝代理服務(wù)器的證書(shū)。Anyproxy 默認不解析 https 鏈接。安裝證書(shū)后,就可以解析了。在cmd中執行anyproxy --root安裝證書(shū),然后在模擬器中下載證書(shū)。
然后輸入anyproxy -i 命令打開(kāi)代理服務(wù)。(記得添加參數?。?br />

記住這個(gè)ip和端口,那么安卓模擬器的代理就會(huì )用到這個(gè)?,F在用瀏覽器打開(kāi)網(wǎng)頁(yè)::8002/ 這是anyproxy的網(wǎng)頁(yè)界面,用來(lái)顯示http傳輸的數據。

點(diǎn)擊上方紅框中的菜單,會(huì )出現一個(gè)二維碼。用安卓模擬器掃碼識別。模擬器(手機)會(huì )下載證書(shū)并安裝。
現在準備為模擬器設置代理,代理模式設置為手動(dòng),代理ip為運行anyproxy的機器的ip,端口為8001

準備工作到這里基本完成。在模擬器上打開(kāi)微信,打開(kāi)一個(gè)公眾號的文章,可以從剛剛打開(kāi)的web界面看到anyproxy抓取的數據:

上圖紅框是微信文章的鏈接,點(diǎn)擊查看具體數據。如果響應正文中沒(méi)有任何內容,則可能是證書(shū)安裝有問(wèn)題。
如果頂部清晰,您可以向下。
這里我們依靠代理服務(wù)抓取微信數據,但是我們不能抓取一條數據自己操作微信,所以還是手動(dòng)復制比較好。所以我們需要微信客戶(hù)端自己跳轉到頁(yè)面。這時(shí)可以使用anyproxy攔截微信服務(wù)器返回的數據,將頁(yè)面跳轉代碼注入其中,然后將處理后的數據返回給模擬器,實(shí)現微信客戶(hù)端的自動(dòng)跳轉。
在anyproxy中打開(kāi)一個(gè)名為rule_default.js的js文件,windows下的文件為:C:\Users\Administrator\AppData\Roaming\npm\node_modules\anyproxy\lib
文件中有一個(gè)方法叫做replaceServerResDataAsync: function(req,res,serverResData,callback)。該方法負責對anyproxy獲取的數據進(jìn)行各種操作。開(kāi)頭應該只有 callback(serverResData) ;該語(yǔ)句的意思是直接將服務(wù)器響應數據返回給客戶(hù)端。直接把這條語(yǔ)句刪掉,換成下面大牛寫(xiě)的代碼。我這里的代碼沒(méi)有做任何改動(dòng),里面的注釋也很清楚。順著(zhù)邏輯去理解就行了,問(wèn)題不大。

1 replaceServerResDataAsync: function(req,res,serverResData,callback){
2 if(/mp\/getmasssendmsg/i.test(req.url)){//當鏈接地址為公眾號歷史消息頁(yè)面時(shí)(第一種頁(yè)面形式)
3 //console.log("開(kāi)始第一種頁(yè)面爬取");
4 if(serverResData.toString() !== ""){
5 6 try {//防止報錯退出程序
7 var reg = /msgList = (.*?);/;//定義歷史消息正則匹配規則
8 var ret = reg.exec(serverResData.toString());//轉換變量為string
9 HttpPost(ret[1],req.url,"/InternetSpider/getData/showBiz");//這個(gè)函數是后文定義的,將匹配到的歷史消息json發(fā)送到自己的服務(wù)器
10 var http = require('http');
11 http.get('http://xxx/getWxHis', function(res) {//這個(gè)地址是自己服務(wù)器上的一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxHis.php的原理。
12 res.on('data', function(chunk){
13 callback(chunk+serverResData);//將返回的代碼插入到歷史消息頁(yè)面中,并返回顯示出來(lái)
14 })
15 });
16 }catch(e){//如果上面的正則沒(méi)有匹配到,那么這個(gè)頁(yè)面內容可能是公眾號歷史消息頁(yè)面向下翻動(dòng)的第二頁(yè),因為歷史消息第一頁(yè)是html格式的,第二頁(yè)就是json格式的。
17 //console.log("開(kāi)始第一種頁(yè)面爬取向下翻形式");
18 try {
19 var json = JSON.parse(serverResData.toString());
20 if (json.general_msg_list != []) {
21 HttpPost(json.general_msg_list,req.url,"/xxx/showBiz");//這個(gè)函數和上面的一樣是后文定義的,將第二頁(yè)歷史消息的json發(fā)送到自己的服務(wù)器
22 }
23 }catch(e){
24 console.log(e);//錯誤捕捉
25 }
26 callback(serverResData);//直接返回第二頁(yè)json內容
27 }
28 }
29 //console.log("開(kāi)始第一種頁(yè)面爬取 結束");
30 }else if(/mp\/profile_ext\?action=home/i.test(req.url)){//當鏈接地址為公眾號歷史消息頁(yè)面時(shí)(第二種頁(yè)面形式)
31 try {
32 var reg = /var msgList = \'(.*?)\';/;//定義歷史消息正則匹配規則(和第一種頁(yè)面形式的正則不同)
33 var ret = reg.exec(serverResData.toString());//轉換變量為string
34 HttpPost(ret[1],req.url,"/xxx/showBiz");//這個(gè)函數是后文定義的,將匹配到的歷史消息json發(fā)送到自己的服務(wù)器
35 var http = require('http');
36 http.get('xxx/getWxHis', function(res) {//這個(gè)地址是自己服務(wù)器上的一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxHis.php的原理。
37 res.on('data', function(chunk){
38 callback(chunk+serverResData);//將返回的代碼插入到歷史消息頁(yè)面中,并返回顯示出來(lái)
39 })
40 });
41 }catch(e){
42 //console.log(e);
43 callback(serverResData);
44 }
45 }else if(/mp\/profile_ext\?action=getmsg/i.test(req.url)){//第二種頁(yè)面表現形式的向下翻頁(yè)后的json
46 try {
47 var json = JSON.parse(serverResData.toString());
48 if (json.general_msg_list != []) {
49 HttpPost(json.general_msg_list,req.url,"/xxx/showBiz");//這個(gè)函數和上面的一樣是后文定義的,將第二頁(yè)歷史消息的json發(fā)送到自己的服務(wù)器
50 }
51 }catch(e){
52 console.log(e);
53 }
54 callback(serverResData);
55 }else if(/mp\/getappmsgext/i.test(req.url)){//當鏈接地址為公眾號文章閱讀量和點(diǎn)贊量時(shí)
56 try {
57 HttpPost(serverResData,req.url,"/xxx/getMsgExt");//函數是后文定義的,功能是將文章閱讀量點(diǎn)贊量的json發(fā)送到服務(wù)器
58 }catch(e){
59
60 }
61 callback(serverResData);
62 }else if(/s\?__biz/i.test(req.url) || /mp\/rumor/i.test(req.url)){//當鏈接地址為公眾號文章時(shí)(rumor這個(gè)地址是公眾號文章被辟謠了)
63 try {
64 var http = require('http');
65 http.get('http://xxx/getWxPost', function(res) {//這個(gè)地址是自己服務(wù)器上的另一個(gè)程序,目的是為了獲取到下一個(gè)鏈接地址,將地址放在一個(gè)js腳本中,將頁(yè)面自動(dòng)跳轉到下一頁(yè)。后文將介紹getWxPost.php的原理。
66 res.on('data', function(chunk){
67 callback(chunk+serverResData);
68 })
69 });
70 }catch(e){
71 callback(serverResData);
72 }
73 }else{
74 callback(serverResData);
75 }
76 //callback(serverResData);
77 },

這是一個(gè)簡(jiǎn)短的解釋。微信公眾號歷史新聞頁(yè)面的鏈接有兩種形式:一種以/mp/getmasssendmsg開(kāi)頭,另一種以/mp/profile_ext開(kāi)頭。歷史頁(yè)面可以向下滾動(dòng)。向下滾動(dòng)會(huì )觸發(fā)js事件發(fā)送請求獲取json數據(下一頁(yè)的內容)。還有公眾號文章的鏈接,以及文章的閱讀和點(diǎn)贊鏈接(返回json數據)。這些環(huán)節的形式是固定的,可以通過(guò)邏輯判斷加以區分。這里有個(gè)問(wèn)題,如果歷史頁(yè)面需要一路爬取怎么辦。我的想法是通過(guò)js模擬鼠標向下滑動(dòng),從而觸發(fā)提交下一部分列表的負載的請求?;蛘咧苯邮褂胊nyproxy分析下載請求,直接向微信服務(wù)器發(fā)出這個(gè)請求。但是有一個(gè)問(wèn)題是如何判斷沒(méi)有剩余數據。我正在抓取最新數據。我暫時(shí)沒(méi)有這個(gè)要求,但以后可能需要。如果需要,您可以嘗試一下。
querylist采集微信公眾號文章( 處理跳轉向微信注入js的方法:以上就是對處理代理服務(wù)器攔截到的數據進(jìn)行處理)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 283 次瀏覽 ? 2022-03-13 10:09
處理跳轉向微信注入js的方法:以上就是對處理代理服務(wù)器攔截到的數據進(jìn)行處理)
public void getMsgExt(String str,String url) {
// TODO Auto-generated method stub
String biz = "";
String sn = "";
Map queryStrs = HttpUrlParser.parseUrl(url);
if(queryStrs != null){
biz = queryStrs.get("__biz");
biz = biz + "==";
sn = queryStrs.get("sn");
sn = "%" + sn + "%";
}
/**
* $sql = "select * from `文章表` where `biz`='".$biz."'
* and `content_url` like '%".$sn."%'" limit 0,1;
* 根據biz和sn找到對應的文章
*/
Post post = postMapper.selectByBizAndSn(biz, sn);
if(post == null){
System.out.println("biz:"+biz);
System.out.println("sn:"+sn);
tmpListMapper.deleteByLoad(1);
return;
}
// System.out.println("json數據:"+str);
Integer read_num;
Integer like_num;
try{
read_num = JsonPath.read(str, "['appmsgstat']['read_num']");//閱讀量
like_num = JsonPath.read(str, "['appmsgstat']['like_num']");//點(diǎn)贊量
}catch(Exception e){
read_num = 123;//閱讀量
like_num = 321;//點(diǎn)贊量
System.out.println("read_num:"+read_num);
System.out.println("like_num:"+like_num);
System.out.println(e.getMessage());
}
/**
* 在這里同樣根據sn在采集隊列表中刪除對應的文章,代表這篇文章可以移出采集隊列了
* $sql = "delete from `隊列表` where `content_url` like '%".$sn."%'"
*/
tmpListMapper.deleteBySn(sn);
//然后將閱讀量和點(diǎn)贊量更新到文章表中。
post.setReadnum(read_num);
post.setLikenum(like_num);
postMapper.updateByPrimaryKey(post);
}
將js注入微信的處理跳轉方法:
public String getWxHis() {
String url = "";
// TODO Auto-generated method stub
/**
* 當前頁(yè)面為公眾號歷史消息時(shí),讀取這個(gè)程序
* 在采集隊列表中有一個(gè)load字段,當值等于1時(shí)代表正在被讀取
* 首先刪除采集隊列表中load=1的行
* 然后從隊列表中任意select一行
*/
tmpListMapper.deleteByLoad(1);
TmpList queue = tmpListMapper.selectRandomOne();
System.out.println("queue is null?"+queue);
if(queue == null){//隊列表為空
/**
* 隊列表如果空了,就從存儲公眾號biz的表中取得一個(gè)biz,
* 這里我在公眾號表中設置了一個(gè)采集時(shí)間的time字段,按照正序排列之后,
* 就得到時(shí)間戳最小的一個(gè)公眾號記錄,并取得它的biz
*/
WeiXin weiXin = weiXinMapper.selectOne();
String biz = weiXin.getBiz();
url = "https://mp.weixin.qq.com/mp/pr ... ot%3B + biz +
"#wechat_redirect";//拼接公眾號歷史消息url地址(第二種頁(yè)面形式)
//更新剛才提到的公眾號表中的采集時(shí)間time字段為當前時(shí)間戳。
weiXin.setCollect(System.currentTimeMillis());
int result = weiXinMapper.updateByPrimaryKey(weiXin);
System.out.println("getHis weiXin updateResult:"+result);
}else{
//取得當前這一行的content_url字段
url = queue.getContentUrl();
//將load字段update為1
tmpListMapper.updateByContentUrl(url);
}
//將下一個(gè)將要跳轉的$url變成js腳本,由anyproxy注入到微信頁(yè)面中。
//echo "setTimeout(function(){window.location.href='".$url."';},2000);";
int randomTime = new Random().nextInt(3) + 3;
String jsCode = "setTimeout(function(){window.location.href='"+url+"';},"+randomTime*1000+");";
return jsCode;
}
以上是處理代理服務(wù)器截獲的數據的程序。這里有一個(gè)需要注意的問(wèn)題。程序會(huì )依次訪(fǎng)問(wèn)數據庫中每個(gè)收錄的公眾號,甚至會(huì )再次訪(fǎng)問(wèn)存儲的文章,以不斷更新收錄的閱讀點(diǎn)贊數@文章 的。如果需要抓取大量公眾號,建議修改添加任務(wù)隊列和添加條件的代碼,否則多輪公眾號抓取重復數據的效率會(huì )受到很大影響。
至此,微信公眾號的文章鏈接全部被爬取完畢,且該鏈接為永久有效鏈接,可在瀏覽器中打開(kāi)。接下來(lái)就是編寫(xiě)爬蟲(chóng)程序,從數據庫中爬取鏈接文章的內容等信息。
我用webmagic寫(xiě)了一個(gè)爬蟲(chóng),輕量級,好用。
public class SpiderModel implements PageProcessor{
private static PostMapper postMapper;
private static List posts;
// 抓取網(wǎng)站的相關(guān)配置,包括編碼、抓取間隔、重試次數等
private Site site = Site.me().setRetryTimes(3).setSleepTime(100);
public Site getSite() {
// TODO Auto-generated method stub
return this.site;
}
public void process(Page page) {
// TODO Auto-generated method stub
Post post = posts.remove(0);
String content = page.getHtml().xpath("//div[@id='js_content']").get();
//存在和諧文章 此處做判定如果有直接刪除記錄或設置表示位表示文章被和諧
if(content == null){
System.out.println("文章已和諧!");
//postMapper.deleteByPrimaryKey(post.getId());
return;
}
String contentSnap = content.replaceAll("data-src", "src").replaceAll("preview.html", "player.html");//快照
String contentTxt = HtmlToWord.stripHtml(content);//純文本內容
Selectable metaContent = page.getHtml().xpath("//div[@id='meta_content']");
String pubTime = null;
String wxname = null;
String author = null;
if(metaContent != null){
pubTime = metaContent.xpath("//em[@id='post-date']").get();
if(pubTime != null){
pubTime = HtmlToWord.stripHtml(pubTime);//文章發(fā)布時(shí)間
}
wxname = metaContent.xpath("//a[@id='post-user']").get();
if(wxname != null){
wxname = HtmlToWord.stripHtml(wxname);//公眾號名稱(chēng)
}
author = metaContent.xpath("//em[@class='rich_media_meta rich_media_meta_text' and @id!='post-date']").get();
if(author != null){
author = HtmlToWord.stripHtml(author);//文章作者
}
}
// System.out.println("發(fā)布時(shí)間:"+pubTime);
// System.out.println("公眾號名稱(chēng):"+wxname);
// System.out.println("文章作者:"+author);
String title = post.getTitle().replaceAll(" ", "");//文章標題
String digest = post.getDigest();//文章摘要
int likeNum = post.getLikenum();//文章點(diǎn)贊數
int readNum = post.getReadnum();//文章閱讀數
String contentUrl = post.getContentUrl();//文章鏈接
WechatInfoBean wechatBean = new WechatInfoBean();
wechatBean.setTitle(title);
wechatBean.setContent(contentTxt);//純文本內容
wechatBean.setSourceCode(contentSnap);//快照
wechatBean.setLikeCount(likeNum);
wechatBean.setViewCount(readNum);
wechatBean.setAbstractText(digest);//摘要
wechatBean.setUrl(contentUrl);
wechatBean.setPublishTime(pubTime);
wechatBean.setSiteName(wxname);//站點(diǎn)名稱(chēng) 公眾號名稱(chēng)
wechatBean.setAuthor(author);
wechatBean.setMediaType("微信公眾號");//來(lái)源媒體類(lèi)型
WechatStorage.saveWechatInfo(wechatBean);
//標示文章已經(jīng)被爬取
post.setIsSpider(1);
postMapper.updateByPrimaryKey(post);
}
public static void startSpider(List inposts,PostMapper myPostMapper,String... urls){
long startTime, endTime;
startTime = System.currentTimeMillis();
postMapper = myPostMapper;
posts = inposts;
HttpClientDownloader httpClientDownloader = new HttpClientDownloader();
SpiderModel spiderModel = new SpiderModel();
Spider mySpider = Spider.create(spiderModel).addUrl(urls);
mySpider.setDownloader(httpClientDownloader);
try {
SpiderMonitor.instance().register(mySpider);
mySpider.thread(1).run();
} catch (JMException e) {
e.printStackTrace();
}
endTime = System.currentTimeMillis();
System.out.println("爬取時(shí)間" + ((endTime - startTime) / 1000) + "秒--");
}
}
其他一些不相關(guān)的數據存儲代碼將不會(huì )發(fā)布。這里我將代理服務(wù)器抓取的數據存儲在mysql中,將我的爬蟲(chóng)爬取的數據存儲在mongodb中。
以下是我爬取的公眾號信息:
打開(kāi)應用程序并閱讀筆記 查看全部
querylist采集微信公眾號文章(
處理跳轉向微信注入js的方法:以上就是對處理代理服務(wù)器攔截到的數據進(jìn)行處理)
public void getMsgExt(String str,String url) {
// TODO Auto-generated method stub
String biz = "";
String sn = "";
Map queryStrs = HttpUrlParser.parseUrl(url);
if(queryStrs != null){
biz = queryStrs.get("__biz");
biz = biz + "==";
sn = queryStrs.get("sn");
sn = "%" + sn + "%";
}
/**
* $sql = "select * from `文章表` where `biz`='".$biz."'
* and `content_url` like '%".$sn."%'" limit 0,1;
* 根據biz和sn找到對應的文章
*/
Post post = postMapper.selectByBizAndSn(biz, sn);
if(post == null){
System.out.println("biz:"+biz);
System.out.println("sn:"+sn);
tmpListMapper.deleteByLoad(1);
return;
}
// System.out.println("json數據:"+str);
Integer read_num;
Integer like_num;
try{
read_num = JsonPath.read(str, "['appmsgstat']['read_num']");//閱讀量
like_num = JsonPath.read(str, "['appmsgstat']['like_num']");//點(diǎn)贊量
}catch(Exception e){
read_num = 123;//閱讀量
like_num = 321;//點(diǎn)贊量
System.out.println("read_num:"+read_num);
System.out.println("like_num:"+like_num);
System.out.println(e.getMessage());
}
/**
* 在這里同樣根據sn在采集隊列表中刪除對應的文章,代表這篇文章可以移出采集隊列了
* $sql = "delete from `隊列表` where `content_url` like '%".$sn."%'"
*/
tmpListMapper.deleteBySn(sn);
//然后將閱讀量和點(diǎn)贊量更新到文章表中。
post.setReadnum(read_num);
post.setLikenum(like_num);
postMapper.updateByPrimaryKey(post);
}
將js注入微信的處理跳轉方法:
public String getWxHis() {
String url = "";
// TODO Auto-generated method stub
/**
* 當前頁(yè)面為公眾號歷史消息時(shí),讀取這個(gè)程序
* 在采集隊列表中有一個(gè)load字段,當值等于1時(shí)代表正在被讀取
* 首先刪除采集隊列表中load=1的行
* 然后從隊列表中任意select一行
*/
tmpListMapper.deleteByLoad(1);
TmpList queue = tmpListMapper.selectRandomOne();
System.out.println("queue is null?"+queue);
if(queue == null){//隊列表為空
/**
* 隊列表如果空了,就從存儲公眾號biz的表中取得一個(gè)biz,
* 這里我在公眾號表中設置了一個(gè)采集時(shí)間的time字段,按照正序排列之后,
* 就得到時(shí)間戳最小的一個(gè)公眾號記錄,并取得它的biz
*/
WeiXin weiXin = weiXinMapper.selectOne();
String biz = weiXin.getBiz();
url = "https://mp.weixin.qq.com/mp/pr ... ot%3B + biz +
"#wechat_redirect";//拼接公眾號歷史消息url地址(第二種頁(yè)面形式)
//更新剛才提到的公眾號表中的采集時(shí)間time字段為當前時(shí)間戳。
weiXin.setCollect(System.currentTimeMillis());
int result = weiXinMapper.updateByPrimaryKey(weiXin);
System.out.println("getHis weiXin updateResult:"+result);
}else{
//取得當前這一行的content_url字段
url = queue.getContentUrl();
//將load字段update為1
tmpListMapper.updateByContentUrl(url);
}
//將下一個(gè)將要跳轉的$url變成js腳本,由anyproxy注入到微信頁(yè)面中。
//echo "setTimeout(function(){window.location.href='".$url."';},2000);";
int randomTime = new Random().nextInt(3) + 3;
String jsCode = "setTimeout(function(){window.location.href='"+url+"';},"+randomTime*1000+");";
return jsCode;
}
以上是處理代理服務(wù)器截獲的數據的程序。這里有一個(gè)需要注意的問(wèn)題。程序會(huì )依次訪(fǎng)問(wèn)數據庫中每個(gè)收錄的公眾號,甚至會(huì )再次訪(fǎng)問(wèn)存儲的文章,以不斷更新收錄的閱讀點(diǎn)贊數@文章 的。如果需要抓取大量公眾號,建議修改添加任務(wù)隊列和添加條件的代碼,否則多輪公眾號抓取重復數據的效率會(huì )受到很大影響。
至此,微信公眾號的文章鏈接全部被爬取完畢,且該鏈接為永久有效鏈接,可在瀏覽器中打開(kāi)。接下來(lái)就是編寫(xiě)爬蟲(chóng)程序,從數據庫中爬取鏈接文章的內容等信息。
我用webmagic寫(xiě)了一個(gè)爬蟲(chóng),輕量級,好用。
public class SpiderModel implements PageProcessor{
private static PostMapper postMapper;
private static List posts;
// 抓取網(wǎng)站的相關(guān)配置,包括編碼、抓取間隔、重試次數等
private Site site = Site.me().setRetryTimes(3).setSleepTime(100);
public Site getSite() {
// TODO Auto-generated method stub
return this.site;
}
public void process(Page page) {
// TODO Auto-generated method stub
Post post = posts.remove(0);
String content = page.getHtml().xpath("//div[@id='js_content']").get();
//存在和諧文章 此處做判定如果有直接刪除記錄或設置表示位表示文章被和諧
if(content == null){
System.out.println("文章已和諧!");
//postMapper.deleteByPrimaryKey(post.getId());
return;
}
String contentSnap = content.replaceAll("data-src", "src").replaceAll("preview.html", "player.html");//快照
String contentTxt = HtmlToWord.stripHtml(content);//純文本內容
Selectable metaContent = page.getHtml().xpath("//div[@id='meta_content']");
String pubTime = null;
String wxname = null;
String author = null;
if(metaContent != null){
pubTime = metaContent.xpath("//em[@id='post-date']").get();
if(pubTime != null){
pubTime = HtmlToWord.stripHtml(pubTime);//文章發(fā)布時(shí)間
}
wxname = metaContent.xpath("//a[@id='post-user']").get();
if(wxname != null){
wxname = HtmlToWord.stripHtml(wxname);//公眾號名稱(chēng)
}
author = metaContent.xpath("//em[@class='rich_media_meta rich_media_meta_text' and @id!='post-date']").get();
if(author != null){
author = HtmlToWord.stripHtml(author);//文章作者
}
}
// System.out.println("發(fā)布時(shí)間:"+pubTime);
// System.out.println("公眾號名稱(chēng):"+wxname);
// System.out.println("文章作者:"+author);
String title = post.getTitle().replaceAll(" ", "");//文章標題
String digest = post.getDigest();//文章摘要
int likeNum = post.getLikenum();//文章點(diǎn)贊數
int readNum = post.getReadnum();//文章閱讀數
String contentUrl = post.getContentUrl();//文章鏈接
WechatInfoBean wechatBean = new WechatInfoBean();
wechatBean.setTitle(title);
wechatBean.setContent(contentTxt);//純文本內容
wechatBean.setSourceCode(contentSnap);//快照
wechatBean.setLikeCount(likeNum);
wechatBean.setViewCount(readNum);
wechatBean.setAbstractText(digest);//摘要
wechatBean.setUrl(contentUrl);
wechatBean.setPublishTime(pubTime);
wechatBean.setSiteName(wxname);//站點(diǎn)名稱(chēng) 公眾號名稱(chēng)
wechatBean.setAuthor(author);
wechatBean.setMediaType("微信公眾號");//來(lái)源媒體類(lèi)型
WechatStorage.saveWechatInfo(wechatBean);
//標示文章已經(jīng)被爬取
post.setIsSpider(1);
postMapper.updateByPrimaryKey(post);
}
public static void startSpider(List inposts,PostMapper myPostMapper,String... urls){
long startTime, endTime;
startTime = System.currentTimeMillis();
postMapper = myPostMapper;
posts = inposts;
HttpClientDownloader httpClientDownloader = new HttpClientDownloader();
SpiderModel spiderModel = new SpiderModel();
Spider mySpider = Spider.create(spiderModel).addUrl(urls);
mySpider.setDownloader(httpClientDownloader);
try {
SpiderMonitor.instance().register(mySpider);
mySpider.thread(1).run();
} catch (JMException e) {
e.printStackTrace();
}
endTime = System.currentTimeMillis();
System.out.println("爬取時(shí)間" + ((endTime - startTime) / 1000) + "秒--");
}
}
其他一些不相關(guān)的數據存儲代碼將不會(huì )發(fā)布。這里我將代理服務(wù)器抓取的數據存儲在mysql中,將我的爬蟲(chóng)爬取的數據存儲在mongodb中。
以下是我爬取的公眾號信息:


打開(kāi)應用程序并閱讀筆記
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 434 次瀏覽 ? 2022-03-13 06:13
Python微信公眾號文章爬取
一.想法
我們通過(guò)網(wǎng)頁(yè)版微信公眾平臺的圖文消息中的超鏈接獲取我們需要的界面
從界面中我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二.界面分析
獲取微信公眾號界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=公眾號
token = 每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
所以在這個(gè)界面中,我們只需要獲取token,查詢(xún)的是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。
獲取公眾號對應的文章接口:
范圍:
行動(dòng)=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,而這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以得到微信公眾號文章的數據了。
三.實(shí)現第一步:
首先我們需要通過(guò)selenium來(lái)模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。模擬用戶(hù)輸入對應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃碼。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token并返回。
第二步:1.請求獲取對應的公眾號接口,獲取我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取的token和cookie,然后通過(guò)requests.get請求獲取微信公眾號返回的json數據
lists = search_resp.json().get('list')[0]
通過(guò)以上代碼可以獲取對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼,可以得到對應的 fakeid
2.請求訪(fǎng)問(wèn)微信公眾號文章接口,獲取我們需要的文章數據
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入 fakeid 和 token 然后調用 requests.get 請求接口獲取返回的 json 數據。
我們實(shí)現了微信公眾號文章的爬取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,我們在循環(huán)獲取文章的時(shí)候,一定要設置一個(gè)延遲時(shí)間,否則容易被封號,獲取不到返回的數據。 查看全部
querylist采集微信公眾號文章(Python微信公眾號文章爬取一.思路我們通過(guò)網(wǎng)頁(yè)版)
Python微信公眾號文章爬取
一.想法
我們通過(guò)網(wǎng)頁(yè)版微信公眾平臺的圖文消息中的超鏈接獲取我們需要的界面


從界面中我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二.界面分析
獲取微信公眾號界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=公眾號
token = 每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
所以在這個(gè)界面中,我們只需要獲取token,查詢(xún)的是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。

獲取公眾號對應的文章接口:
范圍:
行動(dòng)=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,而這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以得到微信公眾號文章的數據了。

三.實(shí)現第一步:
首先我們需要通過(guò)selenium來(lái)模擬登錄,然后獲取cookie和對應的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
url = browser.current_url
# 獲取當前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 轉換為字符串
cookie_str = json.dumps(post)
# 存儲到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,里面的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。模擬用戶(hù)輸入對應賬號密碼,點(diǎn)擊登錄,出現掃碼驗證,登錄微信即可掃碼。
刷新當前網(wǎng)頁(yè)后,獲取當前cookie和token并返回。
第二步:1.請求獲取對應的公眾號接口,獲取我們需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-b ... 39%3B
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取的token和cookie,然后通過(guò)requests.get請求獲取微信公眾號返回的json數據
lists = search_resp.json().get('list')[0]
通過(guò)以上代碼可以獲取對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼,可以得到對應的 fakeid
2.請求訪(fǎng)問(wèn)微信公眾號文章接口,獲取我們需要的文章數據
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我們傳入 fakeid 和 token 然后調用 requests.get 請求接口獲取返回的 json 數據。
我們實(shí)現了微信公眾號文章的爬取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,我們在循環(huán)獲取文章的時(shí)候,一定要設置一個(gè)延遲時(shí)間,否則容易被封號,獲取不到返回的數據。
querylist采集微信公眾號文章(Python模擬安卓App操作微信App的方法(詳見(jiàn)代碼介紹))
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 231 次瀏覽 ? 2022-03-12 07:07
本文章主要介紹基于Python采集對微信公眾號歷史數據的爬取。通過(guò)文中的示例代碼介紹的很詳細,對大家的學(xué)習或工作有一定的參考和學(xué)習價(jià)值。需要的朋友可以參考以下
鯤之鵬技術(shù)人員將在本文中通過(guò)模擬微信App的操作,介紹一種采集指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket和Cookie)。
為了得到這四個(gè)參數,我們需要模擬運行App,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(見(jiàn)詳情)。對于 HTTP 集成的數據包捕獲,我們之前已經(jīng)介紹了 Mitmproxy(見(jiàn)詳情)。
我們需要模擬微信的操作來(lái)完成以下步驟:
1. 啟動(dòng)微信應用
2. 點(diǎn)擊“通訊錄”
3. 點(diǎn)擊“公眾號”
4.點(diǎn)擊你想要的公眾號采集
5. 點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”
至此,我們可以從響應數據中捕獲__biz、appmsg_token、pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下所示。
有了以上四個(gè)參數,我們就可以構造API請求獲取歷史文章列表,直接調用API接口獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變offset參數,可以得到所有的歷史數據。
# Cookie headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'} url = 'https://mp.weixin.qq.com/mp/profile_ext?' data = {} data['is_ok'] = '1' data['count'] = '10' data['wxtoken'] = '' data['f'] = 'json' data['scene'] = '124' data['uin'] = '777' data['key'] = '777' data['offset'] = '0' data['action'] = 'getmsg' data['x5'] = '0' # 下面三個(gè)參數需要替換 # https://mp.weixin.qq.com/mp/pr ... Dhome應答數據里會(huì )暴漏這三個(gè)參數 data['__biz'] = 'MjM5MzQyOTM1OQ==' data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~' data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE' url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集流程操作截圖如下:
輸出的屏幕截圖如下所示:
以上就是基于Python采集抓取微信公眾號歷史數據的詳細內容,更多詳情請關(guān)注html中文網(wǎng)其他相關(guān)話(huà)題文章! 查看全部
querylist采集微信公眾號文章(Python模擬安卓App操作微信App的方法(詳見(jiàn)代碼介紹))
本文章主要介紹基于Python采集對微信公眾號歷史數據的爬取。通過(guò)文中的示例代碼介紹的很詳細,對大家的學(xué)習或工作有一定的參考和學(xué)習價(jià)值。需要的朋友可以參考以下
鯤之鵬技術(shù)人員將在本文中通過(guò)模擬微信App的操作,介紹一種采集指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket和Cookie)。

為了得到這四個(gè)參數,我們需要模擬運行App,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(見(jiàn)詳情)。對于 HTTP 集成的數據包捕獲,我們之前已經(jīng)介紹了 Mitmproxy(見(jiàn)詳情)。
我們需要模擬微信的操作來(lái)完成以下步驟:
1. 啟動(dòng)微信應用
2. 點(diǎn)擊“通訊錄”
3. 點(diǎn)擊“公眾號”
4.點(diǎn)擊你想要的公眾號采集
5. 點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”


至此,我們可以從響應數據中捕獲__biz、appmsg_token、pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下所示。


有了以上四個(gè)參數,我們就可以構造API請求獲取歷史文章列表,直接調用API接口獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變offset參數,可以得到所有的歷史數據。
# Cookie headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'} url = 'https://mp.weixin.qq.com/mp/profile_ext?' data = {} data['is_ok'] = '1' data['count'] = '10' data['wxtoken'] = '' data['f'] = 'json' data['scene'] = '124' data['uin'] = '777' data['key'] = '777' data['offset'] = '0' data['action'] = 'getmsg' data['x5'] = '0' # 下面三個(gè)參數需要替換 # https://mp.weixin.qq.com/mp/pr ... Dhome應答數據里會(huì )暴漏這三個(gè)參數 data['__biz'] = 'MjM5MzQyOTM1OQ==' data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~' data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE' url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集流程操作截圖如下:

輸出的屏幕截圖如下所示:

以上就是基于Python采集抓取微信公眾號歷史數據的詳細內容,更多詳情請關(guān)注html中文網(wǎng)其他相關(guān)話(huà)題文章!
querylist采集微信公眾號文章(python采集微信公眾號文章本文(操作postgres數據庫)抓取)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 449 次瀏覽 ? 2022-03-11 17:00
Python搶購搜狗微信公眾號文章
初學(xué)python,搶搜狗微信公眾號文章存入mysql
mysql表:
代碼:
import requests
import json
import re
import pymysql
# 創(chuàng )建連接
conn = pymysql.connect(host='你的數據庫地址', port=端口, user='用戶(hù)名', passwd='密碼', db='數據庫名稱(chēng)', charset='utf8')
# 創(chuàng )建游標
cursor = conn.cursor()
cursor.execute("select * from hd_gzh")
effect_row = cursor.fetchall()
from bs4 import BeautifulSoup
socket.setdefaulttimeout(60)
count = 1
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'}
#阿布云ip代理暫時(shí)不用
# proxyHost = "http-cla.abuyun.com"
# proxyPort = "9030"
# # 代理隧道驗證信息
# proxyUser = "H56761606429T7UC"
# proxyPass = "9168EB00C4167176"
# proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
# "host" : proxyHost,
# "port" : proxyPort,
# "user" : proxyUser,
# "pass" : proxyPass,
# }
# proxies = {
# "http" : proxyMeta,
# "https" : proxyMeta,
# }
#查看是否已存在數據
def checkData(name):
sql = "select * from gzh_article where title = '%s'"
data = (name,)
count = cursor.execute(sql % data)
conn.commit()
if(count!=0):
return False
else:
return True
#插入數據
def insertData(title,picture,author,content):
sql = "insert into gzh_article (title,picture,author,content) values ('%s', '%s','%s', '%s')"
data = (title,picture,author,content)
cursor.execute(sql % data)
conn.commit()
print("插入一條數據")
return
for row in effect_row:
newsurl = 'https://weixin.sogou.com/weixin?type=1&s_from=input&query=' + row[1] + '&ie=utf8&_sug_=n&_sug_type_='
res = requests.get(newsurl,headers=headers)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
url = 'https://weixin.sogou.com' + soup.select('.tit a')[0]['href']
res2 = requests.get(url,headers=headers)
res2.encoding = 'utf-8'
soup2 = BeautifulSoup(res2.text,'html.parser')
pattern = re.compile(r"url \+= '(.*?)';", re.MULTILINE | re.DOTALL)
script = soup2.find("script")
url2 = pattern.search(script.text).group(1)
res3 = requests.get(url2,headers=headers)
res3.encoding = 'utf-8'
soup3 = BeautifulSoup(res3.text,'html.parser')
print()
pattern2 = re.compile(r"var msgList = (.*?);$", re.MULTILINE | re.DOTALL)
script2 = soup3.find("script", text=pattern2)
s2 = json.loads(pattern2.search(script2.text).group(1))
#等待10s
time.sleep(10)
for news in s2["list"]:
articleurl = "https://mp.weixin.qq.com"+news["app_msg_ext_info"]["content_url"]
articleurl = articleurl.replace('&','&')
res4 = requests.get(articleurl,headers=headers)
res4.encoding = 'utf-8'
soup4 = BeautifulSoup(res4.text,'html.parser')
if(checkData(news["app_msg_ext_info"]["title"])):
insertData(news["app_msg_ext_info"]["title"],news["app_msg_ext_info"]["cover"],news["app_msg_ext_info"]["author"],pymysql.escape_string(str(soup4)))
count += 1
#等待5s
time.sleep(10)
for news2 in news["app_msg_ext_info"]["multi_app_msg_item_list"]:
articleurl2 = "https://mp.weixin.qq.com"+news2["content_url"]
articleurl2 = articleurl2.replace('&','&')
res5 = requests.get(articleurl2,headers=headers)
res5.encoding = 'utf-8'
soup5 = BeautifulSoup(res5.text,'html.parser')
if(checkData(news2["title"])):
insertData(news2["title"],news2["cover"],news2["author"],pymysql.escape_string(str(soup5)))
count += 1
#等待10s
time.sleep(10)
cursor.close()
conn.close()
print("操作完成")
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持。
時(shí)間:2019-03-31
python采集微信公眾號文章
本文示例分享了python采集微信公眾號文章的具體代碼,供大家參考。具體內容如下。python的一個(gè)子目錄下存放了兩個(gè)文件,分別是:采集公眾號文章.py和config.py。代碼如下:1.采集公眾號文章.py from urllib.parse import urlencode import pymongo import requests from lxml.etree import XMLSyntaxError from requests.exceptions import Connec
Python如何爬取微信公眾號文章及評論(基于Fiddler抓包分析)
背景描述我覺(jué)得微信公眾號是比較難爬的平臺之一,但是經(jīng)過(guò)一番折騰,還是有一點(diǎn)小收獲。沒(méi)用Scrapy(估計爬太快有防爬限制),不過(guò)后面會(huì )開(kāi)始整理寫(xiě)一些實(shí)戰。. 簡(jiǎn)單介紹一下本次的開(kāi)發(fā)環(huán)境:python3請求psycopg2(操作postgres數據庫) 抓包分析 本次實(shí)戰對要抓包的公眾號沒(méi)有限制,但是每次抓包前都要對不同的公眾號進(jìn)行分析。打開(kāi)Fiddler,在手機上配置相關(guān)代理。為了避免過(guò)多干擾,這里給Fiddler一個(gè)過(guò)濾規則,指定微信域名即可:
python爬取微信公眾號文章的方法
最近在學(xué)習Python3網(wǎng)絡(luò )爬蟲(chóng)(崔慶才寫(xiě)的)的開(kāi)發(fā)實(shí)踐,剛剛得知他在這里使用代理爬取了公眾號文章,但是根據他的代碼,還是出現了一些問(wèn)題。我在這里用過(guò)這本書(shū)。對本書(shū)前面提到的一些內容進(jìn)行了改進(jìn)。(作者半年前寫(xiě)了這段代碼,騰訊的網(wǎng)站半年前更新了)我直接加下面代碼:TIMEOUT = 20 from requests import Request, Session, PreparedRequest import requests from selenium import webdrive
50行Python代碼如何獲取所有公眾號文章
前言我們在閱讀公眾號文章時(shí)通常會(huì )遇到一個(gè)問(wèn)題——閱讀歷史文章的體驗并不好。我們知道爬取公眾號的常用方法有兩種:通過(guò)搜狗搜索獲取,缺點(diǎn)是只能獲取最新的十推文章。通過(guò)微信公眾號的素材管理,可以獲得公眾號文章。缺點(diǎn)是需要自己申請公眾號。微信方式獲取公眾號文章的方法。與其他方法相比,非常方便。如上圖,通過(guò)抓包工具獲取微信的網(wǎng)絡(luò )信息請求,我們發(fā)現每次文章
Python爬取指定微信公眾號文章
本文示例分享了python爬取微信公眾號文章的具體代碼,供大家參考。具體內容如下。該方法是依靠 urllib2 庫完成的。首先需要安裝你的python環(huán)境,然后安裝urllib2庫程序的啟動(dòng)方法(返回值為公眾號文章的列表): def openUrl(): print("啟動(dòng)爬蟲(chóng),打開(kāi)搜狗搜索微信界面") # 加載頁(yè)面url = ';s_from=input&query = 被抓取的公眾號名稱(chēng)
Python爬取微信公眾號文章
本文示例分享python爬取微信公眾號文章的具體代碼供大家參考,具體內容如下# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup from requests .exceptions import RequestException import time import random import MySQLdb import threading import socket import math soc
python selenium爬取微信公眾號文章代碼詳解
參考:selenium webdriver 添加cookies: 需求:想看微信公眾號文章的歷史,但是每次都找地方不方便。思路:1.使用selenium打開(kāi)微信公眾號歷史文章,滾動(dòng)刷新到底部,獲取所有歷史文章url。2.遍歷訪(fǎng)問(wèn)url,下載到本地。實(shí)現1.打開(kāi)微信客戶(hù)端,點(diǎn)擊微信公眾號->進(jìn)入公眾號->打開(kāi)歷史文章鏈接(用瀏覽器打開(kāi)),通過(guò)開(kāi)發(fā)者工具獲取cookie
Python使用webdriver爬取微信公眾號
本文示例分享了python使用webdriver爬取微信公眾號的具體代碼,供大家參考。具體內容如下# -*- 編碼:utf-8 -*- from selenium import webdriver import time import json import requests import re import random #微信公眾號user="" #公眾號密碼password="" #設置需要爬取的公眾號列表 gzlist=['香河微服務(wù)
python如何導出微信公眾號文章詳解
1.安裝wkhtmltopdf 下載地址:我用windows進(jìn)行測試,下載安裝后結果如下 2 編寫(xiě)python代碼導出微信公眾號文章 不能直接使用wkhtmltopdf導出微信公眾號文章,導出的文章會(huì )缺圖,所以需要使用微信公眾號文章頁(yè)面,然后將html文本轉換成pdf pip install wechatsogou --升級 pip install pdfkit 踩坑
Python抓取微信公眾號賬號信息的方法
搜狗微信搜索提供了兩種關(guān)鍵詞搜索,一種是搜索公眾號文章的內容,另一種是直接搜索微信公眾號。公眾號基本信息可通過(guò)微信公眾號搜索獲取。還有最近發(fā)布的10個(gè)文章,今天就來(lái)?yè)屛⑿殴娞柕馁~號信息爬蟲(chóng)吧。首先通過(guò)首頁(yè)進(jìn)入,可以按類(lèi)別抓取,通過(guò)“查看更多”可以找到頁(yè)面鏈接規則: import requests as req import re reTypes = r'id="pc_\d*" uigs=" (pc_\d*)">([\s\S]*?)&
Python爬蟲(chóng)_微信公眾號推送信息爬取示例
問(wèn)題描述 使用搜狗的微信搜索,從指定公眾號抓取最新推送,并將對應網(wǎng)頁(yè)保存到本地。注意,搜狗微信獲取的地址是臨時(shí)鏈接,具有時(shí)效性。公眾號為動(dòng)態(tài)網(wǎng)頁(yè)(JavaScript渲染),使用requests.get()獲取的內容不收錄推送消息。這里使用 selenium+PhantomJS 處理代碼#!/usr/bin/env python3 from selenium import webdriver from datetime import datetime import bs4, requ 查看全部
querylist采集微信公眾號文章(python采集微信公眾號文章本文(操作postgres數據庫)抓取)
Python搶購搜狗微信公眾號文章
初學(xué)python,搶搜狗微信公眾號文章存入mysql
mysql表:


代碼:
import requests
import json
import re
import pymysql
# 創(chuàng )建連接
conn = pymysql.connect(host='你的數據庫地址', port=端口, user='用戶(hù)名', passwd='密碼', db='數據庫名稱(chēng)', charset='utf8')
# 創(chuàng )建游標
cursor = conn.cursor()
cursor.execute("select * from hd_gzh")
effect_row = cursor.fetchall()
from bs4 import BeautifulSoup
socket.setdefaulttimeout(60)
count = 1
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'}
#阿布云ip代理暫時(shí)不用
# proxyHost = "http-cla.abuyun.com"
# proxyPort = "9030"
# # 代理隧道驗證信息
# proxyUser = "H56761606429T7UC"
# proxyPass = "9168EB00C4167176"
# proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
# "host" : proxyHost,
# "port" : proxyPort,
# "user" : proxyUser,
# "pass" : proxyPass,
# }
# proxies = {
# "http" : proxyMeta,
# "https" : proxyMeta,
# }
#查看是否已存在數據
def checkData(name):
sql = "select * from gzh_article where title = '%s'"
data = (name,)
count = cursor.execute(sql % data)
conn.commit()
if(count!=0):
return False
else:
return True
#插入數據
def insertData(title,picture,author,content):
sql = "insert into gzh_article (title,picture,author,content) values ('%s', '%s','%s', '%s')"
data = (title,picture,author,content)
cursor.execute(sql % data)
conn.commit()
print("插入一條數據")
return
for row in effect_row:
newsurl = 'https://weixin.sogou.com/weixin?type=1&s_from=input&query=' + row[1] + '&ie=utf8&_sug_=n&_sug_type_='
res = requests.get(newsurl,headers=headers)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
url = 'https://weixin.sogou.com' + soup.select('.tit a')[0]['href']
res2 = requests.get(url,headers=headers)
res2.encoding = 'utf-8'
soup2 = BeautifulSoup(res2.text,'html.parser')
pattern = re.compile(r"url \+= '(.*?)';", re.MULTILINE | re.DOTALL)
script = soup2.find("script")
url2 = pattern.search(script.text).group(1)
res3 = requests.get(url2,headers=headers)
res3.encoding = 'utf-8'
soup3 = BeautifulSoup(res3.text,'html.parser')
print()
pattern2 = re.compile(r"var msgList = (.*?);$", re.MULTILINE | re.DOTALL)
script2 = soup3.find("script", text=pattern2)
s2 = json.loads(pattern2.search(script2.text).group(1))
#等待10s
time.sleep(10)
for news in s2["list"]:
articleurl = "https://mp.weixin.qq.com"+news["app_msg_ext_info"]["content_url"]
articleurl = articleurl.replace('&','&')
res4 = requests.get(articleurl,headers=headers)
res4.encoding = 'utf-8'
soup4 = BeautifulSoup(res4.text,'html.parser')
if(checkData(news["app_msg_ext_info"]["title"])):
insertData(news["app_msg_ext_info"]["title"],news["app_msg_ext_info"]["cover"],news["app_msg_ext_info"]["author"],pymysql.escape_string(str(soup4)))
count += 1
#等待5s
time.sleep(10)
for news2 in news["app_msg_ext_info"]["multi_app_msg_item_list"]:
articleurl2 = "https://mp.weixin.qq.com"+news2["content_url"]
articleurl2 = articleurl2.replace('&','&')
res5 = requests.get(articleurl2,headers=headers)
res5.encoding = 'utf-8'
soup5 = BeautifulSoup(res5.text,'html.parser')
if(checkData(news2["title"])):
insertData(news2["title"],news2["cover"],news2["author"],pymysql.escape_string(str(soup5)))
count += 1
#等待10s
time.sleep(10)
cursor.close()
conn.close()
print("操作完成")
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持。
時(shí)間:2019-03-31
python采集微信公眾號文章

本文示例分享了python采集微信公眾號文章的具體代碼,供大家參考。具體內容如下。python的一個(gè)子目錄下存放了兩個(gè)文件,分別是:采集公眾號文章.py和config.py。代碼如下:1.采集公眾號文章.py from urllib.parse import urlencode import pymongo import requests from lxml.etree import XMLSyntaxError from requests.exceptions import Connec
Python如何爬取微信公眾號文章及評論(基于Fiddler抓包分析)

背景描述我覺(jué)得微信公眾號是比較難爬的平臺之一,但是經(jīng)過(guò)一番折騰,還是有一點(diǎn)小收獲。沒(méi)用Scrapy(估計爬太快有防爬限制),不過(guò)后面會(huì )開(kāi)始整理寫(xiě)一些實(shí)戰。. 簡(jiǎn)單介紹一下本次的開(kāi)發(fā)環(huán)境:python3請求psycopg2(操作postgres數據庫) 抓包分析 本次實(shí)戰對要抓包的公眾號沒(méi)有限制,但是每次抓包前都要對不同的公眾號進(jìn)行分析。打開(kāi)Fiddler,在手機上配置相關(guān)代理。為了避免過(guò)多干擾,這里給Fiddler一個(gè)過(guò)濾規則,指定微信域名即可:
python爬取微信公眾號文章的方法

最近在學(xué)習Python3網(wǎng)絡(luò )爬蟲(chóng)(崔慶才寫(xiě)的)的開(kāi)發(fā)實(shí)踐,剛剛得知他在這里使用代理爬取了公眾號文章,但是根據他的代碼,還是出現了一些問(wèn)題。我在這里用過(guò)這本書(shū)。對本書(shū)前面提到的一些內容進(jìn)行了改進(jìn)。(作者半年前寫(xiě)了這段代碼,騰訊的網(wǎng)站半年前更新了)我直接加下面代碼:TIMEOUT = 20 from requests import Request, Session, PreparedRequest import requests from selenium import webdrive
50行Python代碼如何獲取所有公眾號文章

前言我們在閱讀公眾號文章時(shí)通常會(huì )遇到一個(gè)問(wèn)題——閱讀歷史文章的體驗并不好。我們知道爬取公眾號的常用方法有兩種:通過(guò)搜狗搜索獲取,缺點(diǎn)是只能獲取最新的十推文章。通過(guò)微信公眾號的素材管理,可以獲得公眾號文章。缺點(diǎn)是需要自己申請公眾號。微信方式獲取公眾號文章的方法。與其他方法相比,非常方便。如上圖,通過(guò)抓包工具獲取微信的網(wǎng)絡(luò )信息請求,我們發(fā)現每次文章
Python爬取指定微信公眾號文章
本文示例分享了python爬取微信公眾號文章的具體代碼,供大家參考。具體內容如下。該方法是依靠 urllib2 庫完成的。首先需要安裝你的python環(huán)境,然后安裝urllib2庫程序的啟動(dòng)方法(返回值為公眾號文章的列表): def openUrl(): print("啟動(dòng)爬蟲(chóng),打開(kāi)搜狗搜索微信界面") # 加載頁(yè)面url = ';s_from=input&query = 被抓取的公眾號名稱(chēng)
Python爬取微信公眾號文章
本文示例分享python爬取微信公眾號文章的具體代碼供大家參考,具體內容如下# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup from requests .exceptions import RequestException import time import random import MySQLdb import threading import socket import math soc
python selenium爬取微信公眾號文章代碼詳解
參考:selenium webdriver 添加cookies: 需求:想看微信公眾號文章的歷史,但是每次都找地方不方便。思路:1.使用selenium打開(kāi)微信公眾號歷史文章,滾動(dòng)刷新到底部,獲取所有歷史文章url。2.遍歷訪(fǎng)問(wèn)url,下載到本地。實(shí)現1.打開(kāi)微信客戶(hù)端,點(diǎn)擊微信公眾號->進(jìn)入公眾號->打開(kāi)歷史文章鏈接(用瀏覽器打開(kāi)),通過(guò)開(kāi)發(fā)者工具獲取cookie
Python使用webdriver爬取微信公眾號
本文示例分享了python使用webdriver爬取微信公眾號的具體代碼,供大家參考。具體內容如下# -*- 編碼:utf-8 -*- from selenium import webdriver import time import json import requests import re import random #微信公眾號user="" #公眾號密碼password="" #設置需要爬取的公眾號列表 gzlist=['香河微服務(wù)
python如何導出微信公眾號文章詳解
1.安裝wkhtmltopdf 下載地址:我用windows進(jìn)行測試,下載安裝后結果如下 2 編寫(xiě)python代碼導出微信公眾號文章 不能直接使用wkhtmltopdf導出微信公眾號文章,導出的文章會(huì )缺圖,所以需要使用微信公眾號文章頁(yè)面,然后將html文本轉換成pdf pip install wechatsogou --升級 pip install pdfkit 踩坑
Python抓取微信公眾號賬號信息的方法
搜狗微信搜索提供了兩種關(guān)鍵詞搜索,一種是搜索公眾號文章的內容,另一種是直接搜索微信公眾號。公眾號基本信息可通過(guò)微信公眾號搜索獲取。還有最近發(fā)布的10個(gè)文章,今天就來(lái)?yè)屛⑿殴娞柕馁~號信息爬蟲(chóng)吧。首先通過(guò)首頁(yè)進(jìn)入,可以按類(lèi)別抓取,通過(guò)“查看更多”可以找到頁(yè)面鏈接規則: import requests as req import re reTypes = r'id="pc_\d*" uigs=" (pc_\d*)">([\s\S]*?)&
Python爬蟲(chóng)_微信公眾號推送信息爬取示例

問(wèn)題描述 使用搜狗的微信搜索,從指定公眾號抓取最新推送,并將對應網(wǎng)頁(yè)保存到本地。注意,搜狗微信獲取的地址是臨時(shí)鏈接,具有時(shí)效性。公眾號為動(dòng)態(tài)網(wǎng)頁(yè)(JavaScript渲染),使用requests.get()獲取的內容不收錄推送消息。這里使用 selenium+PhantomJS 處理代碼#!/usr/bin/env python3 from selenium import webdriver from datetime import datetime import bs4, requ