
querylist采集微信公眾號文章
python-抓取微信官方帳戶(hù)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 188 次瀏覽 ? 2020-08-07 22:07
我相信您有時(shí)會(huì )在面試期間遇到抓取微信官方帳戶(hù)的問(wèn)題. 當您最終有空時(shí),您將參考老板的文章,我也開(kāi)始抓取并分享微信官方帳戶(hù). 不要討厭代碼太低.
學(xué)習知識
博客參考:https://blog.csdn.net/xc_zhou/ ... 32587 先看一篇這個(gè)大佬的文章,理解一下微信公眾號。
嘗試抓取微信文章的朋友必須熟悉搜狗微信. 搜狗微信是騰訊提供的官方搜索引擎,專(zhuān)門(mén)用于搜索微信官方賬號(不包括服務(wù)賬號)發(fā)布的文章
搜狗微信鏈接:
爬網(wǎng)步驟如下: 第一步是創(chuàng )建您自己的官方帳戶(hù)
創(chuàng )建正式帳戶(hù)地址: #不會(huì )提及創(chuàng )建方法.
第二步是找到微信官方賬號
第一步如圖所示:
第二步如圖所示:
第三步如圖所示:
第四步如圖所示:
以計算機視覺(jué)為例. 當然,您也可以選擇其他參數,然后查看需要在請求中提交的參數.
第五步如圖所示:
可以看到每個(gè)正式帳戶(hù)都有一個(gè)falseid參數,訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)請求都需要該參數,請參閱步驟6.
第六步如圖所示:
選擇要爬網(wǎng)的文章,然后查看請求所需的參數.
第七步如圖所示:
每個(gè)官方帳戶(hù)的前五篇文章.
以上步驟是微信公眾號文章的要求. 然后在分析之后使用代碼來(lái)實(shí)現它. 如果您不了解上述分析,建議您參考以下文章:
https://blog.csdn.net/xc_zhou/ ... 32921
https://mp.weixin.qq.com/s%3F_ ... %23rd
代碼如下 查看全部
原因
我相信您有時(shí)會(huì )在面試期間遇到抓取微信官方帳戶(hù)的問(wèn)題. 當您最終有空時(shí),您將參考老板的文章,我也開(kāi)始抓取并分享微信官方帳戶(hù). 不要討厭代碼太低.
學(xué)習知識
博客參考:https://blog.csdn.net/xc_zhou/ ... 32587 先看一篇這個(gè)大佬的文章,理解一下微信公眾號。
嘗試抓取微信文章的朋友必須熟悉搜狗微信. 搜狗微信是騰訊提供的官方搜索引擎,專(zhuān)門(mén)用于搜索微信官方賬號(不包括服務(wù)賬號)發(fā)布的文章
搜狗微信鏈接:
爬網(wǎng)步驟如下: 第一步是創(chuàng )建您自己的官方帳戶(hù)
創(chuàng )建正式帳戶(hù)地址: #不會(huì )提及創(chuàng )建方法.
第二步是找到微信官方賬號
第一步如圖所示:

第二步如圖所示:

第三步如圖所示:

第四步如圖所示:
以計算機視覺(jué)為例. 當然,您也可以選擇其他參數,然后查看需要在請求中提交的參數.

第五步如圖所示:
可以看到每個(gè)正式帳戶(hù)都有一個(gè)falseid參數,訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)請求都需要該參數,請參閱步驟6.

第六步如圖所示:
選擇要爬網(wǎng)的文章,然后查看請求所需的參數.

第七步如圖所示:
每個(gè)官方帳戶(hù)的前五篇文章.

以上步驟是微信公眾號文章的要求. 然后在分析之后使用代碼來(lái)實(shí)現它. 如果您不了解上述分析,建議您參考以下文章:
https://blog.csdn.net/xc_zhou/ ... 32921
https://mp.weixin.qq.com/s%3F_ ... %23rd
代碼如下
微信公眾號文章采集器系統
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 376 次瀏覽 ? 2020-08-07 20:19
1. 我做了兩個(gè)履帶. 我第一次害怕Phoenix.com時(shí),沒(méi)有任何限制,我可以隨意爬網(wǎng),所以我放松了對自動(dòng)代碼執行模塊的警惕. 我認為這很簡(jiǎn)單,但事實(shí)并非如此. 我已經(jīng)為這個(gè)問(wèn)題困擾了好幾天,幾乎是四天. 由于搜狗的限制,獲得相同IP的次數越來(lái)越多. 首先,顯示驗證碼,其次是訪(fǎng)問(wèn)限制. 直接無(wú)法訪(fǎng)問(wèn). 根據請求,您得到的是訪(fǎng)問(wèn)次數太頻繁,這種提示,因此在開(kāi)發(fā)過(guò)程中最麻煩的不是代碼的編寫(xiě),而是測試. 編寫(xiě)后無(wú)法立即測試該代碼. 我相信大多數程序員都不會(huì )喜歡,我現在編寫(xiě)的程序每天執行3次. 這樣的頻率很好,并且因為它是由多個(gè)官方帳戶(hù)采集的,所以每個(gè)官方帳戶(hù)之間也要有間隔,否則它將同時(shí)訪(fǎng)問(wèn)十多個(gè)公眾,該帳戶(hù)上的數百篇文章也不切實(shí)際. 在插入句子時(shí),如何使每個(gè)正式帳戶(hù)都不敢玩,等待特定的時(shí)間段,執行下一個(gè),最后使用setInterval函數來(lái)解決它,
每80秒執行一個(gè)正式帳戶(hù),并將每個(gè)執行代碼寫(xiě)入hello. 泡沫距離有點(diǎn)遠. 我會(huì )收到的. 我們來(lái)談?wù)刢ron程序包,它是自動(dòng)執行的. npm官方網(wǎng)站上僅舉了一個(gè)例子,但是我的意思是桑拿浴可能有點(diǎn)壓抑. 我無(wú)法播放,但了解其用法. 然后我說(shuō),如果我聽(tīng)不懂怎么辦. 在Internet,百度和cron程序包的特定用法上進(jìn)行搜索. 有很多,所以我只是看了看,但是經(jīng)過(guò)仔細的分析卻并非如此. 都是廢話(huà),沒(méi)用. 一般在線(xiàn)使用中都有一個(gè)問(wèn)號,但是當我添加一個(gè)問(wèn)號時(shí),會(huì )出現錯誤. 是的,這都是胡說(shuō)八道. 最后,我在同學(xué)小組的一個(gè)前端技術(shù)討論小組中說(shuō)了這一點(diǎn). 真正熱情的小組朋友找到了我一個(gè)鏈接. 我進(jìn)去看看,嘗試了一下,沒(méi)關(guān)系,所以,非常感謝這位幫助我解決難題的同學(xué). 我將再次附上QQ群組號碼和鏈接,以幫助您在閱讀本文時(shí)學(xué)習. QQ組號: 435012561,鏈接: ,鏈接說(shuō)的沒(méi)問(wèn)題,至少可以用,這里我仍然有一個(gè)問(wèn)題,就是時(shí)區,我們以前用過(guò)一次,使用洛杉磯時(shí)間,但是這次顯然不起作用,我們需要用中文,但是我在北京嘗試了幾次,雖然不好,但是重慶可以,所以我用了重慶.
2. 我想在這里談?wù)摰氖菑牡刂窓讷@取參數的問(wèn)題. 我做的最后一個(gè)很好,但是我不知道該怎么做. 我從地址欄中得到的最后一個(gè)是數字,但是這個(gè)是它的. 它是一個(gè)字符串,并且mongodb中對字段的要求仍然非常嚴格,因此分頁(yè)功能困擾了我幾個(gè)小時(shí). 它是如何解決的?我在mongodb中添加了一個(gè)討論組. 我問(wèn)其中有什么問(wèn)題,并發(fā)布了屏幕截圖. 有一個(gè)熱心的網(wǎng)民說(shuō),傳入數據的格式顯然不正確. 我喚醒了做夢(mèng)者,我說(shuō)了是,然后我使用Number()函數來(lái)處理我得到的參數,以便字符串類(lèi)型的數量成為數字類(lèi)型的數量. 很好,因此在使用mongodb時(shí),必須注意存儲數據的格式.
3. Mongodb查詢(xún)數據語(yǔ)句的組織:
坦率地說(shuō),實(shí)際上是使用了限制和跳過(guò)這兩個(gè)函數,但是特定的格式可能是樂(lè )觀(guān)的,并且mine是可接受的參數,但是mongo的參數接受很容易直接編寫(xiě),不需要喜歡sql像$ {“”}一樣. 下面的排序功能說(shuō)明了排序方法. 這里,ctime字段設置為標準,-1表示逆序,1表示正序,
4. 在這段代碼編寫(xiě)中,我第一次使用了try catch方法進(jìn)行糾錯. 原來(lái)沒(méi)關(guān)系. 偶爾的錯誤可以正常地打印出來(lái),但是它不會(huì )影響代碼的整體執行,或者說(shuō)到下一次執行,整體感覺(jué)非常好,
對于特定用法,將您要執行的代碼放入try中,并在最后添加一行,并拋出Error();
然后傳入參數e以進(jìn)行捕獲,可以在catch中打印很多消息,我只打印了其中之一,例如e.message
5. anync包主要用于此編碼過(guò)程中,其中的ansyc.each循環(huán),ansyc.waterfall在執行完上述操作后可以執行以下操作,也可以在您之間的上下傳遞參數,這非常重要的是,因為在此編程中,每次獲取的內容都不同,每個(gè)代碼執行的條件也不同,也就是說(shuō),所需的參數也不同,即,下一個(gè)代碼執行可能需要上一個(gè)代碼. 執行,所以這個(gè)anync軟件包真的值得研究. 他的每種方法都不相同,有時(shí)可能會(huì )得到意想不到的結果.
6. 在mysql中,如果要實(shí)現這樣的效果,即如果它已經(jīng)存在于數據庫中,則忽略它,或者不重復存儲它;如果它不存在于數據庫中,則將其存儲在其中. 用replace替換插入數據的插入. 但是在mongodb中,應該沒(méi)有,或者我還沒(méi)有找到它. 我用這種方法解決了. 我定義了一個(gè)開(kāi)關(guān)來(lái)使該開(kāi)關(guān)為真. 在每次存儲之前,循環(huán)所有數據以查看是否有該數據,如果沒(méi)有,則讓開(kāi)關(guān)變?yōu)榧?,否則,繼續執行,即判斷此時(shí)開(kāi)關(guān)是真還是假,如果為true,則執行插入操作;如果為false,則將其忽略. 這樣可以達到類(lèi)似的效果,否則每次都會(huì )存儲大量重復數據,
7. 該集合的核心是我文件中的common.js. 首先,因為我們要采集,所以我們需要使用請求包. 采集后,我們需要以html格式處理數據,以便可以使用類(lèi)似于jquery的數據. 對于該操作,cheerio包已使用了很長(cháng)時(shí)間,然后在循環(huán)采集時(shí)將使用anync.each方法,因此將使用異步包,
7-1,
通過(guò)采集搜狗微信,我們必須分析搜狗微信的路徑. 每個(gè)官方帳戶(hù)頁(yè)面的路徑都是這樣
?。8%BF%99%E6%89%8D%E6%98%AF%E6%97%A5%E6%9C%AC&ie = utf8&_sug_ = n&_sug_type _ =
這是“這是日本”頁(yè)面的鏈接. 經(jīng)過(guò)分析,所有正式帳戶(hù)的鏈接僅在查詢(xún)后的參數上有所不同,但是查詢(xún)后的參數是什么,實(shí)際上,它是由encodeURIComponent()函數轉換的,之后是“這是日本”,因此相同. 要獲得該官方帳戶(hù),只需對官方帳戶(hù)的名稱(chēng)進(jìn)行編碼并將其動(dòng)態(tài)組合成一個(gè)鏈接,您就可以在訪(fǎng)問(wèn)時(shí)輸入每個(gè)鏈接,但是我只是要求此頁(yè)面此鏈接,
不是
此頁(yè)面,因此進(jìn)一步的處理是獲取當前頁(yè)面的第一內容的鏈接,即href
獲得此鏈接后,您會(huì )發(fā)現他具有自己的加密方法. 實(shí)際上非常簡(jiǎn)單,就是在鏈接中增加三個(gè)安培;更換這三個(gè)放大器;在帶有空鏈接的鏈接中,就好了,這是第一步,獲取每個(gè)官方帳戶(hù)的頁(yè)面鏈接,
7-2
獲取鏈接后,有必要訪(fǎng)問(wèn),即請求,請求每個(gè)地址,獲取每個(gè)地址的內容,但每個(gè)頁(yè)面上顯示的內容不在該頁(yè)面中,即在html結構中,隱藏在js中,因此我們需要通過(guò)常規匹配來(lái)獲取每篇文章的對象,然后循環(huán)訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)的對象以獲取有關(guān)該對象中每篇文章的一些信息,包括標題,縮略圖,摘要,URL,時(shí)間, 5個(gè)字段,但我使用的代碼很爛,而我當時(shí)使用的是
Object.Attribute.foreach(function(item,index){
})
這種可怕的方法,最后要做的就是編寫(xiě)一個(gè)循環(huán)以完全獲取每個(gè)對象,否則只能獲取第一個(gè)對象. 在這里,您應該使用async.each或async.foreach. 可以使用兩種方法中的每一種,并且它們都非常易于使用. 這樣,您將獲得上述每篇文章的基本新聞.
7-3,
第三階段是進(jìn)入每篇文章的詳細信息頁(yè)面,并獲取每篇文章的內容,喜歡的次數,作者,官方帳號,閱讀量和其他數據. 這里遇到的主要問(wèn)題是人們的內容直接位于js中,并且所有img標簽都有問(wèn)題. 它們以這種形式存儲在內容中,但是在這種情況下,由于標簽,html文檔(我不知道此類(lèi)img標簽)存在問(wèn)題,此類(lèi)圖像無(wú)法顯示在我們的網(wǎng)頁(yè)上,因此在這里我們需要進(jìn)行一些處理,替換全部與
查看全部
已經(jīng)快兩個(gè)星期了. 我已經(jīng)在微信公眾號上調試了商品采集器系統,最后一切都很好,但是在此期間,我遇到了很多問(wèn)題. 讓我們今天回顧一下并進(jìn)行總結. 我希望它會(huì )有用. 朋友可以學(xué)習.
1. 我做了兩個(gè)履帶. 我第一次害怕Phoenix.com時(shí),沒(méi)有任何限制,我可以隨意爬網(wǎng),所以我放松了對自動(dòng)代碼執行模塊的警惕. 我認為這很簡(jiǎn)單,但事實(shí)并非如此. 我已經(jīng)為這個(gè)問(wèn)題困擾了好幾天,幾乎是四天. 由于搜狗的限制,獲得相同IP的次數越來(lái)越多. 首先,顯示驗證碼,其次是訪(fǎng)問(wèn)限制. 直接無(wú)法訪(fǎng)問(wèn). 根據請求,您得到的是訪(fǎng)問(wèn)次數太頻繁,這種提示,因此在開(kāi)發(fā)過(guò)程中最麻煩的不是代碼的編寫(xiě),而是測試. 編寫(xiě)后無(wú)法立即測試該代碼. 我相信大多數程序員都不會(huì )喜歡,我現在編寫(xiě)的程序每天執行3次. 這樣的頻率很好,并且因為它是由多個(gè)官方帳戶(hù)采集的,所以每個(gè)官方帳戶(hù)之間也要有間隔,否則它將同時(shí)訪(fǎng)問(wèn)十多個(gè)公眾,該帳戶(hù)上的數百篇文章也不切實(shí)際. 在插入句子時(shí),如何使每個(gè)正式帳戶(hù)都不敢玩,等待特定的時(shí)間段,執行下一個(gè),最后使用setInterval函數來(lái)解決它,

每80秒執行一個(gè)正式帳戶(hù),并將每個(gè)執行代碼寫(xiě)入hello. 泡沫距離有點(diǎn)遠. 我會(huì )收到的. 我們來(lái)談?wù)刢ron程序包,它是自動(dòng)執行的. npm官方網(wǎng)站上僅舉了一個(gè)例子,但是我的意思是桑拿浴可能有點(diǎn)壓抑. 我無(wú)法播放,但了解其用法. 然后我說(shuō),如果我聽(tīng)不懂怎么辦. 在Internet,百度和cron程序包的特定用法上進(jìn)行搜索. 有很多,所以我只是看了看,但是經(jīng)過(guò)仔細的分析卻并非如此. 都是廢話(huà),沒(méi)用. 一般在線(xiàn)使用中都有一個(gè)問(wèn)號,但是當我添加一個(gè)問(wèn)號時(shí),會(huì )出現錯誤. 是的,這都是胡說(shuō)八道. 最后,我在同學(xué)小組的一個(gè)前端技術(shù)討論小組中說(shuō)了這一點(diǎn). 真正熱情的小組朋友找到了我一個(gè)鏈接. 我進(jìn)去看看,嘗試了一下,沒(méi)關(guān)系,所以,非常感謝這位幫助我解決難題的同學(xué). 我將再次附上QQ群組號碼和鏈接,以幫助您在閱讀本文時(shí)學(xué)習. QQ組號: 435012561,鏈接: ,鏈接說(shuō)的沒(méi)問(wèn)題,至少可以用,這里我仍然有一個(gè)問(wèn)題,就是時(shí)區,我們以前用過(guò)一次,使用洛杉磯時(shí)間,但是這次顯然不起作用,我們需要用中文,但是我在北京嘗試了幾次,雖然不好,但是重慶可以,所以我用了重慶.
2. 我想在這里談?wù)摰氖菑牡刂窓讷@取參數的問(wèn)題. 我做的最后一個(gè)很好,但是我不知道該怎么做. 我從地址欄中得到的最后一個(gè)是數字,但是這個(gè)是它的. 它是一個(gè)字符串,并且mongodb中對字段的要求仍然非常嚴格,因此分頁(yè)功能困擾了我幾個(gè)小時(shí). 它是如何解決的?我在mongodb中添加了一個(gè)討論組. 我問(wèn)其中有什么問(wèn)題,并發(fā)布了屏幕截圖. 有一個(gè)熱心的網(wǎng)民說(shuō),傳入數據的格式顯然不正確. 我喚醒了做夢(mèng)者,我說(shuō)了是,然后我使用Number()函數來(lái)處理我得到的參數,以便字符串類(lèi)型的數量成為數字類(lèi)型的數量. 很好,因此在使用mongodb時(shí),必須注意存儲數據的格式.
3. Mongodb查詢(xún)數據語(yǔ)句的組織:

坦率地說(shuō),實(shí)際上是使用了限制和跳過(guò)這兩個(gè)函數,但是特定的格式可能是樂(lè )觀(guān)的,并且mine是可接受的參數,但是mongo的參數接受很容易直接編寫(xiě),不需要喜歡sql像$ {“”}一樣. 下面的排序功能說(shuō)明了排序方法. 這里,ctime字段設置為標準,-1表示逆序,1表示正序,
4. 在這段代碼編寫(xiě)中,我第一次使用了try catch方法進(jìn)行糾錯. 原來(lái)沒(méi)關(guān)系. 偶爾的錯誤可以正常地打印出來(lái),但是它不會(huì )影響代碼的整體執行,或者說(shuō)到下一次執行,整體感覺(jué)非常好,
對于特定用法,將您要執行的代碼放入try中,并在最后添加一行,并拋出Error();
然后傳入參數e以進(jìn)行捕獲,可以在catch中打印很多消息,我只打印了其中之一,例如e.message

5. anync包主要用于此編碼過(guò)程中,其中的ansyc.each循環(huán),ansyc.waterfall在執行完上述操作后可以執行以下操作,也可以在您之間的上下傳遞參數,這非常重要的是,因為在此編程中,每次獲取的內容都不同,每個(gè)代碼執行的條件也不同,也就是說(shuō),所需的參數也不同,即,下一個(gè)代碼執行可能需要上一個(gè)代碼. 執行,所以這個(gè)anync軟件包真的值得研究. 他的每種方法都不相同,有時(shí)可能會(huì )得到意想不到的結果.
6. 在mysql中,如果要實(shí)現這樣的效果,即如果它已經(jīng)存在于數據庫中,則忽略它,或者不重復存儲它;如果它不存在于數據庫中,則將其存儲在其中. 用replace替換插入數據的插入. 但是在mongodb中,應該沒(méi)有,或者我還沒(méi)有找到它. 我用這種方法解決了. 我定義了一個(gè)開(kāi)關(guān)來(lái)使該開(kāi)關(guān)為真. 在每次存儲之前,循環(huán)所有數據以查看是否有該數據,如果沒(méi)有,則讓開(kāi)關(guān)變?yōu)榧?,否則,繼續執行,即判斷此時(shí)開(kāi)關(guān)是真還是假,如果為true,則執行插入操作;如果為false,則將其忽略. 這樣可以達到類(lèi)似的效果,否則每次都會(huì )存儲大量重復數據,
7. 該集合的核心是我文件中的common.js. 首先,因為我們要采集,所以我們需要使用請求包. 采集后,我們需要以html格式處理數據,以便可以使用類(lèi)似于jquery的數據. 對于該操作,cheerio包已使用了很長(cháng)時(shí)間,然后在循環(huán)采集時(shí)將使用anync.each方法,因此將使用異步包,
7-1,
通過(guò)采集搜狗微信,我們必須分析搜狗微信的路徑. 每個(gè)官方帳戶(hù)頁(yè)面的路徑都是這樣
?。8%BF%99%E6%89%8D%E6%98%AF%E6%97%A5%E6%9C%AC&ie = utf8&_sug_ = n&_sug_type _ =
這是“這是日本”頁(yè)面的鏈接. 經(jīng)過(guò)分析,所有正式帳戶(hù)的鏈接僅在查詢(xún)后的參數上有所不同,但是查詢(xún)后的參數是什么,實(shí)際上,它是由encodeURIComponent()函數轉換的,之后是“這是日本”,因此相同. 要獲得該官方帳戶(hù),只需對官方帳戶(hù)的名稱(chēng)進(jìn)行編碼并將其動(dòng)態(tài)組合成一個(gè)鏈接,您就可以在訪(fǎng)問(wèn)時(shí)輸入每個(gè)鏈接,但是我只是要求此頁(yè)面此鏈接,

不是

此頁(yè)面,因此進(jìn)一步的處理是獲取當前頁(yè)面的第一內容的鏈接,即href

獲得此鏈接后,您會(huì )發(fā)現他具有自己的加密方法. 實(shí)際上非常簡(jiǎn)單,就是在鏈接中增加三個(gè)安培;更換這三個(gè)放大器;在帶有空鏈接的鏈接中,就好了,這是第一步,獲取每個(gè)官方帳戶(hù)的頁(yè)面鏈接,
7-2
獲取鏈接后,有必要訪(fǎng)問(wèn),即請求,請求每個(gè)地址,獲取每個(gè)地址的內容,但每個(gè)頁(yè)面上顯示的內容不在該頁(yè)面中,即在html結構中,隱藏在js中,因此我們需要通過(guò)常規匹配來(lái)獲取每篇文章的對象,然后循環(huán)訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)的對象以獲取有關(guān)該對象中每篇文章的一些信息,包括標題,縮略圖,摘要,URL,時(shí)間, 5個(gè)字段,但我使用的代碼很爛,而我當時(shí)使用的是
Object.Attribute.foreach(function(item,index){
})
這種可怕的方法,最后要做的就是編寫(xiě)一個(gè)循環(huán)以完全獲取每個(gè)對象,否則只能獲取第一個(gè)對象. 在這里,您應該使用async.each或async.foreach. 可以使用兩種方法中的每一種,并且它們都非常易于使用. 這樣,您將獲得上述每篇文章的基本新聞.
7-3,
第三階段是進(jìn)入每篇文章的詳細信息頁(yè)面,并獲取每篇文章的內容,喜歡的次數,作者,官方帳號,閱讀量和其他數據. 這里遇到的主要問(wèn)題是人們的內容直接位于js中,并且所有img標簽都有問(wèn)題. 它們以這種形式存儲在內容中,但是在這種情況下,由于標簽,html文檔(我不知道此類(lèi)img標簽)存在問(wèn)題,此類(lèi)圖像無(wú)法顯示在我們的網(wǎng)頁(yè)上,因此在這里我們需要進(jìn)行一些處理,替換全部與
python crawler_WeChat公共帳戶(hù)推送信息爬取示例
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 220 次瀏覽 ? 2020-08-07 04:12
更新時(shí)間: 2017年10月23日10:03:08轉載作者: ChaseChoi
下面的編輯器將為您帶來(lái)python crawler_WeChat公共帳戶(hù)推送信息爬取的示例. 編輯認為這還不錯,因此我將與您分享并提供參考. 讓我們跟隨編輯器看看
問(wèn)題描述
使用搜狗的微信搜索來(lái)獲取指定官方帳戶(hù)的最新推送,并將相應的網(wǎng)頁(yè)保存到本地.
注釋
搜狗微信獲取的地址是臨時(shí)鏈接,對時(shí)間敏感.
官方帳戶(hù)是一個(gè)動(dòng)態(tài)網(wǎng)頁(yè)(由JavaScript渲染),并且使用request.get()獲得的內容不收錄推送消息. 在這里,使用selenium + PhantomJS進(jìn)行處理
代碼
#! /usr/bin/env python3
from selenium import webdriver
from datetime import datetime
import bs4, requests
import os, time, sys
# 獲取公眾號鏈接
def getAccountURL(searchURL):
res = requests.get(searchURL)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "lxml")
# 選擇第一個(gè)鏈接
account = soup.select('a[uigs="account_name_0"]')
return account[0]['href']
# 獲取首篇文章的鏈接,如果有驗證碼返回None
def getArticleURL(accountURL):
browser = webdriver.PhantomJS("/Users/chasechoi/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs")
# 進(jìn)入公眾號
browser.get(accountURL)
# 獲取網(wǎng)頁(yè)信息
html = browser.page_source
accountSoup = bs4.BeautifulSoup(html, "lxml")
time.sleep(1)
contents = accountSoup.find_all(hrefs=True)
try:
partitialLink = contents[0]['hrefs']
firstLink = base + partitialLink
except IndexError:
firstLink = None
print('CAPTCHA!')
return firstLink
# 創(chuàng )建文件夾存儲html網(wǎng)頁(yè),以時(shí)間命名
def folderCreation():
path = os.path.join(os.getcwd(), datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
try:
os.makedirs(path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
print("folder not exist!")
return path
# 將html頁(yè)面寫(xiě)入本地
def writeToFile(path, account, title):
myfile = open("{}/{}_{}.html".format(path, account, title), 'wb')
myfile.write(res.content)
myfile.close()
base ='https://mp.weixin.qq.com'
accountList = ['央視新聞', '新浪新聞','鳳凰新聞','羊城晚報']
query = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query='
path = folderCreation()
for index, account in enumerate(accountList):
searchURL = query + account
accountURL = getAccountURL(searchURL)
time.sleep(10)
articleURL = getArticleURL(accountURL)
if articleURL != None:
print("#{}({}/{}): {}".format(account, index+1, len(accountList), accountURL))
# 讀取第一篇文章內容
res = requests.get(articleURL)
res.raise_for_status()
detailPage = bs4.BeautifulSoup(res.text, "lxml")
title = detailPage.title.text
print("標題: {}\n鏈接: {}\n".format(title, articleURL))
writeToFile(path, account, title)
else:
print('{} files successfully written to {}'.format(index, path))
sys.exit()
print('{} files successfully written to {}'.format(len(accountList), path))
參考輸出
端子輸出
查找器
分析
獲取鏈接
首先進(jìn)入搜狗的微信搜索頁(yè)面,在地址欄中提取鏈接的必需部分,將字符串連接到官方帳戶(hù)名,然后生成請求鏈接
對于靜態(tài)網(wǎng)頁(yè),請使用請求獲取html文件,然后使用BeautifulSoup選擇所需的內容
對于動(dòng)態(tài)網(wǎng)頁(yè),請使用selenium + PhantomJS獲取html文件,然后使用BeautifulSoup選擇所需的內容
遇到驗證碼(CAPTCHA)時(shí),輸出提示. 此版本的代碼實(shí)際上并未處理驗證碼,因此在運行程序之前需要手動(dòng)對其進(jìn)行訪(fǎng)問(wèn),以避免驗證碼.
文件寫(xiě)入
使用os.path.join()構造存儲路徑可以提高通用性. 例如,Windows路徑分隔符使用反斜杠(\),而OS X和Linux使用反斜杠(/). 該功能可以根據平臺自動(dòng)轉換.
open()使用b(二進(jìn)制模式)參數來(lái)提高通用性(適用于Windows)
使用datetime.now()獲取當前的命名時(shí)間,并通過(guò)strftime()格式化時(shí)間(函數名稱(chēng)中的f表示格式),
有關(guān)特定用途,請參閱下表(摘自“使用Python自動(dòng)完成鉆孔”)
上面的python爬網(wǎng)程序_WeChat公共帳戶(hù)推送信息爬網(wǎng)示例是編輯器共享的所有內容,希望為您提供參考,也希望可以支持腳本庫. 查看全部
python crawler_WeChat公共帳戶(hù)推送信息爬取示例
更新時(shí)間: 2017年10月23日10:03:08轉載作者: ChaseChoi
下面的編輯器將為您帶來(lái)python crawler_WeChat公共帳戶(hù)推送信息爬取的示例. 編輯認為這還不錯,因此我將與您分享并提供參考. 讓我們跟隨編輯器看看
問(wèn)題描述
使用搜狗的微信搜索來(lái)獲取指定官方帳戶(hù)的最新推送,并將相應的網(wǎng)頁(yè)保存到本地.
注釋
搜狗微信獲取的地址是臨時(shí)鏈接,對時(shí)間敏感.
官方帳戶(hù)是一個(gè)動(dòng)態(tài)網(wǎng)頁(yè)(由JavaScript渲染),并且使用request.get()獲得的內容不收錄推送消息. 在這里,使用selenium + PhantomJS進(jìn)行處理
代碼
#! /usr/bin/env python3
from selenium import webdriver
from datetime import datetime
import bs4, requests
import os, time, sys
# 獲取公眾號鏈接
def getAccountURL(searchURL):
res = requests.get(searchURL)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "lxml")
# 選擇第一個(gè)鏈接
account = soup.select('a[uigs="account_name_0"]')
return account[0]['href']
# 獲取首篇文章的鏈接,如果有驗證碼返回None
def getArticleURL(accountURL):
browser = webdriver.PhantomJS("/Users/chasechoi/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs")
# 進(jìn)入公眾號
browser.get(accountURL)
# 獲取網(wǎng)頁(yè)信息
html = browser.page_source
accountSoup = bs4.BeautifulSoup(html, "lxml")
time.sleep(1)
contents = accountSoup.find_all(hrefs=True)
try:
partitialLink = contents[0]['hrefs']
firstLink = base + partitialLink
except IndexError:
firstLink = None
print('CAPTCHA!')
return firstLink
# 創(chuàng )建文件夾存儲html網(wǎng)頁(yè),以時(shí)間命名
def folderCreation():
path = os.path.join(os.getcwd(), datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
try:
os.makedirs(path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
print("folder not exist!")
return path
# 將html頁(yè)面寫(xiě)入本地
def writeToFile(path, account, title):
myfile = open("{}/{}_{}.html".format(path, account, title), 'wb')
myfile.write(res.content)
myfile.close()
base ='https://mp.weixin.qq.com'
accountList = ['央視新聞', '新浪新聞','鳳凰新聞','羊城晚報']
query = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query='
path = folderCreation()
for index, account in enumerate(accountList):
searchURL = query + account
accountURL = getAccountURL(searchURL)
time.sleep(10)
articleURL = getArticleURL(accountURL)
if articleURL != None:
print("#{}({}/{}): {}".format(account, index+1, len(accountList), accountURL))
# 讀取第一篇文章內容
res = requests.get(articleURL)
res.raise_for_status()
detailPage = bs4.BeautifulSoup(res.text, "lxml")
title = detailPage.title.text
print("標題: {}\n鏈接: {}\n".format(title, articleURL))
writeToFile(path, account, title)
else:
print('{} files successfully written to {}'.format(index, path))
sys.exit()
print('{} files successfully written to {}'.format(len(accountList), path))
參考輸出
端子輸出

查找器

分析
獲取鏈接
首先進(jìn)入搜狗的微信搜索頁(yè)面,在地址欄中提取鏈接的必需部分,將字符串連接到官方帳戶(hù)名,然后生成請求鏈接
對于靜態(tài)網(wǎng)頁(yè),請使用請求獲取html文件,然后使用BeautifulSoup選擇所需的內容
對于動(dòng)態(tài)網(wǎng)頁(yè),請使用selenium + PhantomJS獲取html文件,然后使用BeautifulSoup選擇所需的內容
遇到驗證碼(CAPTCHA)時(shí),輸出提示. 此版本的代碼實(shí)際上并未處理驗證碼,因此在運行程序之前需要手動(dòng)對其進(jìn)行訪(fǎng)問(wèn),以避免驗證碼.
文件寫(xiě)入
使用os.path.join()構造存儲路徑可以提高通用性. 例如,Windows路徑分隔符使用反斜杠(\),而OS X和Linux使用反斜杠(/). 該功能可以根據平臺自動(dòng)轉換.
open()使用b(二進(jìn)制模式)參數來(lái)提高通用性(適用于Windows)
使用datetime.now()獲取當前的命名時(shí)間,并通過(guò)strftime()格式化時(shí)間(函數名稱(chēng)中的f表示格式),
有關(guān)特定用途,請參閱下表(摘自“使用Python自動(dòng)完成鉆孔”)

上面的python爬網(wǎng)程序_WeChat公共帳戶(hù)推送信息爬網(wǎng)示例是編輯器共享的所有內容,希望為您提供參考,也希望可以支持腳本庫.
[分享] 366tool在線(xiàn)解析微信新型域名防阻塞API接口的實(shí)現原理
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 161 次瀏覽 ? 2020-08-07 01:24
隨著(zhù)智能手機的普及,許多人現在可以直接在手機上閱讀小說(shuō). 但是,并非所有人都會(huì )下載該新穎的應用程序,即使其他人幫助下載該應用程序,這種類(lèi)型的用戶(hù)組也不會(huì )使用它. 那么我們如何解決此類(lèi)用戶(hù)的需求?
許多人目前正在實(shí)施的一種方法是直接共享微信中轉發(fā)小說(shuō)的鏈接. 用戶(hù)可以單擊以閱讀小說(shuō). 當然,這些小說(shuō)不是純粹的福利小說(shuō),還會(huì )增加一些廣告. 鏈接,為官方帳戶(hù)添加一些QR碼等. 但是令企業(yè)感到困擾的是,一旦添加了這些內容,微信就會(huì )迅速阻止和阻止域名. 目前,我們將使用新型域名的防阻塞技術(shù).
在我們共享366TooL開(kāi)發(fā)的幾種防密封解決方案之前. 由于產(chǎn)品不同和操作方法的差異,僅一種防密封解決方案無(wú)法滿(mǎn)足所有客戶(hù)的需求,并且微信規則在不斷變化. ,該程序還需要不斷升級和改進(jìn),以確保防密封程序的有效性和持久性. 今天,我將與您分享微信小說(shuō)的反封鎖解決方案. 新平臺的域名如何在微信中生存更長(cháng)的時(shí)間?
在我們分享小說(shuō)的反阻止解決方案之前,讓我們首先了解為什么微信很容易阻止小說(shuō)的推廣域名. 普遍的原因總結為兩點(diǎn):
第一點(diǎn)是,微信機器人會(huì )自動(dòng)檢測小說(shuō)中的內容. 通常,帶有廣告內容或敏感詞匯的小說(shuō)肯定會(huì )被屏蔽(最新小說(shuō)是什么?)
第二個(gè)原因是同事或其他人的報告在驗證后被微信屏蔽.
分析原因之后,讓我們看一下新穎的使用場(chǎng)景.
通用小說(shuō)平臺由官方帳戶(hù)平臺承載,然后通過(guò)共享綁定到官方帳戶(hù)的商業(yè)域名進(jìn)行推廣. 要閱讀小說(shuō),用戶(hù)必須授權官方帳戶(hù)登錄才能正常閱讀并充值.
這就是重點(diǎn). 新型域名的反封鎖實(shí)際上就是對官方賬號業(yè)務(wù)域名的反封鎖,普通的官方賬號平臺的業(yè)務(wù)域名只能被替換三次. 似乎特別重要的是保護官方帳戶(hù)的企業(yè)域名.
那么我們如何才能有效地保護新穎域名免遭攔截?在這里,我需要解釋. 很多朋友問(wèn)我,使用反封鎖后我的域名是否不會(huì )被封鎖?這不是那么容易. 防阻塞只能延遲或更好地保護域名. 無(wú)法保證永遠不會(huì )有問(wèn)題. 原因很簡(jiǎn)單. 微信技術(shù)團隊不是素食主義者.
366TooL的最新新穎防密封解決方案可以說(shuō)已經(jīng)超過(guò)了市場(chǎng)上所有的防密封解決方案,因為該平臺已經(jīng)通過(guò)了大量的數據測試,反饋,優(yōu)化和比較,最終確定了一個(gè)單獨的防密封解決方案平臺的系統. 查看全部
為什么要使用新穎的域名防阻塞功能?
隨著(zhù)智能手機的普及,許多人現在可以直接在手機上閱讀小說(shuō). 但是,并非所有人都會(huì )下載該新穎的應用程序,即使其他人幫助下載該應用程序,這種類(lèi)型的用戶(hù)組也不會(huì )使用它. 那么我們如何解決此類(lèi)用戶(hù)的需求?
許多人目前正在實(shí)施的一種方法是直接共享微信中轉發(fā)小說(shuō)的鏈接. 用戶(hù)可以單擊以閱讀小說(shuō). 當然,這些小說(shuō)不是純粹的福利小說(shuō),還會(huì )增加一些廣告. 鏈接,為官方帳戶(hù)添加一些QR碼等. 但是令企業(yè)感到困擾的是,一旦添加了這些內容,微信就會(huì )迅速阻止和阻止域名. 目前,我們將使用新型域名的防阻塞技術(shù).
在我們共享366TooL開(kāi)發(fā)的幾種防密封解決方案之前. 由于產(chǎn)品不同和操作方法的差異,僅一種防密封解決方案無(wú)法滿(mǎn)足所有客戶(hù)的需求,并且微信規則在不斷變化. ,該程序還需要不斷升級和改進(jìn),以確保防密封程序的有效性和持久性. 今天,我將與您分享微信小說(shuō)的反封鎖解決方案. 新平臺的域名如何在微信中生存更長(cháng)的時(shí)間?
在我們分享小說(shuō)的反阻止解決方案之前,讓我們首先了解為什么微信很容易阻止小說(shuō)的推廣域名. 普遍的原因總結為兩點(diǎn):
第一點(diǎn)是,微信機器人會(huì )自動(dòng)檢測小說(shuō)中的內容. 通常,帶有廣告內容或敏感詞匯的小說(shuō)肯定會(huì )被屏蔽(最新小說(shuō)是什么?)
第二個(gè)原因是同事或其他人的報告在驗證后被微信屏蔽.
分析原因之后,讓我們看一下新穎的使用場(chǎng)景.
通用小說(shuō)平臺由官方帳戶(hù)平臺承載,然后通過(guò)共享綁定到官方帳戶(hù)的商業(yè)域名進(jìn)行推廣. 要閱讀小說(shuō),用戶(hù)必須授權官方帳戶(hù)登錄才能正常閱讀并充值.
這就是重點(diǎn). 新型域名的反封鎖實(shí)際上就是對官方賬號業(yè)務(wù)域名的反封鎖,普通的官方賬號平臺的業(yè)務(wù)域名只能被替換三次. 似乎特別重要的是保護官方帳戶(hù)的企業(yè)域名.
那么我們如何才能有效地保護新穎域名免遭攔截?在這里,我需要解釋. 很多朋友問(wèn)我,使用反封鎖后我的域名是否不會(huì )被封鎖?這不是那么容易. 防阻塞只能延遲或更好地保護域名. 無(wú)法保證永遠不會(huì )有問(wèn)題. 原因很簡(jiǎn)單. 微信技術(shù)團隊不是素食主義者.
366TooL的最新新穎防密封解決方案可以說(shuō)已經(jīng)超過(guò)了市場(chǎng)上所有的防密封解決方案,因為該平臺已經(jīng)通過(guò)了大量的數據測試,反饋,優(yōu)化和比較,最終確定了一個(gè)單獨的防密封解決方案平臺的系統.
php微信官方帳戶(hù)開(kāi)發(fā)的簡(jiǎn)短答案
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 178 次瀏覽 ? 2020-08-07 01:23
更新: 2018年10月20日15:20:30轉載作者: dq_095
本文主要詳細介紹了針對php微信公眾號開(kāi)發(fā)的簡(jiǎn)短回答問(wèn)題,具有一定的參考價(jià)值,有興趣的朋友可以參考
本文示例共享php微信公眾號開(kāi)發(fā)的簡(jiǎn)短答案問(wèn)題的特定代碼,以供您參考. 具體內容如下
簡(jiǎn)短回答問(wèn)題
核心代碼如下:
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$type = $postObj->MsgType;
$customevent = $postObj->Event;
$latitude = $postObj->Location_X;
$longitude = $postObj->Location_Y;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
%s
0
";
include("coon.php");
if($keyword=="8")
{
$array=array("第5頁(yè)第1個(gè)字"=>"王","第8頁(yè)第1個(gè)字"=>"李","第30頁(yè)第1個(gè)字"=>"周");
$a=array_rand($array,1);
$b=$array[$a];
$contentStr=$a."是什么?";
$sql="INSERT INTO `menu2` (`id` ,`user` ,`sec`,`answer`)VALUES (NULL , '{$fromUsername}', '8','{$b}')";
mysql_query($sql);
}
else
{
$sql="SELECT * FROM `menu2` where `user`= '{$fromUsername}'";
$query=mysql_query($sql);
$rm=mysql_fetch_array($query);
$sec=$rm['sec'];
$answer=$rm['answer'];
if($sec=="8")
{
if($keyword==$answer)
{
$contentStr="你的答案是正確的,視頻代碼下載地址為....";
}
else
{
$contentStr="你的答案不正確,請購買(mǎi)《微信公眾平臺搭建與開(kāi)發(fā)揭秘》";
}
}
else
{
$contentStr="請先輸入8";
}
}
$msgType="text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
}
coon.php: 用于連接到數據庫的代碼如下:
<p> 查看全部
php微信官方帳戶(hù)開(kāi)發(fā)的簡(jiǎn)短答案
更新: 2018年10月20日15:20:30轉載作者: dq_095
本文主要詳細介紹了針對php微信公眾號開(kāi)發(fā)的簡(jiǎn)短回答問(wèn)題,具有一定的參考價(jià)值,有興趣的朋友可以參考
本文示例共享php微信公眾號開(kāi)發(fā)的簡(jiǎn)短答案問(wèn)題的特定代碼,以供您參考. 具體內容如下
簡(jiǎn)短回答問(wèn)題


核心代碼如下:
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$type = $postObj->MsgType;
$customevent = $postObj->Event;
$latitude = $postObj->Location_X;
$longitude = $postObj->Location_Y;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
%s
0
";
include("coon.php");
if($keyword=="8")
{
$array=array("第5頁(yè)第1個(gè)字"=>"王","第8頁(yè)第1個(gè)字"=>"李","第30頁(yè)第1個(gè)字"=>"周");
$a=array_rand($array,1);
$b=$array[$a];
$contentStr=$a."是什么?";
$sql="INSERT INTO `menu2` (`id` ,`user` ,`sec`,`answer`)VALUES (NULL , '{$fromUsername}', '8','{$b}')";
mysql_query($sql);
}
else
{
$sql="SELECT * FROM `menu2` where `user`= '{$fromUsername}'";
$query=mysql_query($sql);
$rm=mysql_fetch_array($query);
$sec=$rm['sec'];
$answer=$rm['answer'];
if($sec=="8")
{
if($keyword==$answer)
{
$contentStr="你的答案是正確的,視頻代碼下載地址為....";
}
else
{
$contentStr="你的答案不正確,請購買(mǎi)《微信公眾平臺搭建與開(kāi)發(fā)揭秘》";
}
}
else
{
$contentStr="請先輸入8";
}
}
$msgType="text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
}
coon.php: 用于連接到數據庫的代碼如下:
<p>
使用搜狗微信入口制作微信文章采集器API
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 464 次瀏覽 ? 2020-08-06 20:05
搜狗微信門(mén)戶(hù)比其他門(mén)戶(hù)友好得多. 應該是微信搜索引擎和搜狗有合作,所以搜狗可以進(jìn)入微信搜索. 搜狗微信有兩種類(lèi)型,一種是通過(guò)關(guān)鍵詞搜索文章,另一種是通過(guò)關(guān)鍵詞搜索官方賬號,搜索到的微信賬號最多只能獲得十筆最新新聞推送(這意味著(zhù)指定的公眾不能通過(guò)這種方法抓取歷史新聞). 該方法還有一些應用場(chǎng)景,例如獲取大量有關(guān)某個(gè)關(guān)鍵字的文章,例如執行計劃任務(wù),或者以一定間隔抓取某個(gè)微信官方帳戶(hù)的最新十次推送以獲取其最新推送. 它比網(wǎng)上的微信要好得多. 搜狗微信更新也是實(shí)時(shí)且直接相關(guān)的.
我對appium自動(dòng)化和Xposed框架了解不多. 鴉片類(lèi)似于硒. 為了在移動(dòng)終端上進(jìn)行自動(dòng)化測試,您可以模擬點(diǎn)擊. Xposed框架有很多工作要做. Xposed可以執行一些其他功能,而無(wú)需修改apk. 爬蟲(chóng)自然是可能的. 此外,它還可以自動(dòng)抓取紅包,自動(dòng)回復機器人以及修改微步數等騷動(dòng)操作.
我寫(xiě)爬蟲(chóng)游戲已有一段時(shí)間了. 我個(gè)人認為,除了具有防爬網(wǎng)和爬網(wǎng)的效率外,還有另一個(gè)領(lǐng)域很難實(shí)現. 履帶的穩定性和堅固性需要考慮到許多異常情況,并且是合理有效的. 在這一點(diǎn)上,我認為我仍然需要向主要的爬蟲(chóng)學(xué)習. (我覺(jué)得我一直在談?wù)摵芏鄸|西,還沒(méi)有開(kāi)始做我的身體(orz),請不要對那個(gè)覺(jué)得我很冗長(cháng)的大個(gè)子生氣. )
使用搜狗微信編寫(xiě)一個(gè)爬蟲(chóng)界面,代碼非常簡(jiǎn)單,只有兩百行代碼. (我在這里不得不抱怨. 我在python中寫(xiě)太多了. 我總是有一種幻想,我很尷尬,編程很簡(jiǎn)單. 幾行代碼可以實(shí)現非常強大的功能. 這時(shí),我需要編寫(xiě)CPP并冷靜下來(lái),讓自己知道什么是真正的編程. )
以下記錄了編寫(xiě)此采集器界面腳本的過(guò)程:
1. 頁(yè)面請求分析(以官方帳戶(hù)搜索為例):
您可以看到第一個(gè)http請求數據包是我們想要的結果,請檢查其查詢(xún)字符串,如下所示:
它看起來(lái)并不簡(jiǎn)單. 我們獲得以下信息:
請求網(wǎng)址是
請求類(lèi)型為Get
請求參數如上所示
發(fā)現將請求參數tyepe更改為2是為了獲得關(guān)鍵字搜索文章的結果
這相對簡(jiǎn)單
2. 模擬頁(yè)面請求:
我們直接使用url,請求參數params和Google Chrome的用戶(hù)代理請求,發(fā)現我們可以成功獲取所需頁(yè)面的源代碼,然后在下方獲得第一個(gè)官方帳戶(hù)搜索結果. 是的(這意味著(zhù)需要正確指定官方帳戶(hù)名稱(chēng),如果過(guò)于模糊,則有可能獲得類(lèi)似的官方帳戶(hù)結果).
3. 分析頁(yè)面:
首先確定爬行思路,第一步是獲取微信公眾號鏈接,然后通過(guò)微信公眾號鏈接獲取最新的十項推送相關(guān)信息,包括標題,日期,作者,內容摘要,內容鏈接(實(shí)際上,我們發(fā)現,通過(guò)微信推送鏈接,我們可以輕松獲取推送的主要內容,但不包括喜歡和閱讀的次數. 這些數據只能在微信移動(dòng)終端上查看. 如果有一次機會(huì ),它將在下次記錄. 在您的手機微信上下載爬蟲(chóng)的過(guò)程.
因此第一步,我們將獲得官方帳戶(hù)鏈接:
這里我們可以直接使用正則表達式提?。ㄟ@種簡(jiǎn)單方法不需要xpath和bs4. 依賴(lài)標準庫和第三方庫仍然有所不同. )
?。ê鼙副凰∽柚?,請更改一個(gè). )
第二步是根據微信官方賬號鏈接獲取最近十條推送消息:
?。ㄎ抑粚?xiě)過(guò)一篇關(guān)于orz的文章,我會(huì )繼續努力. )
ctlr U查看網(wǎng)頁(yè)的源代碼,并發(fā)現原創(chuàng )信息位于js變量中.
易于處理,繼續常規提取,將json格式的字符串轉換為python中的字典,有兩種方法,一種是使用json.loads方法,第二種是使用內置的eval方法. 兩種方法之間存在一些差異,例如單引號和雙引號. json格式使用雙引號,而python詞典中通常使用單引號.
好的,已經(jīng)獲得了原創(chuàng )的推送信息數據,但是我們不需要很多信息,因此我們可以將其刪除. 值得一提的是,datetime的值是一個(gè)時(shí)間戳,我們需要將其轉換為直觀(guān)的Time表達式.
至此,微信公眾號上的抓取工具已基本解決. 接下來(lái),需要將其封裝為一個(gè)類(lèi). 代碼的主要部分如下.
此外,我還寫(xiě)了關(guān)于關(guān)鍵字搜索文章,AccountAPI,ArticleAPI的爬網(wǎng)程序接口,父類(lèi)是AP類(lèi),并且該API類(lèi)具有query_url,params,header,_get_response,_get_datetime以及其他用于由AccountAPI和ArticleAPI共享.
代碼位于github倉庫中,如果您有興趣,可以看看
放置兩個(gè)屏幕截圖以供使用
?。ˋrticleAPI)
?。ˋccountAPI)
結論:
諸如此類(lèi)的原創(chuàng )爬蟲(chóng)將其稱(chēng)為api,我有點(diǎn)大膽. 這只是一個(gè)小麻煩,很難做到優(yōu)雅,您需要向大兄弟學(xué)習. 查看全部
移動(dòng)客戶(hù)端使用提琴手或查爾斯等其他捕獲工具捕獲數據包,這是一種相對主流的方法(我覺(jué)得是orz),是一種更有效的方法,可以快速捕獲微信官方帳戶(hù)信息和歷史新聞. 該方法也有缺點(diǎn): cookie很快過(guò)期,大約需要半天. 還可以專(zhuān)門(mén)獲取某些官方帳戶(hù)的歷史信息. 通過(guò)模擬微信登錄自動(dòng)獲取cookie似乎非常困難. 我很無(wú)聊,無(wú)法實(shí)現. 看來(lái)微信登錄是TCP協(xié)議?
搜狗微信門(mén)戶(hù)比其他門(mén)戶(hù)友好得多. 應該是微信搜索引擎和搜狗有合作,所以搜狗可以進(jìn)入微信搜索. 搜狗微信有兩種類(lèi)型,一種是通過(guò)關(guān)鍵詞搜索文章,另一種是通過(guò)關(guān)鍵詞搜索官方賬號,搜索到的微信賬號最多只能獲得十筆最新新聞推送(這意味著(zhù)指定的公眾不能通過(guò)這種方法抓取歷史新聞). 該方法還有一些應用場(chǎng)景,例如獲取大量有關(guān)某個(gè)關(guān)鍵字的文章,例如執行計劃任務(wù),或者以一定間隔抓取某個(gè)微信官方帳戶(hù)的最新十次推送以獲取其最新推送. 它比網(wǎng)上的微信要好得多. 搜狗微信更新也是實(shí)時(shí)且直接相關(guān)的.
我對appium自動(dòng)化和Xposed框架了解不多. 鴉片類(lèi)似于硒. 為了在移動(dòng)終端上進(jìn)行自動(dòng)化測試,您可以模擬點(diǎn)擊. Xposed框架有很多工作要做. Xposed可以執行一些其他功能,而無(wú)需修改apk. 爬蟲(chóng)自然是可能的. 此外,它還可以自動(dòng)抓取紅包,自動(dòng)回復機器人以及修改微步數等騷動(dòng)操作.
我寫(xiě)爬蟲(chóng)游戲已有一段時(shí)間了. 我個(gè)人認為,除了具有防爬網(wǎng)和爬網(wǎng)的效率外,還有另一個(gè)領(lǐng)域很難實(shí)現. 履帶的穩定性和堅固性需要考慮到許多異常情況,并且是合理有效的. 在這一點(diǎn)上,我認為我仍然需要向主要的爬蟲(chóng)學(xué)習. (我覺(jué)得我一直在談?wù)摵芏鄸|西,還沒(méi)有開(kāi)始做我的身體(orz),請不要對那個(gè)覺(jué)得我很冗長(cháng)的大個(gè)子生氣. )
使用搜狗微信編寫(xiě)一個(gè)爬蟲(chóng)界面,代碼非常簡(jiǎn)單,只有兩百行代碼. (我在這里不得不抱怨. 我在python中寫(xiě)太多了. 我總是有一種幻想,我很尷尬,編程很簡(jiǎn)單. 幾行代碼可以實(shí)現非常強大的功能. 這時(shí),我需要編寫(xiě)CPP并冷靜下來(lái),讓自己知道什么是真正的編程. )
以下記錄了編寫(xiě)此采集器界面腳本的過(guò)程:
1. 頁(yè)面請求分析(以官方帳戶(hù)搜索為例):
您可以看到第一個(gè)http請求數據包是我們想要的結果,請檢查其查詢(xún)字符串,如下所示:
它看起來(lái)并不簡(jiǎn)單. 我們獲得以下信息:
請求網(wǎng)址是
請求類(lèi)型為Get
請求參數如上所示
發(fā)現將請求參數tyepe更改為2是為了獲得關(guān)鍵字搜索文章的結果
這相對簡(jiǎn)單
2. 模擬頁(yè)面請求:
我們直接使用url,請求參數params和Google Chrome的用戶(hù)代理請求,發(fā)現我們可以成功獲取所需頁(yè)面的源代碼,然后在下方獲得第一個(gè)官方帳戶(hù)搜索結果. 是的(這意味著(zhù)需要正確指定官方帳戶(hù)名稱(chēng),如果過(guò)于模糊,則有可能獲得類(lèi)似的官方帳戶(hù)結果).
3. 分析頁(yè)面:
首先確定爬行思路,第一步是獲取微信公眾號鏈接,然后通過(guò)微信公眾號鏈接獲取最新的十項推送相關(guān)信息,包括標題,日期,作者,內容摘要,內容鏈接(實(shí)際上,我們發(fā)現,通過(guò)微信推送鏈接,我們可以輕松獲取推送的主要內容,但不包括喜歡和閱讀的次數. 這些數據只能在微信移動(dòng)終端上查看. 如果有一次機會(huì ),它將在下次記錄. 在您的手機微信上下載爬蟲(chóng)的過(guò)程.
因此第一步,我們將獲得官方帳戶(hù)鏈接:
這里我們可以直接使用正則表達式提?。ㄟ@種簡(jiǎn)單方法不需要xpath和bs4. 依賴(lài)標準庫和第三方庫仍然有所不同. )
?。ê鼙副凰∽柚?,請更改一個(gè). )
第二步是根據微信官方賬號鏈接獲取最近十條推送消息:
?。ㄎ抑粚?xiě)過(guò)一篇關(guān)于orz的文章,我會(huì )繼續努力. )
ctlr U查看網(wǎng)頁(yè)的源代碼,并發(fā)現原創(chuàng )信息位于js變量中.
易于處理,繼續常規提取,將json格式的字符串轉換為python中的字典,有兩種方法,一種是使用json.loads方法,第二種是使用內置的eval方法. 兩種方法之間存在一些差異,例如單引號和雙引號. json格式使用雙引號,而python詞典中通常使用單引號.
好的,已經(jīng)獲得了原創(chuàng )的推送信息數據,但是我們不需要很多信息,因此我們可以將其刪除. 值得一提的是,datetime的值是一個(gè)時(shí)間戳,我們需要將其轉換為直觀(guān)的Time表達式.
至此,微信公眾號上的抓取工具已基本解決. 接下來(lái),需要將其封裝為一個(gè)類(lèi). 代碼的主要部分如下.
此外,我還寫(xiě)了關(guān)于關(guān)鍵字搜索文章,AccountAPI,ArticleAPI的爬網(wǎng)程序接口,父類(lèi)是AP類(lèi),并且該API類(lèi)具有query_url,params,header,_get_response,_get_datetime以及其他用于由AccountAPI和ArticleAPI共享.
代碼位于github倉庫中,如果您有興趣,可以看看
放置兩個(gè)屏幕截圖以供使用
?。ˋrticleAPI)
?。ˋccountAPI)
結論:
諸如此類(lèi)的原創(chuàng )爬蟲(chóng)將其稱(chēng)為api,我有點(diǎn)大膽. 這只是一個(gè)小麻煩,很難做到優(yōu)雅,您需要向大兄弟學(xué)習.
微信公眾號文章檢索方法摘要(第1部分)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 299 次瀏覽 ? 2020-08-06 18:25
爬蟲(chóng)
我經(jīng)常有一些需要幫助的人,他們在搜尋公共帳戶(hù)文章方面需要幫助. 這次我將總結各種方法.
目前,有三種主要的微信公眾號抓取方法:
通過(guò)在微信官方平臺上引用文章界面來(lái)爬網(wǎng)第三方官方帳戶(hù)文章聚合網(wǎng)站,并分析微信應用程序的界面以通過(guò)微信公眾平臺訪(fǎng)問(wèn)官方帳戶(hù)文章,并通過(guò)第三方平臺進(jìn)行爬網(wǎng),派對官方帳戶(hù)文章匯總網(wǎng)站
微信公眾號文章未提供外部搜索功能. 直到2013年,在微信對搜狗進(jìn)行投資之后,搜狗搜索才訪(fǎng)問(wèn)了微信官方賬戶(hù)數據. 從那時(shí)起,您可以使用搜狗搜索瀏覽或查詢(xún)相關(guān)的官方帳戶(hù)和文章.
域名是:
搜狗微信
您可以直接搜索官方帳戶(hù)或文章的關(guān)鍵字,一些流行的官方帳戶(hù)會(huì )及時(shí)更新,幾乎與微信同步.
官方帳戶(hù)搜索
因此,您可以使用搜狗微信界面對一些流行的官方賬戶(hù)進(jìn)行爬網(wǎng),但是卻無(wú)法搜索到某些利基官方賬戶(hù),并且搜狗的反爬網(wǎng)機制更頻繁地更新,并且獲取數據的界面變化更快,通常會(huì )在兩三個(gè)月內進(jìn)行調整,這使得履帶易于懸掛. 建議使用硒進(jìn)行爬網(wǎng). 此外,搜狗還對每個(gè)IP都有訪(fǎng)問(wèn)限制. 頻率過(guò)高的IP的訪(fǎng)問(wèn)將被阻止24小時(shí),您需要購買(mǎi)一個(gè)IP池來(lái)處理它.
還有一些其他公共帳戶(hù)文章聚合網(wǎng)站(例如門(mén)戶(hù))未及時(shí)更新或未包括在內. 畢竟,搜狗的兒子不好. 通過(guò)微信公眾平臺引用文章界面
此界面是相對隱藏的,不能匿名訪(fǎng)問(wèn). 必須有一個(gè)官方帳戶(hù). 最好注冊一個(gè)新的官方帳戶(hù),以免被阻止.
讓我們從特定步驟開(kāi)始: 首先登錄您的微信官方帳戶(hù),在您輸入的主頁(yè)上選擇“創(chuàng )建群發(fā)”,然后單擊自行創(chuàng )建的圖形,然后在文章編輯工具欄中找到超鏈接,如下所示: 如下所示:
單擊超鏈接
單擊超鏈接按鈕,將彈出一個(gè)對話(huà)框,選擇鏈接輸入法以查找文章,如下所示:
查找文章
您可以在此處輸入官方帳戶(hù)的名稱(chēng),然后按Enter鍵,微信將返回匹配的官方帳戶(hù)列表,如下所示:
搜索官方帳戶(hù)
然后單擊您要獲取的官方帳戶(hù),然后將顯示特定文章的列表. 它已經(jīng)按時(shí)間倒序排列,而最新的文章是第一篇. 如下圖所示:
文章列表
微信的傳呼機制很奇怪. 每個(gè)官方帳戶(hù)的每個(gè)頁(yè)面上顯示的數據項數量是不同的. 分頁(yè)爬網(wǎng)時(shí)需要處理它.
通過(guò)chrome分析網(wǎng)絡(luò )請求的數據,我們基本獲得了所需的數據,文章鏈接,封面,發(fā)行日期,字幕等,如下所示:
網(wǎng)絡(luò )請求數據
好的,此爬網(wǎng)方法的原理已經(jīng)完成,讓我們開(kāi)始實(shí)際的操作.
由于微信公眾平臺的登錄驗證比較嚴格,在輸入密碼后,手機必須掃描密碼進(jìn)行確認登錄,因此最好使用硒進(jìn)行自動(dòng)化. 我不會(huì )列出特定微信界面的分析過(guò)程,而是直接發(fā)布代碼:
import re
import time
import random
import traceback
import requests
from selenium import webdriver
class Spider(object):
'''
微信公眾號文章爬蟲(chóng)
'''
def __init__(self):
# 微信公眾號賬號
self.account = '286394973@qq.com'
# 微信公眾號密碼
self.pwd = 'lei4649861'
def create_driver(self):
'''
初始化 webdriver
'''
options = webdriver.ChromeOptions()
# 禁用gpu加速,防止出一些未知bug
options.add_argument('--disable-gpu')
# 這里我用 chromedriver 作為 webdriver
# 可以去 http://chromedriver.chromium.org/downloads 下載你的chrome對應版本
self.driver = webdriver.Chrome(executable_path='./chromedriver', chrome_options=options)
# 設置一個(gè)隱性等待 5s
self.driver.implicitly_wait(5)
def log(self, msg):
'''
格式化打印
'''
print('------ %s ------' % msg)
def login(self):
'''
登錄拿 cookies
'''
try:
self.create_driver()
# 訪(fǎng)問(wèn)微信公眾平臺
self.driver.get('https://mp.weixin.qq.com/')
# 等待網(wǎng)頁(yè)加載完畢
time.sleep(3)
# 輸入賬號
self.driver.find_element_by_xpath("./*//input[@name='account']").clear()
self.driver.find_element_by_xpath("./*//input[@name='account']").send_keys(self.account)
# 輸入密碼
self.driver.find_element_by_xpath("./*//input[@name='password']").clear()
self.driver.find_element_by_xpath("./*//input[@name='password']").send_keys(self.pwd)
# 點(diǎn)擊登錄
self.driver.find_elements_by_class_name('btn_login')[0].click()
self.log("請拿手機掃碼二維碼登錄公眾號")
# 等待手機掃描
time.sleep(10)
self.log("登錄成功")
# 獲取cookies 然后保存到變量上,后面要用
self.cookies = dict([[x['name'], x['value']] for x in self.driver.get_cookies()])
except Exception as e:
traceback.print_exc()
finally:
# 退出 chorme
self.driver.quit()
def get_article(self, query=''):
try:
url = 'https://mp.weixin.qq.com'
# 設置headers
headers = {
"HOST": "mp.weixin.qq.com",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"
}
# 登錄之后的微信公眾號首頁(yè)url變化為:https://mp.weixin.qq.com/cgi-b ... 51598,
# 從這里獲取token信息
response = requests.get(url=url, cookies=self.cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
time.sleep(2)
self.log('正在查詢(xún)[ %s ]相關(guān)公眾號' % query)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
# 搜索微信公眾號接口需要傳入的參數,
# 有三個(gè)變量:微信公眾號token、隨機數random、搜索的微信公眾號名字
params = {
'action': 'search_biz',
'token': token,
'random': random.random(),
'query': query,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0',
'count': '5'
}
# 打開(kāi)搜索微信公眾號接口地址,需要傳入相關(guān)參數信息如:cookies、params、headers
response = requests.get(search_url, cookies=self.cookies, headers=headers, params=params)
time.sleep(2)
# 取搜索結果中的第一個(gè)公眾號
lists = response.json().get('list')[0]
# 獲取這個(gè)公眾號的fakeid,后面爬取公眾號文章需要此字段
fakeid = lists.get('fakeid')
nickname = lists.get('nickname')
# 微信公眾號文章接口地址
search_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
# 搜索文章需要傳入幾個(gè)參數:登錄的公眾號token、要爬取文章的公眾號fakeid、隨機數random
params = {
'action': 'list_ex',
'token': token,
'random': random.random(),
'fakeid': fakeid,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0', # 不同頁(yè),此參數變化,變化規則為每頁(yè)加5
'count': '5',
'query': '',
'type': '9'
}
self.log('正在查詢(xún)公眾號[ %s ]相關(guān)文章' % nickname)
# 打開(kāi)搜索的微信公眾號文章列表頁(yè)
response = requests.get(search_url, cookies=self.cookies, headers=headers, params=params)
time.sleep(2)
for per in response.json().get('app_msg_list', []):
print('title ---> %s' % per.get('title'))
print('link ---> %s' % per.get('link'))
# print('cover ---> %s' % per.get('cover'))
except Exception as e:
traceback.print_exc()
if __name__ == '__main__':
spider = Spider()
spider.login()
spider.get_article('python')
該代碼僅用于學(xué)習,不適用于分頁(yè)查詢(xún).
根據網(wǎng)民的說(shuō)法,該接口也有訪(fǎng)問(wèn)頻率限制. 一天幾百次不是問(wèn)題. 如果訪(fǎng)問(wèn)速度太快或次數太多,它將被阻止24小時(shí). 查看全部

爬蟲(chóng)
我經(jīng)常有一些需要幫助的人,他們在搜尋公共帳戶(hù)文章方面需要幫助. 這次我將總結各種方法.
目前,有三種主要的微信公眾號抓取方法:
通過(guò)在微信官方平臺上引用文章界面來(lái)爬網(wǎng)第三方官方帳戶(hù)文章聚合網(wǎng)站,并分析微信應用程序的界面以通過(guò)微信公眾平臺訪(fǎng)問(wèn)官方帳戶(hù)文章,并通過(guò)第三方平臺進(jìn)行爬網(wǎng),派對官方帳戶(hù)文章匯總網(wǎng)站
微信公眾號文章未提供外部搜索功能. 直到2013年,在微信對搜狗進(jìn)行投資之后,搜狗搜索才訪(fǎng)問(wèn)了微信官方賬戶(hù)數據. 從那時(shí)起,您可以使用搜狗搜索瀏覽或查詢(xún)相關(guān)的官方帳戶(hù)和文章.
域名是:

搜狗微信
您可以直接搜索官方帳戶(hù)或文章的關(guān)鍵字,一些流行的官方帳戶(hù)會(huì )及時(shí)更新,幾乎與微信同步.

官方帳戶(hù)搜索
因此,您可以使用搜狗微信界面對一些流行的官方賬戶(hù)進(jìn)行爬網(wǎng),但是卻無(wú)法搜索到某些利基官方賬戶(hù),并且搜狗的反爬網(wǎng)機制更頻繁地更新,并且獲取數據的界面變化更快,通常會(huì )在兩三個(gè)月內進(jìn)行調整,這使得履帶易于懸掛. 建議使用硒進(jìn)行爬網(wǎng). 此外,搜狗還對每個(gè)IP都有訪(fǎng)問(wèn)限制. 頻率過(guò)高的IP的訪(fǎng)問(wèn)將被阻止24小時(shí),您需要購買(mǎi)一個(gè)IP池來(lái)處理它.
還有一些其他公共帳戶(hù)文章聚合網(wǎng)站(例如門(mén)戶(hù))未及時(shí)更新或未包括在內. 畢竟,搜狗的兒子不好. 通過(guò)微信公眾平臺引用文章界面
此界面是相對隱藏的,不能匿名訪(fǎng)問(wèn). 必須有一個(gè)官方帳戶(hù). 最好注冊一個(gè)新的官方帳戶(hù),以免被阻止.
讓我們從特定步驟開(kāi)始: 首先登錄您的微信官方帳戶(hù),在您輸入的主頁(yè)上選擇“創(chuàng )建群發(fā)”,然后單擊自行創(chuàng )建的圖形,然后在文章編輯工具欄中找到超鏈接,如下所示: 如下所示:

單擊超鏈接
單擊超鏈接按鈕,將彈出一個(gè)對話(huà)框,選擇鏈接輸入法以查找文章,如下所示:

查找文章
您可以在此處輸入官方帳戶(hù)的名稱(chēng),然后按Enter鍵,微信將返回匹配的官方帳戶(hù)列表,如下所示:

搜索官方帳戶(hù)
然后單擊您要獲取的官方帳戶(hù),然后將顯示特定文章的列表. 它已經(jīng)按時(shí)間倒序排列,而最新的文章是第一篇. 如下圖所示:

文章列表
微信的傳呼機制很奇怪. 每個(gè)官方帳戶(hù)的每個(gè)頁(yè)面上顯示的數據項數量是不同的. 分頁(yè)爬網(wǎng)時(shí)需要處理它.
通過(guò)chrome分析網(wǎng)絡(luò )請求的數據,我們基本獲得了所需的數據,文章鏈接,封面,發(fā)行日期,字幕等,如下所示:

網(wǎng)絡(luò )請求數據
好的,此爬網(wǎng)方法的原理已經(jīng)完成,讓我們開(kāi)始實(shí)際的操作.
由于微信公眾平臺的登錄驗證比較嚴格,在輸入密碼后,手機必須掃描密碼進(jìn)行確認登錄,因此最好使用硒進(jìn)行自動(dòng)化. 我不會(huì )列出特定微信界面的分析過(guò)程,而是直接發(fā)布代碼:
import re
import time
import random
import traceback
import requests
from selenium import webdriver
class Spider(object):
'''
微信公眾號文章爬蟲(chóng)
'''
def __init__(self):
# 微信公眾號賬號
self.account = '286394973@qq.com'
# 微信公眾號密碼
self.pwd = 'lei4649861'
def create_driver(self):
'''
初始化 webdriver
'''
options = webdriver.ChromeOptions()
# 禁用gpu加速,防止出一些未知bug
options.add_argument('--disable-gpu')
# 這里我用 chromedriver 作為 webdriver
# 可以去 http://chromedriver.chromium.org/downloads 下載你的chrome對應版本
self.driver = webdriver.Chrome(executable_path='./chromedriver', chrome_options=options)
# 設置一個(gè)隱性等待 5s
self.driver.implicitly_wait(5)
def log(self, msg):
'''
格式化打印
'''
print('------ %s ------' % msg)
def login(self):
'''
登錄拿 cookies
'''
try:
self.create_driver()
# 訪(fǎng)問(wèn)微信公眾平臺
self.driver.get('https://mp.weixin.qq.com/')
# 等待網(wǎng)頁(yè)加載完畢
time.sleep(3)
# 輸入賬號
self.driver.find_element_by_xpath("./*//input[@name='account']").clear()
self.driver.find_element_by_xpath("./*//input[@name='account']").send_keys(self.account)
# 輸入密碼
self.driver.find_element_by_xpath("./*//input[@name='password']").clear()
self.driver.find_element_by_xpath("./*//input[@name='password']").send_keys(self.pwd)
# 點(diǎn)擊登錄
self.driver.find_elements_by_class_name('btn_login')[0].click()
self.log("請拿手機掃碼二維碼登錄公眾號")
# 等待手機掃描
time.sleep(10)
self.log("登錄成功")
# 獲取cookies 然后保存到變量上,后面要用
self.cookies = dict([[x['name'], x['value']] for x in self.driver.get_cookies()])
except Exception as e:
traceback.print_exc()
finally:
# 退出 chorme
self.driver.quit()
def get_article(self, query=''):
try:
url = 'https://mp.weixin.qq.com'
# 設置headers
headers = {
"HOST": "mp.weixin.qq.com",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"
}
# 登錄之后的微信公眾號首頁(yè)url變化為:https://mp.weixin.qq.com/cgi-b ... 51598,
# 從這里獲取token信息
response = requests.get(url=url, cookies=self.cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
time.sleep(2)
self.log('正在查詢(xún)[ %s ]相關(guān)公眾號' % query)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
# 搜索微信公眾號接口需要傳入的參數,
# 有三個(gè)變量:微信公眾號token、隨機數random、搜索的微信公眾號名字
params = {
'action': 'search_biz',
'token': token,
'random': random.random(),
'query': query,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0',
'count': '5'
}
# 打開(kāi)搜索微信公眾號接口地址,需要傳入相關(guān)參數信息如:cookies、params、headers
response = requests.get(search_url, cookies=self.cookies, headers=headers, params=params)
time.sleep(2)
# 取搜索結果中的第一個(gè)公眾號
lists = response.json().get('list')[0]
# 獲取這個(gè)公眾號的fakeid,后面爬取公眾號文章需要此字段
fakeid = lists.get('fakeid')
nickname = lists.get('nickname')
# 微信公眾號文章接口地址
search_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
# 搜索文章需要傳入幾個(gè)參數:登錄的公眾號token、要爬取文章的公眾號fakeid、隨機數random
params = {
'action': 'list_ex',
'token': token,
'random': random.random(),
'fakeid': fakeid,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0', # 不同頁(yè),此參數變化,變化規則為每頁(yè)加5
'count': '5',
'query': '',
'type': '9'
}
self.log('正在查詢(xún)公眾號[ %s ]相關(guān)文章' % nickname)
# 打開(kāi)搜索的微信公眾號文章列表頁(yè)
response = requests.get(search_url, cookies=self.cookies, headers=headers, params=params)
time.sleep(2)
for per in response.json().get('app_msg_list', []):
print('title ---> %s' % per.get('title'))
print('link ---> %s' % per.get('link'))
# print('cover ---> %s' % per.get('cover'))
except Exception as e:
traceback.print_exc()
if __name__ == '__main__':
spider = Spider()
spider.login()
spider.get_article('python')
該代碼僅用于學(xué)習,不適用于分頁(yè)查詢(xún).
根據網(wǎng)民的說(shuō)法,該接口也有訪(fǎng)問(wèn)頻率限制. 一天幾百次不是問(wèn)題. 如果訪(fǎng)問(wèn)速度太快或次數太多,它將被阻止24小時(shí).
微信公眾號內容采集教程. docx29頁(yè)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 365 次瀏覽 ? 2020-08-06 14:14
打開(kāi)網(wǎng)頁(yè)后,默認顯示“熱門(mén)”文章. 向下滾動(dòng)頁(yè)面,找到并單擊“加載更多內容”按鈕,在操作提示框中選擇“更多操作”,微信公眾號文章正文采集步驟3,選擇“循環(huán)點(diǎn)擊單個(gè)元素”,創(chuàng )建頁(yè)面翻轉循環(huán)微信公眾號文章文本采集步驟4由于此網(wǎng)頁(yè)涉及Ajax技術(shù),因此我們需要設置一些高級選項. 選擇“單擊元素”步驟,打開(kāi)“高級選項”,選中“ Ajax加載數據”,將時(shí)間設置為“ 2秒”,微信公眾號文章正文采集步驟5注意: AJAX是延遲加載和異步更新的腳本通過(guò)在后臺與服務(wù)器進(jìn)行少量數據交換的技術(shù),可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下更新網(wǎng)頁(yè)的特定部分. 性能特點(diǎn): 當您單擊網(wǎng)頁(yè)中的一個(gè)選項時(shí),大多數網(wǎng)站的URL不會(huì )更改. b. 該網(wǎng)頁(yè)未完全加載,僅部分加載了數據并進(jìn)行了更改. 驗證方法: 單擊該操作后,URL輸入欄將不會(huì )在瀏覽器的加載狀態(tài)或轉彎狀態(tài)下顯示. 觀(guān)察該網(wǎng)頁(yè),我們發(fā)現單擊“加載更多內容” 5次后,頁(yè)面將加載到底部,總共顯示100條文章. 因此,我們將整個(gè)“循環(huán)旋轉”步驟設置為執行5次. 選擇“循環(huán)翻頁(yè)”步驟,打開(kāi)“高級選項”,打開(kāi)“滿(mǎn)足以下條件時(shí)退出循環(huán)”,將循環(huán)數設置為“ 5”,單擊“確定”,微信公眾號文章正文采集步驟6第3步: 創(chuàng )建一個(gè)列表循環(huán)并提取數據HYPERLINK“ / article / javascript :;”移動(dòng)鼠標,然后選擇頁(yè)面上的第一個(gè)文章鏈接.
系統將自動(dòng)識別相似的鏈接. 在操作提示框中,選擇“全選”微信公眾號文章正文采集步驟7,選擇“單擊每個(gè)鏈接”,微信公眾號文章正文采集步驟8,系統將自動(dòng)進(jìn)入文章明細頁(yè)面. 單擊要采集的字段(在此處單擊文章標題),然后在操作提示框中選擇“采集此元素的文本”. 文章發(fā)布時(shí)間和文章來(lái)源字段的采集方法與微信公眾號文章正文采集步驟9相同. 接下來(lái),將采集文章正文. 首先點(diǎn)擊文章正文的第一段,系統會(huì )自動(dòng)識別頁(yè)面中的相似元素,選擇“全選”微信公眾號文章正文采集步驟105),可以看到所有正文段落均被選中并轉綠色. 選擇“采集以下元素文本”微信公眾號文章正文采集步驟11注意: 在字段表中,您可以自定義字段以修改微信公眾號文章正文采集步驟126)上述操作之后,正文將全部采集的(默認是文本的每個(gè)段落都是一個(gè)單元格). 一般來(lái)說(shuō),我們希望將采集的文本合并到同一單元格中. 單擊“自定義數據字段”按鈕,選擇“自定義數據合并方法”,選中“多次提取并將同一字段合并到一行,即,追加到同一字段,例如文本頁(yè)面合并”,然后單擊“確定”,微信公眾號文章正文采集步驟13,“自定義數據字段”按鈕選擇“自定義數據合并方法”,微信公眾號文章正文采集步驟14,微信公眾號文章正文采集步驟如圖15所示. : 修改Xpath1)選擇整個(gè)“循環(huán)步驟”,打開(kāi)“高級選項”,可以看到由彩云生成的默認值是固定元素列表,該列表定位了前20條微信公眾號文章正文采集步驟162的鏈接)在Firefox中打開(kāi)采集網(wǎng)頁(yè)并觀(guān)察源代碼.
我們發(fā)現通過(guò)此Xpath: // DIV [@ class ='main-left'] / DIV [3] / UL / LI / DIV [2] / H3 [1] / A,在頁(yè)面All中需要微信公眾號文章正文采集步驟中有100條微信公眾號文章,在步驟173)將修改后的Xpath復制并粘貼到優(yōu)采云中顯示的位置,然后單擊“確定”,微信公眾號文章正文采集步驟18步驟5 : 我們將繼續觀(guān)察流程圖結構的修改. 5次單擊“加載更多內容”后,此頁(yè)面將加載所有100條文章. 因此,我們的配置規則的思想是首先建立一個(gè)翻頁(yè)周期,加載全部100條文章,然后創(chuàng )建一個(gè)周期列表并提取數據1)選擇整個(gè)``循環(huán)''步驟并將其拖出``循環(huán)''頁(yè)面翻頁(yè)”步驟. 如果您不執行此操作,將會(huì )有很多重復的數據. 微信公眾號文章正文采集步驟19拖動(dòng)完成后,如下圖所示,微信公眾號文章正文采集步驟20步驟6: 數據采集和導出1)單擊左上角單擊角上的“保存”,然后點(diǎn)擊“開(kāi)始采集”,選擇“開(kāi)始本地采集”,微信公眾號文本采集步驟21. 采集完成后,彈出提示,選擇“導出數據”,選擇“適當的導出方式”,將采集的數據導出到微信公眾號文章正文采集步驟223)這里我們選擇excel作為導出格式. 數據導出后,如下圖所示,微信公眾號文章正文采集步驟23如上圖所示,部分文章的正文未采集.
這是因為系統自動(dòng)生成了文章正文的循環(huán)列表的Xpath: // [@ id =“ js_content”] / P,因此無(wú)法找到本文的正文. 將Xpath修改為: // [@@ =“ =” js_content“] // P,所有文章正文都可以位于微信公眾號文章正文采集步驟23微信公眾號文章正文采集步驟24說(shuō)明: 本文的方法是僅適合采集搜狗微信文章正文內容. 無(wú)法在文本中采集圖片. 如果需要采集圖片,則需要在此過(guò)程中添加判斷條件. 相關(guān)集合教程: 京東商品信息集合豆瓣電影簡(jiǎn)短評論集合58全市信息集合優(yōu)采云-一個(gè)由70萬(wàn)用戶(hù)選擇的網(wǎng)絡(luò )數據采集器. 1.操作簡(jiǎn)單,任何人都可以使用: 不需要技術(shù)背景,可以通過(guò)瀏覽Internet進(jìn)行采集. 完全可視化該過(guò)程,單擊鼠標以完成操作,您可以在2分鐘內快速上手. 2.強大的功能,可以在任何網(wǎng)站上采集: 單擊,登錄,翻頁(yè),識別驗證碼,瀑布流,Ajax腳本異步加載數據頁(yè),所有這些都可以通過(guò)簡(jiǎn)單的設置進(jìn)行采集. 3.云采集,也可以關(guān)閉. 配置采集任務(wù)后,可以將其關(guān)閉,并可以在云中執行該任務(wù). 龐大的云采集集群不間斷運行24 * 7,因此無(wú)需擔心IP被阻塞和網(wǎng)絡(luò )中斷. 4.免費功能+增值服務(wù),可以按需選擇. 免費版具有所有功能,可以滿(mǎn)足用戶(hù)的基本采集需求. 同時(shí),建立了一些增值服務(wù)(例如私有云)以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求. 查看全部
優(yōu)采云·云采集服務(wù)平臺微信公眾號文章文本采集教程很多時(shí)候,我們需要采集網(wǎng)頁(yè)文章的文本. 本文以搜狗微信文章為例,介紹利用優(yōu)采云采集網(wǎng)頁(yè)正文的方法. 文章的正文通常包括文本和圖片. 本文僅演示了在正文中采集文本的方法,圖像采集將在另一個(gè)教程中進(jìn)行討論. 本文將采集以下字段: 文章標題,時(shí)間,來(lái)源和正文(正文中的所有文本都將合并到excel單元格中,并且將使用“自定義數據合并方法”功能,請注意). 以下是“自定義數據合并方法”的詳細教程,您可以首先學(xué)習: /tutorialdetail-1/zdyhb_7.html集合網(wǎng)站: /使用功能點(diǎn): 分頁(yè)列表信息集合“ HYPERLINK” /tutorial/fylb-70.aspx ?t = 1“ /tutorial/fylb-70.aspx?t=1Xpath HYPERLINK” / search?query = XPath“ / search?query = XPathAJAX點(diǎn)擊并翻頁(yè)HYPERLINK” /tutorialdetail-1/ajaxdjfy_7.html“ / tutorialdetail- 1 / ajaxdjfy_7.html步驟1: 創(chuàng )建采集任務(wù)1)進(jìn)入主界面,選擇“自定義模式”微信公眾號文章正文采集步驟12)復制要采集的URL并粘貼到網(wǎng)站輸入框中,單擊“保存”. URL”微信公眾號2文本采集步驟2 HYPERLINK” / article / javascript :;”步驟2: 創(chuàng )建翻頁(yè)循環(huán)在頁(yè)面的右上角,打開(kāi)“ Process”以顯示“ Process Designer”和“ Customize Current Operation”的兩個(gè)部分.
打開(kāi)網(wǎng)頁(yè)后,默認顯示“熱門(mén)”文章. 向下滾動(dòng)頁(yè)面,找到并單擊“加載更多內容”按鈕,在操作提示框中選擇“更多操作”,微信公眾號文章正文采集步驟3,選擇“循環(huán)點(diǎn)擊單個(gè)元素”,創(chuàng )建頁(yè)面翻轉循環(huán)微信公眾號文章文本采集步驟4由于此網(wǎng)頁(yè)涉及Ajax技術(shù),因此我們需要設置一些高級選項. 選擇“單擊元素”步驟,打開(kāi)“高級選項”,選中“ Ajax加載數據”,將時(shí)間設置為“ 2秒”,微信公眾號文章正文采集步驟5注意: AJAX是延遲加載和異步更新的腳本通過(guò)在后臺與服務(wù)器進(jìn)行少量數據交換的技術(shù),可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下更新網(wǎng)頁(yè)的特定部分. 性能特點(diǎn): 當您單擊網(wǎng)頁(yè)中的一個(gè)選項時(shí),大多數網(wǎng)站的URL不會(huì )更改. b. 該網(wǎng)頁(yè)未完全加載,僅部分加載了數據并進(jìn)行了更改. 驗證方法: 單擊該操作后,URL輸入欄將不會(huì )在瀏覽器的加載狀態(tài)或轉彎狀態(tài)下顯示. 觀(guān)察該網(wǎng)頁(yè),我們發(fā)現單擊“加載更多內容” 5次后,頁(yè)面將加載到底部,總共顯示100條文章. 因此,我們將整個(gè)“循環(huán)旋轉”步驟設置為執行5次. 選擇“循環(huán)翻頁(yè)”步驟,打開(kāi)“高級選項”,打開(kāi)“滿(mǎn)足以下條件時(shí)退出循環(huán)”,將循環(huán)數設置為“ 5”,單擊“確定”,微信公眾號文章正文采集步驟6第3步: 創(chuàng )建一個(gè)列表循環(huán)并提取數據HYPERLINK“ / article / javascript :;”移動(dòng)鼠標,然后選擇頁(yè)面上的第一個(gè)文章鏈接.
系統將自動(dòng)識別相似的鏈接. 在操作提示框中,選擇“全選”微信公眾號文章正文采集步驟7,選擇“單擊每個(gè)鏈接”,微信公眾號文章正文采集步驟8,系統將自動(dòng)進(jìn)入文章明細頁(yè)面. 單擊要采集的字段(在此處單擊文章標題),然后在操作提示框中選擇“采集此元素的文本”. 文章發(fā)布時(shí)間和文章來(lái)源字段的采集方法與微信公眾號文章正文采集步驟9相同. 接下來(lái),將采集文章正文. 首先點(diǎn)擊文章正文的第一段,系統會(huì )自動(dòng)識別頁(yè)面中的相似元素,選擇“全選”微信公眾號文章正文采集步驟105),可以看到所有正文段落均被選中并轉綠色. 選擇“采集以下元素文本”微信公眾號文章正文采集步驟11注意: 在字段表中,您可以自定義字段以修改微信公眾號文章正文采集步驟126)上述操作之后,正文將全部采集的(默認是文本的每個(gè)段落都是一個(gè)單元格). 一般來(lái)說(shuō),我們希望將采集的文本合并到同一單元格中. 單擊“自定義數據字段”按鈕,選擇“自定義數據合并方法”,選中“多次提取并將同一字段合并到一行,即,追加到同一字段,例如文本頁(yè)面合并”,然后單擊“確定”,微信公眾號文章正文采集步驟13,“自定義數據字段”按鈕選擇“自定義數據合并方法”,微信公眾號文章正文采集步驟14,微信公眾號文章正文采集步驟如圖15所示. : 修改Xpath1)選擇整個(gè)“循環(huán)步驟”,打開(kāi)“高級選項”,可以看到由彩云生成的默認值是固定元素列表,該列表定位了前20條微信公眾號文章正文采集步驟162的鏈接)在Firefox中打開(kāi)采集網(wǎng)頁(yè)并觀(guān)察源代碼.
我們發(fā)現通過(guò)此Xpath: // DIV [@ class ='main-left'] / DIV [3] / UL / LI / DIV [2] / H3 [1] / A,在頁(yè)面All中需要微信公眾號文章正文采集步驟中有100條微信公眾號文章,在步驟173)將修改后的Xpath復制并粘貼到優(yōu)采云中顯示的位置,然后單擊“確定”,微信公眾號文章正文采集步驟18步驟5 : 我們將繼續觀(guān)察流程圖結構的修改. 5次單擊“加載更多內容”后,此頁(yè)面將加載所有100條文章. 因此,我們的配置規則的思想是首先建立一個(gè)翻頁(yè)周期,加載全部100條文章,然后創(chuàng )建一個(gè)周期列表并提取數據1)選擇整個(gè)``循環(huán)''步驟并將其拖出``循環(huán)''頁(yè)面翻頁(yè)”步驟. 如果您不執行此操作,將會(huì )有很多重復的數據. 微信公眾號文章正文采集步驟19拖動(dòng)完成后,如下圖所示,微信公眾號文章正文采集步驟20步驟6: 數據采集和導出1)單擊左上角單擊角上的“保存”,然后點(diǎn)擊“開(kāi)始采集”,選擇“開(kāi)始本地采集”,微信公眾號文本采集步驟21. 采集完成后,彈出提示,選擇“導出數據”,選擇“適當的導出方式”,將采集的數據導出到微信公眾號文章正文采集步驟223)這里我們選擇excel作為導出格式. 數據導出后,如下圖所示,微信公眾號文章正文采集步驟23如上圖所示,部分文章的正文未采集.
這是因為系統自動(dòng)生成了文章正文的循環(huán)列表的Xpath: // [@ id =“ js_content”] / P,因此無(wú)法找到本文的正文. 將Xpath修改為: // [@@ =“ =” js_content“] // P,所有文章正文都可以位于微信公眾號文章正文采集步驟23微信公眾號文章正文采集步驟24說(shuō)明: 本文的方法是僅適合采集搜狗微信文章正文內容. 無(wú)法在文本中采集圖片. 如果需要采集圖片,則需要在此過(guò)程中添加判斷條件. 相關(guān)集合教程: 京東商品信息集合豆瓣電影簡(jiǎn)短評論集合58全市信息集合優(yōu)采云-一個(gè)由70萬(wàn)用戶(hù)選擇的網(wǎng)絡(luò )數據采集器. 1.操作簡(jiǎn)單,任何人都可以使用: 不需要技術(shù)背景,可以通過(guò)瀏覽Internet進(jìn)行采集. 完全可視化該過(guò)程,單擊鼠標以完成操作,您可以在2分鐘內快速上手. 2.強大的功能,可以在任何網(wǎng)站上采集: 單擊,登錄,翻頁(yè),識別驗證碼,瀑布流,Ajax腳本異步加載數據頁(yè),所有這些都可以通過(guò)簡(jiǎn)單的設置進(jìn)行采集. 3.云采集,也可以關(guān)閉. 配置采集任務(wù)后,可以將其關(guān)閉,并可以在云中執行該任務(wù). 龐大的云采集集群不間斷運行24 * 7,因此無(wú)需擔心IP被阻塞和網(wǎng)絡(luò )中斷. 4.免費功能+增值服務(wù),可以按需選擇. 免費版具有所有功能,可以滿(mǎn)足用戶(hù)的基本采集需求. 同時(shí),建立了一些增值服務(wù)(例如私有云)以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求.
歡迎老朋友開(kāi)發(fā)php微信公眾號
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 261 次瀏覽 ? 2020-08-06 06:06
更新: 2018年10月20日09:38:44轉載作者: dq_095
本文主要詳細介紹php微信公眾號的開(kāi)發(fā),歡迎老朋友,它具有一定的參考價(jià)值,有興趣的朋友可以參考
本文中的示例共享了由php微信公眾號開(kāi)發(fā)的歡迎老朋友的特定代碼,供您參考. 具體內容如下
數據庫簡(jiǎn)介
關(guān)鍵代碼如下:
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
0
";
if(!empty( $keyword ))
{
//用 戶(hù) 名 : $user
//密 碼 : $pwd
//主庫域名 : $host
//從庫域名 : SAE_MYSQL_HOST_S
//端 口 : $port
//數據庫名 : $dbname
$dbname = "app_dq095";
$host = "w.rdc.sae.sina.com.cn";
$port = "3306";
$user = "4k514n103z";
$pwd = "2402314li2j1i5im1xy2xizj5y332w2x41k2z203";
/*接著(zhù)調用mysql_connect()連接服務(wù)器*/
// 連主庫
$db = mysql_connect($host,$user,$pwd);
if(!$db){
die("Connect Server Failed: " . mysql_error($db));
}
/*連接成功后立即調用mysql_select_db()選中需要連接的數據庫*/
if (!mysql_select_db($dbname)) {
die("Select Database Failed: " . mysql_error($db));
}
mysql_query("set names utf-8",$db);
/*至此連接已完全建立,就可對當前數據庫進(jìn)行相應的操作了*/
/*?。?!注意,無(wú)法再通過(guò)本次連接調用mysql_select_db來(lái)切換到其它數據庫了?。?!*/
/* 需要再連接其它數據庫,請再使用mysql_connect+mysql_select_db啟動(dòng)另一個(gè)連接*/
/**
* 接下來(lái)就可以使用其它標準php mysql函數操作進(jìn)行數據庫操作
*/
$sql="SELECT * FROM `welcome`WHERE `user`= '" . iconv("UTF-8","GBK",$fromUsername) . "'";
$query=mysql_query($sql);
$rs=mysql_fetch_array($query);
$b= $rs['user'];
$c=iconv("GBK","UTF-8",$b);
$msgType = "text";
if ($c==$fromUsername)
{
$contentStr = "歡迎老朋友!";
}else{
$sql="INSERT INTO `welcome`(`id`,`user`) VALUES (NULL,'{$fromUsername}')";
mysql_query($sql);
$contentStr = "歡迎新朋友!";
}
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
mysql_close($db);
}else{
echo "Input something...";
}
index.php代碼如下 查看全部
歡迎老朋友開(kāi)發(fā)php微信公眾號
更新: 2018年10月20日09:38:44轉載作者: dq_095
本文主要詳細介紹php微信公眾號的開(kāi)發(fā),歡迎老朋友,它具有一定的參考價(jià)值,有興趣的朋友可以參考
本文中的示例共享了由php微信公眾號開(kāi)發(fā)的歡迎老朋友的特定代碼,供您參考. 具體內容如下
數據庫簡(jiǎn)介

關(guān)鍵代碼如下:
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
0
";
if(!empty( $keyword ))
{
//用 戶(hù) 名 : $user
//密 碼 : $pwd
//主庫域名 : $host
//從庫域名 : SAE_MYSQL_HOST_S
//端 口 : $port
//數據庫名 : $dbname
$dbname = "app_dq095";
$host = "w.rdc.sae.sina.com.cn";
$port = "3306";
$user = "4k514n103z";
$pwd = "2402314li2j1i5im1xy2xizj5y332w2x41k2z203";
/*接著(zhù)調用mysql_connect()連接服務(wù)器*/
// 連主庫
$db = mysql_connect($host,$user,$pwd);
if(!$db){
die("Connect Server Failed: " . mysql_error($db));
}
/*連接成功后立即調用mysql_select_db()選中需要連接的數據庫*/
if (!mysql_select_db($dbname)) {
die("Select Database Failed: " . mysql_error($db));
}
mysql_query("set names utf-8",$db);
/*至此連接已完全建立,就可對當前數據庫進(jìn)行相應的操作了*/
/*?。?!注意,無(wú)法再通過(guò)本次連接調用mysql_select_db來(lái)切換到其它數據庫了?。?!*/
/* 需要再連接其它數據庫,請再使用mysql_connect+mysql_select_db啟動(dòng)另一個(gè)連接*/
/**
* 接下來(lái)就可以使用其它標準php mysql函數操作進(jìn)行數據庫操作
*/
$sql="SELECT * FROM `welcome`WHERE `user`= '" . iconv("UTF-8","GBK",$fromUsername) . "'";
$query=mysql_query($sql);
$rs=mysql_fetch_array($query);
$b= $rs['user'];
$c=iconv("GBK","UTF-8",$b);
$msgType = "text";
if ($c==$fromUsername)
{
$contentStr = "歡迎老朋友!";
}else{
$sql="INSERT INTO `welcome`(`id`,`user`) VALUES (NULL,'{$fromUsername}')";
mysql_query($sql);
$contentStr = "歡迎新朋友!";
}
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
mysql_close($db);
}else{
echo "Input something...";
}
index.php代碼如下
微信公眾號文章搜尋器系統
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 257 次瀏覽 ? 2020-08-06 04:04
1. 我做了兩個(gè)履帶. 第一次我害怕Phoenix.com時(shí),沒(méi)有任何限制,我可以隨意爬網(wǎng),所以我放松了對自動(dòng)代碼執行模塊的警惕. 我認為這很簡(jiǎn)單,但事實(shí)并非如此. 我已經(jīng)為這個(gè)問(wèn)題困擾了好幾天,幾乎是四天. 由于搜狗的限制,獲得相同IP的次數越來(lái)越多. 首先,顯示驗證碼,其次是訪(fǎng)問(wèn)限制. 直接無(wú)法訪(fǎng)問(wèn). 根據請求,您得到的是訪(fǎng)問(wèn)次數太頻繁,這種提示,因此在開(kāi)發(fā)過(guò)程中最麻煩的不是代碼的編寫(xiě),而是測試. 編寫(xiě)后無(wú)法立即測試該代碼. 我相信大多數程序員都不會(huì )喜歡,我現在編寫(xiě)的程序每天執行3次. 這樣的頻率很好,并且因為它是由多個(gè)正式帳戶(hù)采集的,所以每個(gè)正式帳戶(hù)之間也要有一個(gè)間隔,否則它將同時(shí)訪(fǎng)問(wèn)十多個(gè)公眾,該帳戶(hù)上的數百篇文章也是不現實(shí)的. 在插入句子時(shí),如何使每個(gè)正式帳戶(hù)都不敢玩,等待特定的時(shí)間段,執行下一個(gè),最后使用setInterval函數來(lái)解決它,
每80秒執行一個(gè)正式帳戶(hù),并將每個(gè)執行代碼寫(xiě)入hello. 泡沫距離有點(diǎn)遠. 我會(huì )收到的. 我們來(lái)談?wù)刢ron程序包,它是自動(dòng)執行的. npm官方網(wǎng)站上僅舉了一個(gè)例子,但是我的意思是桑拿浴可能有點(diǎn)壓抑. 我無(wú)法播放,但了解其用法. 然后我說(shuō),如果我聽(tīng)不懂怎么辦. 在Internet,百度和cron程序包的特定用法上進(jìn)行搜索. 有很多,所以我只是看了看,但是經(jīng)過(guò)仔細的分析卻并非如此. 都是廢話(huà),沒(méi)用. 一般在線(xiàn)使用中都有一個(gè)問(wèn)號,但是當我添加一個(gè)問(wèn)號時(shí),會(huì )出現錯誤. 是的,這都是胡說(shuō)八道. 最后,我在同學(xué)小組的一個(gè)前端技術(shù)討論小組中說(shuō)了這一點(diǎn). 真正熱情的小組朋友找到了我一個(gè)鏈接. 我進(jìn)去看看,嘗試了一下,沒(méi)關(guān)系,所以,非常感謝這位幫助我解決難題的同學(xué). 我將再次附上QQ群組號碼和鏈接,以幫助您在閱讀本文時(shí)學(xué)習. QQ組號: 435012561,鏈接: ,鏈接說(shuō)的沒(méi)問(wèn)題,至少可以用,這里我仍然有一個(gè)問(wèn)題,就是時(shí)區,我們以前用過(guò)一次,使用洛杉磯時(shí)間,但是這次顯然不起作用,我們需要用中文,但是我在北京嘗試了幾次,雖然不好,但是重慶可以,所以我用了重慶.
2. 我想在這里談?wù)摰氖菑牡刂窓讷@取參數的問(wèn)題. 我做的最后一個(gè)很好,但是我不知道該怎么做. 我從地址欄中得到的最后一個(gè)是數字,但是這個(gè)是它的. 它是一個(gè)字符串,并且mongodb中對字段的要求仍然非常嚴格,因此分頁(yè)功能困擾了我幾個(gè)小時(shí). 它是如何解決的?我在mongodb中添加了一個(gè)討論組. 我問(wèn)其中有什么問(wèn)題,并發(fā)布了屏幕截圖. 有一個(gè)熱心的網(wǎng)民說(shuō),傳入數據的格式顯然不正確. 我喚醒了做夢(mèng)者,我說(shuō)了是,然后我使用Number()函數來(lái)處理我得到的參數,以便字符串類(lèi)型的數量成為數字類(lèi)型的數量. 很好,因此在使用mongodb時(shí),必須注意存儲數據的格式.
3. Mongodb查詢(xún)數據語(yǔ)句的組織:
坦率地說(shuō),實(shí)際上是使用了限制和跳過(guò)這兩個(gè)函數,但是特定的格式可能是樂(lè )觀(guān)的,并且mine是可接受的參數,但是mongo的參數接受很容易直接編寫(xiě),不需要喜歡sql像$ {“”}一樣. 下面的排序功能說(shuō)明了排序方法. 這里,ctime字段設置為標準,-1表示逆序,1表示正序,
4. 在這段代碼編寫(xiě)中,我第一次使用了try catch方法進(jìn)行糾錯. 原來(lái)沒(méi)關(guān)系. 偶爾的錯誤可以正常地打印出來(lái),但是它不會(huì )影響代碼的整體執行,或者說(shuō)到下一次執行,整體感覺(jué)非常好,
對于特定用法,將您要執行的代碼放入try中,并在最后添加一行,并拋出Error();
然后傳入參數e以進(jìn)行捕獲,可以在catch中打印很多消息,我只打印了其中之一,例如e.message
5. anync包主要用于此編碼過(guò)程中,其中的ansyc.each循環(huán),ansyc.waterfall在執行完上述操作后可以執行以下操作,也可以在您之間的上下傳遞參數,這非常重要的是,因為在此編程中,每次獲取的內容都不同,每個(gè)代碼執行的條件也不同,也就是說(shuō),所需的參數也不同,即,下一個(gè)代碼執行可能需要上一個(gè)代碼. 執行,所以這個(gè)anync軟件包真的值得研究. 他的每種方法都不相同,有時(shí)可能會(huì )得到意想不到的結果.
6. 在mysql中,如果要實(shí)現這樣的效果,即如果它已經(jīng)存在于數據庫中,則忽略它,或者不重復存儲它;如果它不存在于數據庫中,則將其存儲在其中. 用replace替換插入數據的插入. 但是在mongodb中,應該沒(méi)有,或者我還沒(méi)有找到它. 我用這種方法解決了. 我定義了一個(gè)開(kāi)關(guān)來(lái)使該開(kāi)關(guān)為真. 在每次存儲之前,循環(huán)所有數據以查看是否有該數據,如果沒(méi)有,則讓開(kāi)關(guān)變?yōu)榧?,否則,繼續執行,即判斷此時(shí)開(kāi)關(guān)是真還是假,如果為true,則執行插入操作;如果為false,則將其忽略. 這樣可以達到類(lèi)似的效果,否則每次都會(huì )存儲大量重復數據,
7. 該集合的核心是我文件中的common.js. 首先,因為我們要采集,所以我們需要使用請求包. 采集后,我們需要以html格式處理數據,以便可以使用類(lèi)似于jquery的數據. 對于該操作,cheerio包已使用了很長(cháng)時(shí)間,然后在循環(huán)采集時(shí)將使用anync.each方法,因此將使用異步包,
7-1,
通過(guò)采集搜狗微信,我們必須分析搜狗微信的路徑. 每個(gè)官方帳戶(hù)頁(yè)面的路徑都是這樣
?。8%BF%99%E6%89%8D%E6%98%AF%E6%97%A5%E6%9C%AC&ie = utf8&_sug_ = n&_sug_type _ =
這是“這是日本”頁(yè)面的鏈接. 經(jīng)過(guò)分析,所有正式帳戶(hù)的鏈接僅在查詢(xún)后的參數上有所不同,但是查詢(xún)后的參數是什么,實(shí)際上,它是由encodeURIComponent()函數轉換的,之后是“這是日本”,因此相同. 要獲得該官方帳戶(hù),只需對官方帳戶(hù)的名稱(chēng)進(jìn)行編碼并將其動(dòng)態(tài)組合成一個(gè)鏈接,您就可以在訪(fǎng)問(wèn)時(shí)輸入每個(gè)鏈接,但是我只是要求此頁(yè)面此鏈接,
不是
此頁(yè)面,因此進(jìn)一步的處理是獲取當前頁(yè)面的第一內容的鏈接,即href
獲得此鏈接后,您會(huì )發(fā)現他具有自己的加密方法. 實(shí)際上非常簡(jiǎn)單,就是在鏈接中增加三個(gè)安培;更換這三個(gè)放大器;在帶有空鏈接的鏈接中,就好了,這是第一步,獲取每個(gè)官方帳戶(hù)的頁(yè)面鏈接,
7-2
獲取鏈接后,有必要訪(fǎng)問(wèn),即請求,請求每個(gè)地址,獲取每個(gè)地址的內容,但每個(gè)頁(yè)面上顯示的內容不在該頁(yè)面中,即在html結構中,隱藏在js中,因此我們需要通過(guò)常規匹配來(lái)獲取每篇文章的對象,然后循環(huán)訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)的對象以獲取有關(guān)該對象中每篇文章的一些信息,包括標題,縮略圖,摘要,URL,時(shí)間, 5個(gè)字段,但我使用的代碼很爛,而我當時(shí)使用的是
Object.Attribute.foreach(function(item,index){
})
這種可怕的方法,最后要做的就是編寫(xiě)一個(gè)循環(huán)以完全獲取每個(gè)對象,否則只能獲取第一個(gè)對象. 在這里,您應該使用async.each或async.foreach. 可以使用兩種方法中的每一種,并且它們都非常易于使用. 這樣,您將獲得上述每篇文章的基本新聞.
7-3,
第三階段是進(jìn)入每篇文章的詳細信息頁(yè)面,并獲取每篇文章的內容,喜歡的次數,作者,官方帳號,閱讀量和其他數據. 這里遇到的主要問(wèn)題是人們的內容直接位于js中,并且所有img標簽都有問(wèn)題. 它們以這種形式存儲在內容中,但是在這種情況下,由于標簽,html文檔(我不知道此類(lèi)img標簽)存在問(wèn)題,此類(lèi)圖像無(wú)法顯示在我們的網(wǎng)頁(yè)上,因此在這里我們需要進(jìn)行一些處理,替換全部與
查看全部
已經(jīng)快兩個(gè)星期了. 我已經(jīng)在微信公眾號上調試了商品搜尋器系統,最后一切都很好,但是在此期間,我遇到了很多問(wèn)題. 讓我們今天回顧一下并進(jìn)行總結. 我希望它會(huì )有用. 朋友可以學(xué)習.
1. 我做了兩個(gè)履帶. 第一次我害怕Phoenix.com時(shí),沒(méi)有任何限制,我可以隨意爬網(wǎng),所以我放松了對自動(dòng)代碼執行模塊的警惕. 我認為這很簡(jiǎn)單,但事實(shí)并非如此. 我已經(jīng)為這個(gè)問(wèn)題困擾了好幾天,幾乎是四天. 由于搜狗的限制,獲得相同IP的次數越來(lái)越多. 首先,顯示驗證碼,其次是訪(fǎng)問(wèn)限制. 直接無(wú)法訪(fǎng)問(wèn). 根據請求,您得到的是訪(fǎng)問(wèn)次數太頻繁,這種提示,因此在開(kāi)發(fā)過(guò)程中最麻煩的不是代碼的編寫(xiě),而是測試. 編寫(xiě)后無(wú)法立即測試該代碼. 我相信大多數程序員都不會(huì )喜歡,我現在編寫(xiě)的程序每天執行3次. 這樣的頻率很好,并且因為它是由多個(gè)正式帳戶(hù)采集的,所以每個(gè)正式帳戶(hù)之間也要有一個(gè)間隔,否則它將同時(shí)訪(fǎng)問(wèn)十多個(gè)公眾,該帳戶(hù)上的數百篇文章也是不現實(shí)的. 在插入句子時(shí),如何使每個(gè)正式帳戶(hù)都不敢玩,等待特定的時(shí)間段,執行下一個(gè),最后使用setInterval函數來(lái)解決它,

每80秒執行一個(gè)正式帳戶(hù),并將每個(gè)執行代碼寫(xiě)入hello. 泡沫距離有點(diǎn)遠. 我會(huì )收到的. 我們來(lái)談?wù)刢ron程序包,它是自動(dòng)執行的. npm官方網(wǎng)站上僅舉了一個(gè)例子,但是我的意思是桑拿浴可能有點(diǎn)壓抑. 我無(wú)法播放,但了解其用法. 然后我說(shuō),如果我聽(tīng)不懂怎么辦. 在Internet,百度和cron程序包的特定用法上進(jìn)行搜索. 有很多,所以我只是看了看,但是經(jīng)過(guò)仔細的分析卻并非如此. 都是廢話(huà),沒(méi)用. 一般在線(xiàn)使用中都有一個(gè)問(wèn)號,但是當我添加一個(gè)問(wèn)號時(shí),會(huì )出現錯誤. 是的,這都是胡說(shuō)八道. 最后,我在同學(xué)小組的一個(gè)前端技術(shù)討論小組中說(shuō)了這一點(diǎn). 真正熱情的小組朋友找到了我一個(gè)鏈接. 我進(jìn)去看看,嘗試了一下,沒(méi)關(guān)系,所以,非常感謝這位幫助我解決難題的同學(xué). 我將再次附上QQ群組號碼和鏈接,以幫助您在閱讀本文時(shí)學(xué)習. QQ組號: 435012561,鏈接: ,鏈接說(shuō)的沒(méi)問(wèn)題,至少可以用,這里我仍然有一個(gè)問(wèn)題,就是時(shí)區,我們以前用過(guò)一次,使用洛杉磯時(shí)間,但是這次顯然不起作用,我們需要用中文,但是我在北京嘗試了幾次,雖然不好,但是重慶可以,所以我用了重慶.
2. 我想在這里談?wù)摰氖菑牡刂窓讷@取參數的問(wèn)題. 我做的最后一個(gè)很好,但是我不知道該怎么做. 我從地址欄中得到的最后一個(gè)是數字,但是這個(gè)是它的. 它是一個(gè)字符串,并且mongodb中對字段的要求仍然非常嚴格,因此分頁(yè)功能困擾了我幾個(gè)小時(shí). 它是如何解決的?我在mongodb中添加了一個(gè)討論組. 我問(wèn)其中有什么問(wèn)題,并發(fā)布了屏幕截圖. 有一個(gè)熱心的網(wǎng)民說(shuō),傳入數據的格式顯然不正確. 我喚醒了做夢(mèng)者,我說(shuō)了是,然后我使用Number()函數來(lái)處理我得到的參數,以便字符串類(lèi)型的數量成為數字類(lèi)型的數量. 很好,因此在使用mongodb時(shí),必須注意存儲數據的格式.
3. Mongodb查詢(xún)數據語(yǔ)句的組織:

坦率地說(shuō),實(shí)際上是使用了限制和跳過(guò)這兩個(gè)函數,但是特定的格式可能是樂(lè )觀(guān)的,并且mine是可接受的參數,但是mongo的參數接受很容易直接編寫(xiě),不需要喜歡sql像$ {“”}一樣. 下面的排序功能說(shuō)明了排序方法. 這里,ctime字段設置為標準,-1表示逆序,1表示正序,
4. 在這段代碼編寫(xiě)中,我第一次使用了try catch方法進(jìn)行糾錯. 原來(lái)沒(méi)關(guān)系. 偶爾的錯誤可以正常地打印出來(lái),但是它不會(huì )影響代碼的整體執行,或者說(shuō)到下一次執行,整體感覺(jué)非常好,
對于特定用法,將您要執行的代碼放入try中,并在最后添加一行,并拋出Error();
然后傳入參數e以進(jìn)行捕獲,可以在catch中打印很多消息,我只打印了其中之一,例如e.message

5. anync包主要用于此編碼過(guò)程中,其中的ansyc.each循環(huán),ansyc.waterfall在執行完上述操作后可以執行以下操作,也可以在您之間的上下傳遞參數,這非常重要的是,因為在此編程中,每次獲取的內容都不同,每個(gè)代碼執行的條件也不同,也就是說(shuō),所需的參數也不同,即,下一個(gè)代碼執行可能需要上一個(gè)代碼. 執行,所以這個(gè)anync軟件包真的值得研究. 他的每種方法都不相同,有時(shí)可能會(huì )得到意想不到的結果.
6. 在mysql中,如果要實(shí)現這樣的效果,即如果它已經(jīng)存在于數據庫中,則忽略它,或者不重復存儲它;如果它不存在于數據庫中,則將其存儲在其中. 用replace替換插入數據的插入. 但是在mongodb中,應該沒(méi)有,或者我還沒(méi)有找到它. 我用這種方法解決了. 我定義了一個(gè)開(kāi)關(guān)來(lái)使該開(kāi)關(guān)為真. 在每次存儲之前,循環(huán)所有數據以查看是否有該數據,如果沒(méi)有,則讓開(kāi)關(guān)變?yōu)榧?,否則,繼續執行,即判斷此時(shí)開(kāi)關(guān)是真還是假,如果為true,則執行插入操作;如果為false,則將其忽略. 這樣可以達到類(lèi)似的效果,否則每次都會(huì )存儲大量重復數據,
7. 該集合的核心是我文件中的common.js. 首先,因為我們要采集,所以我們需要使用請求包. 采集后,我們需要以html格式處理數據,以便可以使用類(lèi)似于jquery的數據. 對于該操作,cheerio包已使用了很長(cháng)時(shí)間,然后在循環(huán)采集時(shí)將使用anync.each方法,因此將使用異步包,
7-1,
通過(guò)采集搜狗微信,我們必須分析搜狗微信的路徑. 每個(gè)官方帳戶(hù)頁(yè)面的路徑都是這樣
?。8%BF%99%E6%89%8D%E6%98%AF%E6%97%A5%E6%9C%AC&ie = utf8&_sug_ = n&_sug_type _ =
這是“這是日本”頁(yè)面的鏈接. 經(jīng)過(guò)分析,所有正式帳戶(hù)的鏈接僅在查詢(xún)后的參數上有所不同,但是查詢(xún)后的參數是什么,實(shí)際上,它是由encodeURIComponent()函數轉換的,之后是“這是日本”,因此相同. 要獲得該官方帳戶(hù),只需對官方帳戶(hù)的名稱(chēng)進(jìn)行編碼并將其動(dòng)態(tài)組合成一個(gè)鏈接,您就可以在訪(fǎng)問(wèn)時(shí)輸入每個(gè)鏈接,但是我只是要求此頁(yè)面此鏈接,

不是

此頁(yè)面,因此進(jìn)一步的處理是獲取當前頁(yè)面的第一內容的鏈接,即href

獲得此鏈接后,您會(huì )發(fā)現他具有自己的加密方法. 實(shí)際上非常簡(jiǎn)單,就是在鏈接中增加三個(gè)安培;更換這三個(gè)放大器;在帶有空鏈接的鏈接中,就好了,這是第一步,獲取每個(gè)官方帳戶(hù)的頁(yè)面鏈接,
7-2
獲取鏈接后,有必要訪(fǎng)問(wèn),即請求,請求每個(gè)地址,獲取每個(gè)地址的內容,但每個(gè)頁(yè)面上顯示的內容不在該頁(yè)面中,即在html結構中,隱藏在js中,因此我們需要通過(guò)常規匹配來(lái)獲取每篇文章的對象,然后循環(huán)訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)的對象以獲取有關(guān)該對象中每篇文章的一些信息,包括標題,縮略圖,摘要,URL,時(shí)間, 5個(gè)字段,但我使用的代碼很爛,而我當時(shí)使用的是
Object.Attribute.foreach(function(item,index){
})
這種可怕的方法,最后要做的就是編寫(xiě)一個(gè)循環(huán)以完全獲取每個(gè)對象,否則只能獲取第一個(gè)對象. 在這里,您應該使用async.each或async.foreach. 可以使用兩種方法中的每一種,并且它們都非常易于使用. 這樣,您將獲得上述每篇文章的基本新聞.
7-3,
第三階段是進(jìn)入每篇文章的詳細信息頁(yè)面,并獲取每篇文章的內容,喜歡的次數,作者,官方帳號,閱讀量和其他數據. 這里遇到的主要問(wèn)題是人們的內容直接位于js中,并且所有img標簽都有問(wèn)題. 它們以這種形式存儲在內容中,但是在這種情況下,由于標簽,html文檔(我不知道此類(lèi)img標簽)存在問(wèn)題,此類(lèi)圖像無(wú)法顯示在我們的網(wǎng)頁(yè)上,因此在這里我們需要進(jìn)行一些處理,替換全部與
如何在搜狗微信公眾號上采集熱門(mén)文章. docx 18頁(yè)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 455 次瀏覽 ? 2020-08-06 00:00
下拉頁(yè)面,找到并單擊“加載更多內容”按鈕,在操作提示框中選擇“更多操作”搜狗微信公眾號熱門(mén)文章如何采集圖2選擇“循環(huán)單擊單個(gè)元素”創(chuàng )建一個(gè)頁(yè)面翻閱周期如何在搜狗微信公眾號上采集熱門(mén)文章圖3由于此頁(yè)面涉及Ajax技術(shù),因此我們需要設置一些高級選項. 選擇“單擊元素”步驟,打開(kāi)“高級選項”,選中“ Ajax加載數據”,將時(shí)間設置為“ 2秒”. 如何在搜狗微信公眾號上采集熱門(mén)文章圖4注意: AJAX表示延遲加載和異步更新. 這種腳本技術(shù)通過(guò)在后臺與服務(wù)器進(jìn)行少量數據交換,可以更新網(wǎng)頁(yè)的特定部分,而無(wú)需重新加載整個(gè)網(wǎng)頁(yè). 性能特點(diǎn): 當您單擊網(wǎng)頁(yè)中的一個(gè)選項時(shí),大多數網(wǎng)站的URL不會(huì )更改. b. 該網(wǎng)頁(yè)未完全加載,僅部分加載了數據并進(jìn)行了更改. 驗證方法: 單擊該操作后,URL輸入欄將不會(huì )在瀏覽器的加載狀態(tài)或轉彎狀態(tài)下顯示. 觀(guān)察該網(wǎng)頁(yè),我們發(fā)現單擊“加載更多內容” 5次后,頁(yè)面將加載到底部,總共顯示100條文章. 因此,我們將整個(gè)“循環(huán)旋轉”步驟設置為執行5次. 選擇“循環(huán)翻頁(yè)”步驟,打開(kāi)“高級選項”,打開(kāi)“滿(mǎn)足以下條件時(shí)退出循環(huán)”,將循環(huán)數設置為等于“ 5次”,然后單擊“確定”. 搜狗微信公眾號圖5步驟3: 創(chuàng )建列表循環(huán)并提取數據HYPERLINK“ / article / javascript :;” 1)移動(dòng)鼠標以選擇頁(yè)面上第一篇文章的框.
系統將識別此塊中的子元素. 在操作提示框中,選擇“選擇子元素”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖62)繼續在頁(yè)面上選擇第二篇文章的塊,系統將第二篇文章中的子元素會(huì )被自動(dòng)選擇,頁(yè)面上的其他10組相似元素也會(huì )被識別. 在操作提示框中,選擇“全選”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖73)可以看到,頁(yè)面上文章區域中的所有元素均已選中,并變?yōu)榫G色. 在右側的操作提示框中,將顯示一個(gè)字段預覽表. 將鼠標移到表格的頂部,然后單擊垃圾箱圖標以刪除不必要的字段. 字段選擇完成后,選擇“采集以下數據”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖84)我們還希望采集每篇文章的URL,因此需要提取一個(gè)字段. 單擊第一篇文章的鏈接,系統將自動(dòng)在頁(yè)面上選擇一組文章鏈接. 在右側的操作提示框中,選擇“全選”如何在搜狗微信公眾號上采集熱門(mén)文章圖95)選擇“采集以下鏈接地址”如何在搜狗微信公眾號上采集熱門(mén)文章圖106)選擇后在字段中,選擇相應的字段,您可以自定義字段的命名. 圖11第4步: 修改Xpath讓我們繼續觀(guān)察. 5次單擊“加載更多內容”后,此頁(yè)面將加載所有100條文章. 因此,我們的配置規則的思想是首先建立一個(gè)翻頁(yè)周期,加載全部100條文章,然后創(chuàng )建一個(gè)周期列表并提取數據1)選擇整個(gè)``循環(huán)''步驟并將其拖出``循環(huán)''翻頁(yè)”步驟.
如果不執行此操作,將有很多重復的數據. 如何在搜狗微信公眾號上采集熱門(mén)文章圖12拖動(dòng)完成后,如下圖所示,如何在搜狗微信公眾號上采集熱門(mén)文章圖13在“列表循環(huán)”中“在此步驟中,循環(huán)的100篇文章列表. 選擇整個(gè)“循環(huán)步驟”,打開(kāi)“高級選項”,元素列表中的Xpath不會(huì )被固定: // BODY [@ id ='loginWrap'] / DIV [4] / DIV [1] / DIV [3] / UL [1] / LI,將其復制并粘貼到Firefox瀏覽器中的相應位置. 如何在搜狗微信公眾號上采集熱門(mén)文章圖14 Xpath: 是一種路徑查詢(xún)語(yǔ)言,簡(jiǎn)而言之,它使用路徑表達式來(lái)查找我們需要定位的數據,Xpath用于沿XML路徑查找數據,但是Ucai云采集器中有一套針對HTML的Xpath引擎,因此您可以直接使用XPATH可以準確地在網(wǎng)頁(yè)中查找和定位數據3)在Firefox瀏覽器中,我們通過(guò)以下Xpath發(fā)現: // BODY [@ id ='loginWrap'] / DIV [4] / DIV [1] / DIV [3] / UL [1] / LI,該頁(yè)面上的頁(yè)面有20篇文章,搜狗微信公眾號,如何采集熱門(mén)文章圖154)將Xpath修改為: // BODY [@ id ='loginWrap'] / DIV / DIV [1] / DIV [3] / UL / LI,我們發(fā)現該頁(yè)面上要采集的所有文章都位于搜狗微信公眾號上. 熱門(mén)文章如何采集圖16中所示的Xpath: // BODY [@ id ='loginWrap'] / DIV / DIV [1] / DIV [3] / UL / LI,復制并粘貼到圖片中所示的位置,然后單擊“確定”,搜狗微信公眾號熱門(mén)文章如何采集圖176)單擊左上角的“保存并開(kāi)始”,選擇“開(kāi)始本地采集”如何在搜狗微信公眾號上采集熱門(mén)文章”圖18步驟5: 數據采集和導出采集完成后,將彈出提示,選擇“導出數據”,選擇“適當的導出方法”,并采集搜狗微信文章數據導出搜狗微信官方賬號如何搜集熱門(mén)文章圖19在這里我們選擇excel作為導出格式,數據導出后,下圖顯示了如何采集搜狗微信公眾號熱門(mén)文章: 圖20優(yōu)采云-70萬(wàn)用戶(hù)選擇的Web數據采集器.
1. 該操作很簡(jiǎn)單,任何人都可以使用: 不需要技術(shù)背景,并且可以通過(guò)瀏覽Internet進(jìn)行采集. 完全可視化該過(guò)程,單擊鼠標以完成操作,您可以在2分鐘內快速上手. 2.強大的功能,可以在任何網(wǎng)站上采集: 單擊,登錄,翻頁(yè),識別驗證碼,瀑布流,Ajax腳本異步加載數據頁(yè),所有這些都可以通過(guò)簡(jiǎn)單的設置進(jìn)行采集. 3.云采集,也可以關(guān)閉. 配置采集任務(wù)后,可以將其關(guān)閉,并可以在云中執行該任務(wù). 龐大的云采集集群不間斷運行24 * 7,因此無(wú)需擔心IP被阻塞和網(wǎng)絡(luò )中斷. 4.免費功能+增值服務(wù),可以按需選擇. 免費版具有所有功能,可以滿(mǎn)足用戶(hù)的基本采集需求. 同時(shí),建立了一些增值服務(wù)(例如私有云)以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求. 查看全部
優(yōu)采云·云采集服務(wù)平臺優(yōu)采云·云采集服務(wù)平臺搜狗微信公眾號如何采集熱門(mén)文章本文介紹如何使用優(yōu)采云來(lái)采集搜狗微信文章(以熱門(mén)文章為例). 規則下載: 使用功能點(diǎn): 尋呼列表信息采集HYPERLINK“ /tutorial/fylb-70.aspx?t=1” /tutorial/fylb-70.aspx?t=1Xpath HYPERLINK“ / search?query = XPath” / search? query = XPathAJAX單擊并翻頁(yè)HYPERLINK“ /tutorial/ajaxdjfy_7.aspx?t=1” /tutorial/ajaxdjfy_7.aspx?t=1相關(guān)的采集教程: 天貓商品信息采集百度搜索結果采集步驟1: 創(chuàng )建采集任務(wù)1)進(jìn)入主界面,選擇“自定義模式”如何在搜狗微信公眾號上采集熱門(mén)文章圖12)復制要采集的URL到網(wǎng)站輸入框中,單擊“保存URL”如何在搜狗微信上采集熱門(mén)文章官方帳戶(hù)圖2 HYPERLINK“ / article / javascript :;”第2步: 創(chuàng )建翻頁(yè)循環(huán). 在頁(yè)面的右上角,打開(kāi)“流程”以顯示“流程設計器”和“自定義當前操作”的兩個(gè)部分. 打開(kāi)網(wǎng)頁(yè)后,默認顯示“熱門(mén)”文章.
下拉頁(yè)面,找到并單擊“加載更多內容”按鈕,在操作提示框中選擇“更多操作”搜狗微信公眾號熱門(mén)文章如何采集圖2選擇“循環(huán)單擊單個(gè)元素”創(chuàng )建一個(gè)頁(yè)面翻閱周期如何在搜狗微信公眾號上采集熱門(mén)文章圖3由于此頁(yè)面涉及Ajax技術(shù),因此我們需要設置一些高級選項. 選擇“單擊元素”步驟,打開(kāi)“高級選項”,選中“ Ajax加載數據”,將時(shí)間設置為“ 2秒”. 如何在搜狗微信公眾號上采集熱門(mén)文章圖4注意: AJAX表示延遲加載和異步更新. 這種腳本技術(shù)通過(guò)在后臺與服務(wù)器進(jìn)行少量數據交換,可以更新網(wǎng)頁(yè)的特定部分,而無(wú)需重新加載整個(gè)網(wǎng)頁(yè). 性能特點(diǎn): 當您單擊網(wǎng)頁(yè)中的一個(gè)選項時(shí),大多數網(wǎng)站的URL不會(huì )更改. b. 該網(wǎng)頁(yè)未完全加載,僅部分加載了數據并進(jìn)行了更改. 驗證方法: 單擊該操作后,URL輸入欄將不會(huì )在瀏覽器的加載狀態(tài)或轉彎狀態(tài)下顯示. 觀(guān)察該網(wǎng)頁(yè),我們發(fā)現單擊“加載更多內容” 5次后,頁(yè)面將加載到底部,總共顯示100條文章. 因此,我們將整個(gè)“循環(huán)旋轉”步驟設置為執行5次. 選擇“循環(huán)翻頁(yè)”步驟,打開(kāi)“高級選項”,打開(kāi)“滿(mǎn)足以下條件時(shí)退出循環(huán)”,將循環(huán)數設置為等于“ 5次”,然后單擊“確定”. 搜狗微信公眾號圖5步驟3: 創(chuàng )建列表循環(huán)并提取數據HYPERLINK“ / article / javascript :;” 1)移動(dòng)鼠標以選擇頁(yè)面上第一篇文章的框.
系統將識別此塊中的子元素. 在操作提示框中,選擇“選擇子元素”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖62)繼續在頁(yè)面上選擇第二篇文章的塊,系統將第二篇文章中的子元素會(huì )被自動(dòng)選擇,頁(yè)面上的其他10組相似元素也會(huì )被識別. 在操作提示框中,選擇“全選”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖73)可以看到,頁(yè)面上文章區域中的所有元素均已選中,并變?yōu)榫G色. 在右側的操作提示框中,將顯示一個(gè)字段預覽表. 將鼠標移到表格的頂部,然后單擊垃圾箱圖標以刪除不必要的字段. 字段選擇完成后,選擇“采集以下數據”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖84)我們還希望采集每篇文章的URL,因此需要提取一個(gè)字段. 單擊第一篇文章的鏈接,系統將自動(dòng)在頁(yè)面上選擇一組文章鏈接. 在右側的操作提示框中,選擇“全選”如何在搜狗微信公眾號上采集熱門(mén)文章圖95)選擇“采集以下鏈接地址”如何在搜狗微信公眾號上采集熱門(mén)文章圖106)選擇后在字段中,選擇相應的字段,您可以自定義字段的命名. 圖11第4步: 修改Xpath讓我們繼續觀(guān)察. 5次單擊“加載更多內容”后,此頁(yè)面將加載所有100條文章. 因此,我們的配置規則的思想是首先建立一個(gè)翻頁(yè)周期,加載全部100條文章,然后創(chuàng )建一個(gè)周期列表并提取數據1)選擇整個(gè)``循環(huán)''步驟并將其拖出``循環(huán)''翻頁(yè)”步驟.
如果不執行此操作,將有很多重復的數據. 如何在搜狗微信公眾號上采集熱門(mén)文章圖12拖動(dòng)完成后,如下圖所示,如何在搜狗微信公眾號上采集熱門(mén)文章圖13在“列表循環(huán)”中“在此步驟中,循環(huán)的100篇文章列表. 選擇整個(gè)“循環(huán)步驟”,打開(kāi)“高級選項”,元素列表中的Xpath不會(huì )被固定: // BODY [@ id ='loginWrap'] / DIV [4] / DIV [1] / DIV [3] / UL [1] / LI,將其復制并粘貼到Firefox瀏覽器中的相應位置. 如何在搜狗微信公眾號上采集熱門(mén)文章圖14 Xpath: 是一種路徑查詢(xún)語(yǔ)言,簡(jiǎn)而言之,它使用路徑表達式來(lái)查找我們需要定位的數據,Xpath用于沿XML路徑查找數據,但是Ucai云采集器中有一套針對HTML的Xpath引擎,因此您可以直接使用XPATH可以準確地在網(wǎng)頁(yè)中查找和定位數據3)在Firefox瀏覽器中,我們通過(guò)以下Xpath發(fā)現: // BODY [@ id ='loginWrap'] / DIV [4] / DIV [1] / DIV [3] / UL [1] / LI,該頁(yè)面上的頁(yè)面有20篇文章,搜狗微信公眾號,如何采集熱門(mén)文章圖154)將Xpath修改為: // BODY [@ id ='loginWrap'] / DIV / DIV [1] / DIV [3] / UL / LI,我們發(fā)現該頁(yè)面上要采集的所有文章都位于搜狗微信公眾號上. 熱門(mén)文章如何采集圖16中所示的Xpath: // BODY [@ id ='loginWrap'] / DIV / DIV [1] / DIV [3] / UL / LI,復制并粘貼到圖片中所示的位置,然后單擊“確定”,搜狗微信公眾號熱門(mén)文章如何采集圖176)單擊左上角的“保存并開(kāi)始”,選擇“開(kāi)始本地采集”如何在搜狗微信公眾號上采集熱門(mén)文章”圖18步驟5: 數據采集和導出采集完成后,將彈出提示,選擇“導出數據”,選擇“適當的導出方法”,并采集搜狗微信文章數據導出搜狗微信官方賬號如何搜集熱門(mén)文章圖19在這里我們選擇excel作為導出格式,數據導出后,下圖顯示了如何采集搜狗微信公眾號熱門(mén)文章: 圖20優(yōu)采云-70萬(wàn)用戶(hù)選擇的Web數據采集器.
1. 該操作很簡(jiǎn)單,任何人都可以使用: 不需要技術(shù)背景,并且可以通過(guò)瀏覽Internet進(jìn)行采集. 完全可視化該過(guò)程,單擊鼠標以完成操作,您可以在2分鐘內快速上手. 2.強大的功能,可以在任何網(wǎng)站上采集: 單擊,登錄,翻頁(yè),識別驗證碼,瀑布流,Ajax腳本異步加載數據頁(yè),所有這些都可以通過(guò)簡(jiǎn)單的設置進(jìn)行采集. 3.云采集,也可以關(guān)閉. 配置采集任務(wù)后,可以將其關(guān)閉,并可以在云中執行該任務(wù). 龐大的云采集集群不間斷運行24 * 7,因此無(wú)需擔心IP被阻塞和網(wǎng)絡(luò )中斷. 4.免費功能+增值服務(wù),可以按需選擇. 免費版具有所有功能,可以滿(mǎn)足用戶(hù)的基本采集需求. 同時(shí),建立了一些增值服務(wù)(例如私有云)以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求.
分析python如何抓取搜狗微信官方賬號永久鏈接的想法
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 195 次瀏覽 ? 2020-08-05 21:08
本文主要解釋了這些想法,請自行解決代碼部分
在搜狗微信上獲取當天的信息排名
指定輸入關(guān)鍵字并通過(guò)scrapy搶奪官方帳戶(hù)
通過(guò)登錄微信官方帳戶(hù)鏈接獲取Cookie信息
由于尚未解決對微信公眾平臺的模擬登錄,因此需要手動(dòng)登錄以實(shí)時(shí)獲取cookie信息
固定鏈接可以在此處轉換
代碼部分
def parse(self, response):
item = SougouItem()
item["title"] = response.xpath('//title/text()').extract_first()
print("**"*5, item["title"],"**"*5)
name = input("----------請輸入需要搜索的信息:")
print(name)
url = "http://weixin.sogou.com/weixin ... ot%3B
yield scrapy.Request(url=url, callback=self.parse_two, meta={"name":name})
搜狗微信訪(fǎng)問(wèn)頻率太快,導致需要輸入驗證碼 查看全部
本文主要介紹關(guān)于python如何抓取Sogou微信官方帳戶(hù)的永久鏈接的思想分析. 編輯認為這是相當不錯的. 現在,我將與您分享并提供參考. 讓我們跟隨編輯器看一下.
本文主要解釋了這些想法,請自行解決代碼部分
在搜狗微信上獲取當天的信息排名
指定輸入關(guān)鍵字并通過(guò)scrapy搶奪官方帳戶(hù)
通過(guò)登錄微信官方帳戶(hù)鏈接獲取Cookie信息
由于尚未解決對微信公眾平臺的模擬登錄,因此需要手動(dòng)登錄以實(shí)時(shí)獲取cookie信息




固定鏈接可以在此處轉換
代碼部分
def parse(self, response):
item = SougouItem()
item["title"] = response.xpath('//title/text()').extract_first()
print("**"*5, item["title"],"**"*5)
name = input("----------請輸入需要搜索的信息:")
print(name)
url = "http://weixin.sogou.com/weixin ... ot%3B
yield scrapy.Request(url=url, callback=self.parse_two, meta={"name":name})
搜狗微信訪(fǎng)問(wèn)頻率太快,導致需要輸入驗證碼
python-抓取微信官方帳戶(hù)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 188 次瀏覽 ? 2020-08-07 22:07
我相信您有時(shí)會(huì )在面試期間遇到抓取微信官方帳戶(hù)的問(wèn)題. 當您最終有空時(shí),您將參考老板的文章,我也開(kāi)始抓取并分享微信官方帳戶(hù). 不要討厭代碼太低.
學(xué)習知識
博客參考:https://blog.csdn.net/xc_zhou/ ... 32587 先看一篇這個(gè)大佬的文章,理解一下微信公眾號。
嘗試抓取微信文章的朋友必須熟悉搜狗微信. 搜狗微信是騰訊提供的官方搜索引擎,專(zhuān)門(mén)用于搜索微信官方賬號(不包括服務(wù)賬號)發(fā)布的文章
搜狗微信鏈接:
爬網(wǎng)步驟如下: 第一步是創(chuàng )建您自己的官方帳戶(hù)
創(chuàng )建正式帳戶(hù)地址: #不會(huì )提及創(chuàng )建方法.
第二步是找到微信官方賬號
第一步如圖所示:
第二步如圖所示:
第三步如圖所示:
第四步如圖所示:
以計算機視覺(jué)為例. 當然,您也可以選擇其他參數,然后查看需要在請求中提交的參數.
第五步如圖所示:
可以看到每個(gè)正式帳戶(hù)都有一個(gè)falseid參數,訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)請求都需要該參數,請參閱步驟6.
第六步如圖所示:
選擇要爬網(wǎng)的文章,然后查看請求所需的參數.
第七步如圖所示:
每個(gè)官方帳戶(hù)的前五篇文章.
以上步驟是微信公眾號文章的要求. 然后在分析之后使用代碼來(lái)實(shí)現它. 如果您不了解上述分析,建議您參考以下文章:
https://blog.csdn.net/xc_zhou/ ... 32921
https://mp.weixin.qq.com/s%3F_ ... %23rd
代碼如下 查看全部
原因
我相信您有時(shí)會(huì )在面試期間遇到抓取微信官方帳戶(hù)的問(wèn)題. 當您最終有空時(shí),您將參考老板的文章,我也開(kāi)始抓取并分享微信官方帳戶(hù). 不要討厭代碼太低.
學(xué)習知識
博客參考:https://blog.csdn.net/xc_zhou/ ... 32587 先看一篇這個(gè)大佬的文章,理解一下微信公眾號。
嘗試抓取微信文章的朋友必須熟悉搜狗微信. 搜狗微信是騰訊提供的官方搜索引擎,專(zhuān)門(mén)用于搜索微信官方賬號(不包括服務(wù)賬號)發(fā)布的文章
搜狗微信鏈接:
爬網(wǎng)步驟如下: 第一步是創(chuàng )建您自己的官方帳戶(hù)
創(chuàng )建正式帳戶(hù)地址: #不會(huì )提及創(chuàng )建方法.
第二步是找到微信官方賬號
第一步如圖所示:

第二步如圖所示:

第三步如圖所示:

第四步如圖所示:
以計算機視覺(jué)為例. 當然,您也可以選擇其他參數,然后查看需要在請求中提交的參數.

第五步如圖所示:
可以看到每個(gè)正式帳戶(hù)都有一個(gè)falseid參數,訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)請求都需要該參數,請參閱步驟6.

第六步如圖所示:
選擇要爬網(wǎng)的文章,然后查看請求所需的參數.

第七步如圖所示:
每個(gè)官方帳戶(hù)的前五篇文章.

以上步驟是微信公眾號文章的要求. 然后在分析之后使用代碼來(lái)實(shí)現它. 如果您不了解上述分析,建議您參考以下文章:
https://blog.csdn.net/xc_zhou/ ... 32921
https://mp.weixin.qq.com/s%3F_ ... %23rd
代碼如下
微信公眾號文章采集器系統
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 376 次瀏覽 ? 2020-08-07 20:19
1. 我做了兩個(gè)履帶. 我第一次害怕Phoenix.com時(shí),沒(méi)有任何限制,我可以隨意爬網(wǎng),所以我放松了對自動(dòng)代碼執行模塊的警惕. 我認為這很簡(jiǎn)單,但事實(shí)并非如此. 我已經(jīng)為這個(gè)問(wèn)題困擾了好幾天,幾乎是四天. 由于搜狗的限制,獲得相同IP的次數越來(lái)越多. 首先,顯示驗證碼,其次是訪(fǎng)問(wèn)限制. 直接無(wú)法訪(fǎng)問(wèn). 根據請求,您得到的是訪(fǎng)問(wèn)次數太頻繁,這種提示,因此在開(kāi)發(fā)過(guò)程中最麻煩的不是代碼的編寫(xiě),而是測試. 編寫(xiě)后無(wú)法立即測試該代碼. 我相信大多數程序員都不會(huì )喜歡,我現在編寫(xiě)的程序每天執行3次. 這樣的頻率很好,并且因為它是由多個(gè)官方帳戶(hù)采集的,所以每個(gè)官方帳戶(hù)之間也要有間隔,否則它將同時(shí)訪(fǎng)問(wèn)十多個(gè)公眾,該帳戶(hù)上的數百篇文章也不切實(shí)際. 在插入句子時(shí),如何使每個(gè)正式帳戶(hù)都不敢玩,等待特定的時(shí)間段,執行下一個(gè),最后使用setInterval函數來(lái)解決它,
每80秒執行一個(gè)正式帳戶(hù),并將每個(gè)執行代碼寫(xiě)入hello. 泡沫距離有點(diǎn)遠. 我會(huì )收到的. 我們來(lái)談?wù)刢ron程序包,它是自動(dòng)執行的. npm官方網(wǎng)站上僅舉了一個(gè)例子,但是我的意思是桑拿浴可能有點(diǎn)壓抑. 我無(wú)法播放,但了解其用法. 然后我說(shuō),如果我聽(tīng)不懂怎么辦. 在Internet,百度和cron程序包的特定用法上進(jìn)行搜索. 有很多,所以我只是看了看,但是經(jīng)過(guò)仔細的分析卻并非如此. 都是廢話(huà),沒(méi)用. 一般在線(xiàn)使用中都有一個(gè)問(wèn)號,但是當我添加一個(gè)問(wèn)號時(shí),會(huì )出現錯誤. 是的,這都是胡說(shuō)八道. 最后,我在同學(xué)小組的一個(gè)前端技術(shù)討論小組中說(shuō)了這一點(diǎn). 真正熱情的小組朋友找到了我一個(gè)鏈接. 我進(jìn)去看看,嘗試了一下,沒(méi)關(guān)系,所以,非常感謝這位幫助我解決難題的同學(xué). 我將再次附上QQ群組號碼和鏈接,以幫助您在閱讀本文時(shí)學(xué)習. QQ組號: 435012561,鏈接: ,鏈接說(shuō)的沒(méi)問(wèn)題,至少可以用,這里我仍然有一個(gè)問(wèn)題,就是時(shí)區,我們以前用過(guò)一次,使用洛杉磯時(shí)間,但是這次顯然不起作用,我們需要用中文,但是我在北京嘗試了幾次,雖然不好,但是重慶可以,所以我用了重慶.
2. 我想在這里談?wù)摰氖菑牡刂窓讷@取參數的問(wèn)題. 我做的最后一個(gè)很好,但是我不知道該怎么做. 我從地址欄中得到的最后一個(gè)是數字,但是這個(gè)是它的. 它是一個(gè)字符串,并且mongodb中對字段的要求仍然非常嚴格,因此分頁(yè)功能困擾了我幾個(gè)小時(shí). 它是如何解決的?我在mongodb中添加了一個(gè)討論組. 我問(wèn)其中有什么問(wèn)題,并發(fā)布了屏幕截圖. 有一個(gè)熱心的網(wǎng)民說(shuō),傳入數據的格式顯然不正確. 我喚醒了做夢(mèng)者,我說(shuō)了是,然后我使用Number()函數來(lái)處理我得到的參數,以便字符串類(lèi)型的數量成為數字類(lèi)型的數量. 很好,因此在使用mongodb時(shí),必須注意存儲數據的格式.
3. Mongodb查詢(xún)數據語(yǔ)句的組織:
坦率地說(shuō),實(shí)際上是使用了限制和跳過(guò)這兩個(gè)函數,但是特定的格式可能是樂(lè )觀(guān)的,并且mine是可接受的參數,但是mongo的參數接受很容易直接編寫(xiě),不需要喜歡sql像$ {“”}一樣. 下面的排序功能說(shuō)明了排序方法. 這里,ctime字段設置為標準,-1表示逆序,1表示正序,
4. 在這段代碼編寫(xiě)中,我第一次使用了try catch方法進(jìn)行糾錯. 原來(lái)沒(méi)關(guān)系. 偶爾的錯誤可以正常地打印出來(lái),但是它不會(huì )影響代碼的整體執行,或者說(shuō)到下一次執行,整體感覺(jué)非常好,
對于特定用法,將您要執行的代碼放入try中,并在最后添加一行,并拋出Error();
然后傳入參數e以進(jìn)行捕獲,可以在catch中打印很多消息,我只打印了其中之一,例如e.message
5. anync包主要用于此編碼過(guò)程中,其中的ansyc.each循環(huán),ansyc.waterfall在執行完上述操作后可以執行以下操作,也可以在您之間的上下傳遞參數,這非常重要的是,因為在此編程中,每次獲取的內容都不同,每個(gè)代碼執行的條件也不同,也就是說(shuō),所需的參數也不同,即,下一個(gè)代碼執行可能需要上一個(gè)代碼. 執行,所以這個(gè)anync軟件包真的值得研究. 他的每種方法都不相同,有時(shí)可能會(huì )得到意想不到的結果.
6. 在mysql中,如果要實(shí)現這樣的效果,即如果它已經(jīng)存在于數據庫中,則忽略它,或者不重復存儲它;如果它不存在于數據庫中,則將其存儲在其中. 用replace替換插入數據的插入. 但是在mongodb中,應該沒(méi)有,或者我還沒(méi)有找到它. 我用這種方法解決了. 我定義了一個(gè)開(kāi)關(guān)來(lái)使該開(kāi)關(guān)為真. 在每次存儲之前,循環(huán)所有數據以查看是否有該數據,如果沒(méi)有,則讓開(kāi)關(guān)變?yōu)榧?,否則,繼續執行,即判斷此時(shí)開(kāi)關(guān)是真還是假,如果為true,則執行插入操作;如果為false,則將其忽略. 這樣可以達到類(lèi)似的效果,否則每次都會(huì )存儲大量重復數據,
7. 該集合的核心是我文件中的common.js. 首先,因為我們要采集,所以我們需要使用請求包. 采集后,我們需要以html格式處理數據,以便可以使用類(lèi)似于jquery的數據. 對于該操作,cheerio包已使用了很長(cháng)時(shí)間,然后在循環(huán)采集時(shí)將使用anync.each方法,因此將使用異步包,
7-1,
通過(guò)采集搜狗微信,我們必須分析搜狗微信的路徑. 每個(gè)官方帳戶(hù)頁(yè)面的路徑都是這樣
?。8%BF%99%E6%89%8D%E6%98%AF%E6%97%A5%E6%9C%AC&ie = utf8&_sug_ = n&_sug_type _ =
這是“這是日本”頁(yè)面的鏈接. 經(jīng)過(guò)分析,所有正式帳戶(hù)的鏈接僅在查詢(xún)后的參數上有所不同,但是查詢(xún)后的參數是什么,實(shí)際上,它是由encodeURIComponent()函數轉換的,之后是“這是日本”,因此相同. 要獲得該官方帳戶(hù),只需對官方帳戶(hù)的名稱(chēng)進(jìn)行編碼并將其動(dòng)態(tài)組合成一個(gè)鏈接,您就可以在訪(fǎng)問(wèn)時(shí)輸入每個(gè)鏈接,但是我只是要求此頁(yè)面此鏈接,
不是
此頁(yè)面,因此進(jìn)一步的處理是獲取當前頁(yè)面的第一內容的鏈接,即href
獲得此鏈接后,您會(huì )發(fā)現他具有自己的加密方法. 實(shí)際上非常簡(jiǎn)單,就是在鏈接中增加三個(gè)安培;更換這三個(gè)放大器;在帶有空鏈接的鏈接中,就好了,這是第一步,獲取每個(gè)官方帳戶(hù)的頁(yè)面鏈接,
7-2
獲取鏈接后,有必要訪(fǎng)問(wèn),即請求,請求每個(gè)地址,獲取每個(gè)地址的內容,但每個(gè)頁(yè)面上顯示的內容不在該頁(yè)面中,即在html結構中,隱藏在js中,因此我們需要通過(guò)常規匹配來(lái)獲取每篇文章的對象,然后循環(huán)訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)的對象以獲取有關(guān)該對象中每篇文章的一些信息,包括標題,縮略圖,摘要,URL,時(shí)間, 5個(gè)字段,但我使用的代碼很爛,而我當時(shí)使用的是
Object.Attribute.foreach(function(item,index){
})
這種可怕的方法,最后要做的就是編寫(xiě)一個(gè)循環(huán)以完全獲取每個(gè)對象,否則只能獲取第一個(gè)對象. 在這里,您應該使用async.each或async.foreach. 可以使用兩種方法中的每一種,并且它們都非常易于使用. 這樣,您將獲得上述每篇文章的基本新聞.
7-3,
第三階段是進(jìn)入每篇文章的詳細信息頁(yè)面,并獲取每篇文章的內容,喜歡的次數,作者,官方帳號,閱讀量和其他數據. 這里遇到的主要問(wèn)題是人們的內容直接位于js中,并且所有img標簽都有問(wèn)題. 它們以這種形式存儲在內容中,但是在這種情況下,由于標簽,html文檔(我不知道此類(lèi)img標簽)存在問(wèn)題,此類(lèi)圖像無(wú)法顯示在我們的網(wǎng)頁(yè)上,因此在這里我們需要進(jìn)行一些處理,替換全部與
查看全部
已經(jīng)快兩個(gè)星期了. 我已經(jīng)在微信公眾號上調試了商品采集器系統,最后一切都很好,但是在此期間,我遇到了很多問(wèn)題. 讓我們今天回顧一下并進(jìn)行總結. 我希望它會(huì )有用. 朋友可以學(xué)習.
1. 我做了兩個(gè)履帶. 我第一次害怕Phoenix.com時(shí),沒(méi)有任何限制,我可以隨意爬網(wǎng),所以我放松了對自動(dòng)代碼執行模塊的警惕. 我認為這很簡(jiǎn)單,但事實(shí)并非如此. 我已經(jīng)為這個(gè)問(wèn)題困擾了好幾天,幾乎是四天. 由于搜狗的限制,獲得相同IP的次數越來(lái)越多. 首先,顯示驗證碼,其次是訪(fǎng)問(wèn)限制. 直接無(wú)法訪(fǎng)問(wèn). 根據請求,您得到的是訪(fǎng)問(wèn)次數太頻繁,這種提示,因此在開(kāi)發(fā)過(guò)程中最麻煩的不是代碼的編寫(xiě),而是測試. 編寫(xiě)后無(wú)法立即測試該代碼. 我相信大多數程序員都不會(huì )喜歡,我現在編寫(xiě)的程序每天執行3次. 這樣的頻率很好,并且因為它是由多個(gè)官方帳戶(hù)采集的,所以每個(gè)官方帳戶(hù)之間也要有間隔,否則它將同時(shí)訪(fǎng)問(wèn)十多個(gè)公眾,該帳戶(hù)上的數百篇文章也不切實(shí)際. 在插入句子時(shí),如何使每個(gè)正式帳戶(hù)都不敢玩,等待特定的時(shí)間段,執行下一個(gè),最后使用setInterval函數來(lái)解決它,

每80秒執行一個(gè)正式帳戶(hù),并將每個(gè)執行代碼寫(xiě)入hello. 泡沫距離有點(diǎn)遠. 我會(huì )收到的. 我們來(lái)談?wù)刢ron程序包,它是自動(dòng)執行的. npm官方網(wǎng)站上僅舉了一個(gè)例子,但是我的意思是桑拿浴可能有點(diǎn)壓抑. 我無(wú)法播放,但了解其用法. 然后我說(shuō),如果我聽(tīng)不懂怎么辦. 在Internet,百度和cron程序包的特定用法上進(jìn)行搜索. 有很多,所以我只是看了看,但是經(jīng)過(guò)仔細的分析卻并非如此. 都是廢話(huà),沒(méi)用. 一般在線(xiàn)使用中都有一個(gè)問(wèn)號,但是當我添加一個(gè)問(wèn)號時(shí),會(huì )出現錯誤. 是的,這都是胡說(shuō)八道. 最后,我在同學(xué)小組的一個(gè)前端技術(shù)討論小組中說(shuō)了這一點(diǎn). 真正熱情的小組朋友找到了我一個(gè)鏈接. 我進(jìn)去看看,嘗試了一下,沒(méi)關(guān)系,所以,非常感謝這位幫助我解決難題的同學(xué). 我將再次附上QQ群組號碼和鏈接,以幫助您在閱讀本文時(shí)學(xué)習. QQ組號: 435012561,鏈接: ,鏈接說(shuō)的沒(méi)問(wèn)題,至少可以用,這里我仍然有一個(gè)問(wèn)題,就是時(shí)區,我們以前用過(guò)一次,使用洛杉磯時(shí)間,但是這次顯然不起作用,我們需要用中文,但是我在北京嘗試了幾次,雖然不好,但是重慶可以,所以我用了重慶.
2. 我想在這里談?wù)摰氖菑牡刂窓讷@取參數的問(wèn)題. 我做的最后一個(gè)很好,但是我不知道該怎么做. 我從地址欄中得到的最后一個(gè)是數字,但是這個(gè)是它的. 它是一個(gè)字符串,并且mongodb中對字段的要求仍然非常嚴格,因此分頁(yè)功能困擾了我幾個(gè)小時(shí). 它是如何解決的?我在mongodb中添加了一個(gè)討論組. 我問(wèn)其中有什么問(wèn)題,并發(fā)布了屏幕截圖. 有一個(gè)熱心的網(wǎng)民說(shuō),傳入數據的格式顯然不正確. 我喚醒了做夢(mèng)者,我說(shuō)了是,然后我使用Number()函數來(lái)處理我得到的參數,以便字符串類(lèi)型的數量成為數字類(lèi)型的數量. 很好,因此在使用mongodb時(shí),必須注意存儲數據的格式.
3. Mongodb查詢(xún)數據語(yǔ)句的組織:

坦率地說(shuō),實(shí)際上是使用了限制和跳過(guò)這兩個(gè)函數,但是特定的格式可能是樂(lè )觀(guān)的,并且mine是可接受的參數,但是mongo的參數接受很容易直接編寫(xiě),不需要喜歡sql像$ {“”}一樣. 下面的排序功能說(shuō)明了排序方法. 這里,ctime字段設置為標準,-1表示逆序,1表示正序,
4. 在這段代碼編寫(xiě)中,我第一次使用了try catch方法進(jìn)行糾錯. 原來(lái)沒(méi)關(guān)系. 偶爾的錯誤可以正常地打印出來(lái),但是它不會(huì )影響代碼的整體執行,或者說(shuō)到下一次執行,整體感覺(jué)非常好,
對于特定用法,將您要執行的代碼放入try中,并在最后添加一行,并拋出Error();
然后傳入參數e以進(jìn)行捕獲,可以在catch中打印很多消息,我只打印了其中之一,例如e.message

5. anync包主要用于此編碼過(guò)程中,其中的ansyc.each循環(huán),ansyc.waterfall在執行完上述操作后可以執行以下操作,也可以在您之間的上下傳遞參數,這非常重要的是,因為在此編程中,每次獲取的內容都不同,每個(gè)代碼執行的條件也不同,也就是說(shuō),所需的參數也不同,即,下一個(gè)代碼執行可能需要上一個(gè)代碼. 執行,所以這個(gè)anync軟件包真的值得研究. 他的每種方法都不相同,有時(shí)可能會(huì )得到意想不到的結果.
6. 在mysql中,如果要實(shí)現這樣的效果,即如果它已經(jīng)存在于數據庫中,則忽略它,或者不重復存儲它;如果它不存在于數據庫中,則將其存儲在其中. 用replace替換插入數據的插入. 但是在mongodb中,應該沒(méi)有,或者我還沒(méi)有找到它. 我用這種方法解決了. 我定義了一個(gè)開(kāi)關(guān)來(lái)使該開(kāi)關(guān)為真. 在每次存儲之前,循環(huán)所有數據以查看是否有該數據,如果沒(méi)有,則讓開(kāi)關(guān)變?yōu)榧?,否則,繼續執行,即判斷此時(shí)開(kāi)關(guān)是真還是假,如果為true,則執行插入操作;如果為false,則將其忽略. 這樣可以達到類(lèi)似的效果,否則每次都會(huì )存儲大量重復數據,
7. 該集合的核心是我文件中的common.js. 首先,因為我們要采集,所以我們需要使用請求包. 采集后,我們需要以html格式處理數據,以便可以使用類(lèi)似于jquery的數據. 對于該操作,cheerio包已使用了很長(cháng)時(shí)間,然后在循環(huán)采集時(shí)將使用anync.each方法,因此將使用異步包,
7-1,
通過(guò)采集搜狗微信,我們必須分析搜狗微信的路徑. 每個(gè)官方帳戶(hù)頁(yè)面的路徑都是這樣
?。8%BF%99%E6%89%8D%E6%98%AF%E6%97%A5%E6%9C%AC&ie = utf8&_sug_ = n&_sug_type _ =
這是“這是日本”頁(yè)面的鏈接. 經(jīng)過(guò)分析,所有正式帳戶(hù)的鏈接僅在查詢(xún)后的參數上有所不同,但是查詢(xún)后的參數是什么,實(shí)際上,它是由encodeURIComponent()函數轉換的,之后是“這是日本”,因此相同. 要獲得該官方帳戶(hù),只需對官方帳戶(hù)的名稱(chēng)進(jìn)行編碼并將其動(dòng)態(tài)組合成一個(gè)鏈接,您就可以在訪(fǎng)問(wèn)時(shí)輸入每個(gè)鏈接,但是我只是要求此頁(yè)面此鏈接,

不是

此頁(yè)面,因此進(jìn)一步的處理是獲取當前頁(yè)面的第一內容的鏈接,即href

獲得此鏈接后,您會(huì )發(fā)現他具有自己的加密方法. 實(shí)際上非常簡(jiǎn)單,就是在鏈接中增加三個(gè)安培;更換這三個(gè)放大器;在帶有空鏈接的鏈接中,就好了,這是第一步,獲取每個(gè)官方帳戶(hù)的頁(yè)面鏈接,
7-2
獲取鏈接后,有必要訪(fǎng)問(wèn),即請求,請求每個(gè)地址,獲取每個(gè)地址的內容,但每個(gè)頁(yè)面上顯示的內容不在該頁(yè)面中,即在html結構中,隱藏在js中,因此我們需要通過(guò)常規匹配來(lái)獲取每篇文章的對象,然后循環(huán)訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)的對象以獲取有關(guān)該對象中每篇文章的一些信息,包括標題,縮略圖,摘要,URL,時(shí)間, 5個(gè)字段,但我使用的代碼很爛,而我當時(shí)使用的是
Object.Attribute.foreach(function(item,index){
})
這種可怕的方法,最后要做的就是編寫(xiě)一個(gè)循環(huán)以完全獲取每個(gè)對象,否則只能獲取第一個(gè)對象. 在這里,您應該使用async.each或async.foreach. 可以使用兩種方法中的每一種,并且它們都非常易于使用. 這樣,您將獲得上述每篇文章的基本新聞.
7-3,
第三階段是進(jìn)入每篇文章的詳細信息頁(yè)面,并獲取每篇文章的內容,喜歡的次數,作者,官方帳號,閱讀量和其他數據. 這里遇到的主要問(wèn)題是人們的內容直接位于js中,并且所有img標簽都有問(wèn)題. 它們以這種形式存儲在內容中,但是在這種情況下,由于標簽,html文檔(我不知道此類(lèi)img標簽)存在問(wèn)題,此類(lèi)圖像無(wú)法顯示在我們的網(wǎng)頁(yè)上,因此在這里我們需要進(jìn)行一些處理,替換全部與
python crawler_WeChat公共帳戶(hù)推送信息爬取示例
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 220 次瀏覽 ? 2020-08-07 04:12
更新時(shí)間: 2017年10月23日10:03:08轉載作者: ChaseChoi
下面的編輯器將為您帶來(lái)python crawler_WeChat公共帳戶(hù)推送信息爬取的示例. 編輯認為這還不錯,因此我將與您分享并提供參考. 讓我們跟隨編輯器看看
問(wèn)題描述
使用搜狗的微信搜索來(lái)獲取指定官方帳戶(hù)的最新推送,并將相應的網(wǎng)頁(yè)保存到本地.
注釋
搜狗微信獲取的地址是臨時(shí)鏈接,對時(shí)間敏感.
官方帳戶(hù)是一個(gè)動(dòng)態(tài)網(wǎng)頁(yè)(由JavaScript渲染),并且使用request.get()獲得的內容不收錄推送消息. 在這里,使用selenium + PhantomJS進(jìn)行處理
代碼
#! /usr/bin/env python3
from selenium import webdriver
from datetime import datetime
import bs4, requests
import os, time, sys
# 獲取公眾號鏈接
def getAccountURL(searchURL):
res = requests.get(searchURL)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "lxml")
# 選擇第一個(gè)鏈接
account = soup.select('a[uigs="account_name_0"]')
return account[0]['href']
# 獲取首篇文章的鏈接,如果有驗證碼返回None
def getArticleURL(accountURL):
browser = webdriver.PhantomJS("/Users/chasechoi/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs")
# 進(jìn)入公眾號
browser.get(accountURL)
# 獲取網(wǎng)頁(yè)信息
html = browser.page_source
accountSoup = bs4.BeautifulSoup(html, "lxml")
time.sleep(1)
contents = accountSoup.find_all(hrefs=True)
try:
partitialLink = contents[0]['hrefs']
firstLink = base + partitialLink
except IndexError:
firstLink = None
print('CAPTCHA!')
return firstLink
# 創(chuàng )建文件夾存儲html網(wǎng)頁(yè),以時(shí)間命名
def folderCreation():
path = os.path.join(os.getcwd(), datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
try:
os.makedirs(path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
print("folder not exist!")
return path
# 將html頁(yè)面寫(xiě)入本地
def writeToFile(path, account, title):
myfile = open("{}/{}_{}.html".format(path, account, title), 'wb')
myfile.write(res.content)
myfile.close()
base ='https://mp.weixin.qq.com'
accountList = ['央視新聞', '新浪新聞','鳳凰新聞','羊城晚報']
query = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query='
path = folderCreation()
for index, account in enumerate(accountList):
searchURL = query + account
accountURL = getAccountURL(searchURL)
time.sleep(10)
articleURL = getArticleURL(accountURL)
if articleURL != None:
print("#{}({}/{}): {}".format(account, index+1, len(accountList), accountURL))
# 讀取第一篇文章內容
res = requests.get(articleURL)
res.raise_for_status()
detailPage = bs4.BeautifulSoup(res.text, "lxml")
title = detailPage.title.text
print("標題: {}\n鏈接: {}\n".format(title, articleURL))
writeToFile(path, account, title)
else:
print('{} files successfully written to {}'.format(index, path))
sys.exit()
print('{} files successfully written to {}'.format(len(accountList), path))
參考輸出
端子輸出
查找器
分析
獲取鏈接
首先進(jìn)入搜狗的微信搜索頁(yè)面,在地址欄中提取鏈接的必需部分,將字符串連接到官方帳戶(hù)名,然后生成請求鏈接
對于靜態(tài)網(wǎng)頁(yè),請使用請求獲取html文件,然后使用BeautifulSoup選擇所需的內容
對于動(dòng)態(tài)網(wǎng)頁(yè),請使用selenium + PhantomJS獲取html文件,然后使用BeautifulSoup選擇所需的內容
遇到驗證碼(CAPTCHA)時(shí),輸出提示. 此版本的代碼實(shí)際上并未處理驗證碼,因此在運行程序之前需要手動(dòng)對其進(jìn)行訪(fǎng)問(wèn),以避免驗證碼.
文件寫(xiě)入
使用os.path.join()構造存儲路徑可以提高通用性. 例如,Windows路徑分隔符使用反斜杠(\),而OS X和Linux使用反斜杠(/). 該功能可以根據平臺自動(dòng)轉換.
open()使用b(二進(jìn)制模式)參數來(lái)提高通用性(適用于Windows)
使用datetime.now()獲取當前的命名時(shí)間,并通過(guò)strftime()格式化時(shí)間(函數名稱(chēng)中的f表示格式),
有關(guān)特定用途,請參閱下表(摘自“使用Python自動(dòng)完成鉆孔”)
上面的python爬網(wǎng)程序_WeChat公共帳戶(hù)推送信息爬網(wǎng)示例是編輯器共享的所有內容,希望為您提供參考,也希望可以支持腳本庫. 查看全部
python crawler_WeChat公共帳戶(hù)推送信息爬取示例
更新時(shí)間: 2017年10月23日10:03:08轉載作者: ChaseChoi
下面的編輯器將為您帶來(lái)python crawler_WeChat公共帳戶(hù)推送信息爬取的示例. 編輯認為這還不錯,因此我將與您分享并提供參考. 讓我們跟隨編輯器看看
問(wèn)題描述
使用搜狗的微信搜索來(lái)獲取指定官方帳戶(hù)的最新推送,并將相應的網(wǎng)頁(yè)保存到本地.
注釋
搜狗微信獲取的地址是臨時(shí)鏈接,對時(shí)間敏感.
官方帳戶(hù)是一個(gè)動(dòng)態(tài)網(wǎng)頁(yè)(由JavaScript渲染),并且使用request.get()獲得的內容不收錄推送消息. 在這里,使用selenium + PhantomJS進(jìn)行處理
代碼
#! /usr/bin/env python3
from selenium import webdriver
from datetime import datetime
import bs4, requests
import os, time, sys
# 獲取公眾號鏈接
def getAccountURL(searchURL):
res = requests.get(searchURL)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, "lxml")
# 選擇第一個(gè)鏈接
account = soup.select('a[uigs="account_name_0"]')
return account[0]['href']
# 獲取首篇文章的鏈接,如果有驗證碼返回None
def getArticleURL(accountURL):
browser = webdriver.PhantomJS("/Users/chasechoi/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs")
# 進(jìn)入公眾號
browser.get(accountURL)
# 獲取網(wǎng)頁(yè)信息
html = browser.page_source
accountSoup = bs4.BeautifulSoup(html, "lxml")
time.sleep(1)
contents = accountSoup.find_all(hrefs=True)
try:
partitialLink = contents[0]['hrefs']
firstLink = base + partitialLink
except IndexError:
firstLink = None
print('CAPTCHA!')
return firstLink
# 創(chuàng )建文件夾存儲html網(wǎng)頁(yè),以時(shí)間命名
def folderCreation():
path = os.path.join(os.getcwd(), datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
try:
os.makedirs(path)
except OSError as e:
if e.errno != errno.EEXIST:
raise
print("folder not exist!")
return path
# 將html頁(yè)面寫(xiě)入本地
def writeToFile(path, account, title):
myfile = open("{}/{}_{}.html".format(path, account, title), 'wb')
myfile.write(res.content)
myfile.close()
base ='https://mp.weixin.qq.com'
accountList = ['央視新聞', '新浪新聞','鳳凰新聞','羊城晚報']
query = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query='
path = folderCreation()
for index, account in enumerate(accountList):
searchURL = query + account
accountURL = getAccountURL(searchURL)
time.sleep(10)
articleURL = getArticleURL(accountURL)
if articleURL != None:
print("#{}({}/{}): {}".format(account, index+1, len(accountList), accountURL))
# 讀取第一篇文章內容
res = requests.get(articleURL)
res.raise_for_status()
detailPage = bs4.BeautifulSoup(res.text, "lxml")
title = detailPage.title.text
print("標題: {}\n鏈接: {}\n".format(title, articleURL))
writeToFile(path, account, title)
else:
print('{} files successfully written to {}'.format(index, path))
sys.exit()
print('{} files successfully written to {}'.format(len(accountList), path))
參考輸出
端子輸出

查找器

分析
獲取鏈接
首先進(jìn)入搜狗的微信搜索頁(yè)面,在地址欄中提取鏈接的必需部分,將字符串連接到官方帳戶(hù)名,然后生成請求鏈接
對于靜態(tài)網(wǎng)頁(yè),請使用請求獲取html文件,然后使用BeautifulSoup選擇所需的內容
對于動(dòng)態(tài)網(wǎng)頁(yè),請使用selenium + PhantomJS獲取html文件,然后使用BeautifulSoup選擇所需的內容
遇到驗證碼(CAPTCHA)時(shí),輸出提示. 此版本的代碼實(shí)際上并未處理驗證碼,因此在運行程序之前需要手動(dòng)對其進(jìn)行訪(fǎng)問(wèn),以避免驗證碼.
文件寫(xiě)入
使用os.path.join()構造存儲路徑可以提高通用性. 例如,Windows路徑分隔符使用反斜杠(\),而OS X和Linux使用反斜杠(/). 該功能可以根據平臺自動(dòng)轉換.
open()使用b(二進(jìn)制模式)參數來(lái)提高通用性(適用于Windows)
使用datetime.now()獲取當前的命名時(shí)間,并通過(guò)strftime()格式化時(shí)間(函數名稱(chēng)中的f表示格式),
有關(guān)特定用途,請參閱下表(摘自“使用Python自動(dòng)完成鉆孔”)

上面的python爬網(wǎng)程序_WeChat公共帳戶(hù)推送信息爬網(wǎng)示例是編輯器共享的所有內容,希望為您提供參考,也希望可以支持腳本庫.
[分享] 366tool在線(xiàn)解析微信新型域名防阻塞API接口的實(shí)現原理
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 161 次瀏覽 ? 2020-08-07 01:24
隨著(zhù)智能手機的普及,許多人現在可以直接在手機上閱讀小說(shuō). 但是,并非所有人都會(huì )下載該新穎的應用程序,即使其他人幫助下載該應用程序,這種類(lèi)型的用戶(hù)組也不會(huì )使用它. 那么我們如何解決此類(lèi)用戶(hù)的需求?
許多人目前正在實(shí)施的一種方法是直接共享微信中轉發(fā)小說(shuō)的鏈接. 用戶(hù)可以單擊以閱讀小說(shuō). 當然,這些小說(shuō)不是純粹的福利小說(shuō),還會(huì )增加一些廣告. 鏈接,為官方帳戶(hù)添加一些QR碼等. 但是令企業(yè)感到困擾的是,一旦添加了這些內容,微信就會(huì )迅速阻止和阻止域名. 目前,我們將使用新型域名的防阻塞技術(shù).
在我們共享366TooL開(kāi)發(fā)的幾種防密封解決方案之前. 由于產(chǎn)品不同和操作方法的差異,僅一種防密封解決方案無(wú)法滿(mǎn)足所有客戶(hù)的需求,并且微信規則在不斷變化. ,該程序還需要不斷升級和改進(jìn),以確保防密封程序的有效性和持久性. 今天,我將與您分享微信小說(shuō)的反封鎖解決方案. 新平臺的域名如何在微信中生存更長(cháng)的時(shí)間?
在我們分享小說(shuō)的反阻止解決方案之前,讓我們首先了解為什么微信很容易阻止小說(shuō)的推廣域名. 普遍的原因總結為兩點(diǎn):
第一點(diǎn)是,微信機器人會(huì )自動(dòng)檢測小說(shuō)中的內容. 通常,帶有廣告內容或敏感詞匯的小說(shuō)肯定會(huì )被屏蔽(最新小說(shuō)是什么?)
第二個(gè)原因是同事或其他人的報告在驗證后被微信屏蔽.
分析原因之后,讓我們看一下新穎的使用場(chǎng)景.
通用小說(shuō)平臺由官方帳戶(hù)平臺承載,然后通過(guò)共享綁定到官方帳戶(hù)的商業(yè)域名進(jìn)行推廣. 要閱讀小說(shuō),用戶(hù)必須授權官方帳戶(hù)登錄才能正常閱讀并充值.
這就是重點(diǎn). 新型域名的反封鎖實(shí)際上就是對官方賬號業(yè)務(wù)域名的反封鎖,普通的官方賬號平臺的業(yè)務(wù)域名只能被替換三次. 似乎特別重要的是保護官方帳戶(hù)的企業(yè)域名.
那么我們如何才能有效地保護新穎域名免遭攔截?在這里,我需要解釋. 很多朋友問(wèn)我,使用反封鎖后我的域名是否不會(huì )被封鎖?這不是那么容易. 防阻塞只能延遲或更好地保護域名. 無(wú)法保證永遠不會(huì )有問(wèn)題. 原因很簡(jiǎn)單. 微信技術(shù)團隊不是素食主義者.
366TooL的最新新穎防密封解決方案可以說(shuō)已經(jīng)超過(guò)了市場(chǎng)上所有的防密封解決方案,因為該平臺已經(jīng)通過(guò)了大量的數據測試,反饋,優(yōu)化和比較,最終確定了一個(gè)單獨的防密封解決方案平臺的系統. 查看全部
為什么要使用新穎的域名防阻塞功能?
隨著(zhù)智能手機的普及,許多人現在可以直接在手機上閱讀小說(shuō). 但是,并非所有人都會(huì )下載該新穎的應用程序,即使其他人幫助下載該應用程序,這種類(lèi)型的用戶(hù)組也不會(huì )使用它. 那么我們如何解決此類(lèi)用戶(hù)的需求?
許多人目前正在實(shí)施的一種方法是直接共享微信中轉發(fā)小說(shuō)的鏈接. 用戶(hù)可以單擊以閱讀小說(shuō). 當然,這些小說(shuō)不是純粹的福利小說(shuō),還會(huì )增加一些廣告. 鏈接,為官方帳戶(hù)添加一些QR碼等. 但是令企業(yè)感到困擾的是,一旦添加了這些內容,微信就會(huì )迅速阻止和阻止域名. 目前,我們將使用新型域名的防阻塞技術(shù).
在我們共享366TooL開(kāi)發(fā)的幾種防密封解決方案之前. 由于產(chǎn)品不同和操作方法的差異,僅一種防密封解決方案無(wú)法滿(mǎn)足所有客戶(hù)的需求,并且微信規則在不斷變化. ,該程序還需要不斷升級和改進(jìn),以確保防密封程序的有效性和持久性. 今天,我將與您分享微信小說(shuō)的反封鎖解決方案. 新平臺的域名如何在微信中生存更長(cháng)的時(shí)間?
在我們分享小說(shuō)的反阻止解決方案之前,讓我們首先了解為什么微信很容易阻止小說(shuō)的推廣域名. 普遍的原因總結為兩點(diǎn):
第一點(diǎn)是,微信機器人會(huì )自動(dòng)檢測小說(shuō)中的內容. 通常,帶有廣告內容或敏感詞匯的小說(shuō)肯定會(huì )被屏蔽(最新小說(shuō)是什么?)
第二個(gè)原因是同事或其他人的報告在驗證后被微信屏蔽.
分析原因之后,讓我們看一下新穎的使用場(chǎng)景.
通用小說(shuō)平臺由官方帳戶(hù)平臺承載,然后通過(guò)共享綁定到官方帳戶(hù)的商業(yè)域名進(jìn)行推廣. 要閱讀小說(shuō),用戶(hù)必須授權官方帳戶(hù)登錄才能正常閱讀并充值.
這就是重點(diǎn). 新型域名的反封鎖實(shí)際上就是對官方賬號業(yè)務(wù)域名的反封鎖,普通的官方賬號平臺的業(yè)務(wù)域名只能被替換三次. 似乎特別重要的是保護官方帳戶(hù)的企業(yè)域名.
那么我們如何才能有效地保護新穎域名免遭攔截?在這里,我需要解釋. 很多朋友問(wèn)我,使用反封鎖后我的域名是否不會(huì )被封鎖?這不是那么容易. 防阻塞只能延遲或更好地保護域名. 無(wú)法保證永遠不會(huì )有問(wèn)題. 原因很簡(jiǎn)單. 微信技術(shù)團隊不是素食主義者.
366TooL的最新新穎防密封解決方案可以說(shuō)已經(jīng)超過(guò)了市場(chǎng)上所有的防密封解決方案,因為該平臺已經(jīng)通過(guò)了大量的數據測試,反饋,優(yōu)化和比較,最終確定了一個(gè)單獨的防密封解決方案平臺的系統.
php微信官方帳戶(hù)開(kāi)發(fā)的簡(jiǎn)短答案
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 178 次瀏覽 ? 2020-08-07 01:23
更新: 2018年10月20日15:20:30轉載作者: dq_095
本文主要詳細介紹了針對php微信公眾號開(kāi)發(fā)的簡(jiǎn)短回答問(wèn)題,具有一定的參考價(jià)值,有興趣的朋友可以參考
本文示例共享php微信公眾號開(kāi)發(fā)的簡(jiǎn)短答案問(wèn)題的特定代碼,以供您參考. 具體內容如下
簡(jiǎn)短回答問(wèn)題
核心代碼如下:
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$type = $postObj->MsgType;
$customevent = $postObj->Event;
$latitude = $postObj->Location_X;
$longitude = $postObj->Location_Y;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
%s
0
";
include("coon.php");
if($keyword=="8")
{
$array=array("第5頁(yè)第1個(gè)字"=>"王","第8頁(yè)第1個(gè)字"=>"李","第30頁(yè)第1個(gè)字"=>"周");
$a=array_rand($array,1);
$b=$array[$a];
$contentStr=$a."是什么?";
$sql="INSERT INTO `menu2` (`id` ,`user` ,`sec`,`answer`)VALUES (NULL , '{$fromUsername}', '8','{$b}')";
mysql_query($sql);
}
else
{
$sql="SELECT * FROM `menu2` where `user`= '{$fromUsername}'";
$query=mysql_query($sql);
$rm=mysql_fetch_array($query);
$sec=$rm['sec'];
$answer=$rm['answer'];
if($sec=="8")
{
if($keyword==$answer)
{
$contentStr="你的答案是正確的,視頻代碼下載地址為....";
}
else
{
$contentStr="你的答案不正確,請購買(mǎi)《微信公眾平臺搭建與開(kāi)發(fā)揭秘》";
}
}
else
{
$contentStr="請先輸入8";
}
}
$msgType="text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
}
coon.php: 用于連接到數據庫的代碼如下:
<p> 查看全部
php微信官方帳戶(hù)開(kāi)發(fā)的簡(jiǎn)短答案
更新: 2018年10月20日15:20:30轉載作者: dq_095
本文主要詳細介紹了針對php微信公眾號開(kāi)發(fā)的簡(jiǎn)短回答問(wèn)題,具有一定的參考價(jià)值,有興趣的朋友可以參考
本文示例共享php微信公眾號開(kāi)發(fā)的簡(jiǎn)短答案問(wèn)題的特定代碼,以供您參考. 具體內容如下
簡(jiǎn)短回答問(wèn)題


核心代碼如下:
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$type = $postObj->MsgType;
$customevent = $postObj->Event;
$latitude = $postObj->Location_X;
$longitude = $postObj->Location_Y;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
%s
0
";
include("coon.php");
if($keyword=="8")
{
$array=array("第5頁(yè)第1個(gè)字"=>"王","第8頁(yè)第1個(gè)字"=>"李","第30頁(yè)第1個(gè)字"=>"周");
$a=array_rand($array,1);
$b=$array[$a];
$contentStr=$a."是什么?";
$sql="INSERT INTO `menu2` (`id` ,`user` ,`sec`,`answer`)VALUES (NULL , '{$fromUsername}', '8','{$b}')";
mysql_query($sql);
}
else
{
$sql="SELECT * FROM `menu2` where `user`= '{$fromUsername}'";
$query=mysql_query($sql);
$rm=mysql_fetch_array($query);
$sec=$rm['sec'];
$answer=$rm['answer'];
if($sec=="8")
{
if($keyword==$answer)
{
$contentStr="你的答案是正確的,視頻代碼下載地址為....";
}
else
{
$contentStr="你的答案不正確,請購買(mǎi)《微信公眾平臺搭建與開(kāi)發(fā)揭秘》";
}
}
else
{
$contentStr="請先輸入8";
}
}
$msgType="text";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
}
coon.php: 用于連接到數據庫的代碼如下:
<p>
使用搜狗微信入口制作微信文章采集器API
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 464 次瀏覽 ? 2020-08-06 20:05
搜狗微信門(mén)戶(hù)比其他門(mén)戶(hù)友好得多. 應該是微信搜索引擎和搜狗有合作,所以搜狗可以進(jìn)入微信搜索. 搜狗微信有兩種類(lèi)型,一種是通過(guò)關(guān)鍵詞搜索文章,另一種是通過(guò)關(guān)鍵詞搜索官方賬號,搜索到的微信賬號最多只能獲得十筆最新新聞推送(這意味著(zhù)指定的公眾不能通過(guò)這種方法抓取歷史新聞). 該方法還有一些應用場(chǎng)景,例如獲取大量有關(guān)某個(gè)關(guān)鍵字的文章,例如執行計劃任務(wù),或者以一定間隔抓取某個(gè)微信官方帳戶(hù)的最新十次推送以獲取其最新推送. 它比網(wǎng)上的微信要好得多. 搜狗微信更新也是實(shí)時(shí)且直接相關(guān)的.
我對appium自動(dòng)化和Xposed框架了解不多. 鴉片類(lèi)似于硒. 為了在移動(dòng)終端上進(jìn)行自動(dòng)化測試,您可以模擬點(diǎn)擊. Xposed框架有很多工作要做. Xposed可以執行一些其他功能,而無(wú)需修改apk. 爬蟲(chóng)自然是可能的. 此外,它還可以自動(dòng)抓取紅包,自動(dòng)回復機器人以及修改微步數等騷動(dòng)操作.
我寫(xiě)爬蟲(chóng)游戲已有一段時(shí)間了. 我個(gè)人認為,除了具有防爬網(wǎng)和爬網(wǎng)的效率外,還有另一個(gè)領(lǐng)域很難實(shí)現. 履帶的穩定性和堅固性需要考慮到許多異常情況,并且是合理有效的. 在這一點(diǎn)上,我認為我仍然需要向主要的爬蟲(chóng)學(xué)習. (我覺(jué)得我一直在談?wù)摵芏鄸|西,還沒(méi)有開(kāi)始做我的身體(orz),請不要對那個(gè)覺(jué)得我很冗長(cháng)的大個(gè)子生氣. )
使用搜狗微信編寫(xiě)一個(gè)爬蟲(chóng)界面,代碼非常簡(jiǎn)單,只有兩百行代碼. (我在這里不得不抱怨. 我在python中寫(xiě)太多了. 我總是有一種幻想,我很尷尬,編程很簡(jiǎn)單. 幾行代碼可以實(shí)現非常強大的功能. 這時(shí),我需要編寫(xiě)CPP并冷靜下來(lái),讓自己知道什么是真正的編程. )
以下記錄了編寫(xiě)此采集器界面腳本的過(guò)程:
1. 頁(yè)面請求分析(以官方帳戶(hù)搜索為例):
您可以看到第一個(gè)http請求數據包是我們想要的結果,請檢查其查詢(xún)字符串,如下所示:
它看起來(lái)并不簡(jiǎn)單. 我們獲得以下信息:
請求網(wǎng)址是
請求類(lèi)型為Get
請求參數如上所示
發(fā)現將請求參數tyepe更改為2是為了獲得關(guān)鍵字搜索文章的結果
這相對簡(jiǎn)單
2. 模擬頁(yè)面請求:
我們直接使用url,請求參數params和Google Chrome的用戶(hù)代理請求,發(fā)現我們可以成功獲取所需頁(yè)面的源代碼,然后在下方獲得第一個(gè)官方帳戶(hù)搜索結果. 是的(這意味著(zhù)需要正確指定官方帳戶(hù)名稱(chēng),如果過(guò)于模糊,則有可能獲得類(lèi)似的官方帳戶(hù)結果).
3. 分析頁(yè)面:
首先確定爬行思路,第一步是獲取微信公眾號鏈接,然后通過(guò)微信公眾號鏈接獲取最新的十項推送相關(guān)信息,包括標題,日期,作者,內容摘要,內容鏈接(實(shí)際上,我們發(fā)現,通過(guò)微信推送鏈接,我們可以輕松獲取推送的主要內容,但不包括喜歡和閱讀的次數. 這些數據只能在微信移動(dòng)終端上查看. 如果有一次機會(huì ),它將在下次記錄. 在您的手機微信上下載爬蟲(chóng)的過(guò)程.
因此第一步,我們將獲得官方帳戶(hù)鏈接:
這里我們可以直接使用正則表達式提?。ㄟ@種簡(jiǎn)單方法不需要xpath和bs4. 依賴(lài)標準庫和第三方庫仍然有所不同. )
?。ê鼙副凰∽柚?,請更改一個(gè). )
第二步是根據微信官方賬號鏈接獲取最近十條推送消息:
?。ㄎ抑粚?xiě)過(guò)一篇關(guān)于orz的文章,我會(huì )繼續努力. )
ctlr U查看網(wǎng)頁(yè)的源代碼,并發(fā)現原創(chuàng )信息位于js變量中.
易于處理,繼續常規提取,將json格式的字符串轉換為python中的字典,有兩種方法,一種是使用json.loads方法,第二種是使用內置的eval方法. 兩種方法之間存在一些差異,例如單引號和雙引號. json格式使用雙引號,而python詞典中通常使用單引號.
好的,已經(jīng)獲得了原創(chuàng )的推送信息數據,但是我們不需要很多信息,因此我們可以將其刪除. 值得一提的是,datetime的值是一個(gè)時(shí)間戳,我們需要將其轉換為直觀(guān)的Time表達式.
至此,微信公眾號上的抓取工具已基本解決. 接下來(lái),需要將其封裝為一個(gè)類(lèi). 代碼的主要部分如下.
此外,我還寫(xiě)了關(guān)于關(guān)鍵字搜索文章,AccountAPI,ArticleAPI的爬網(wǎng)程序接口,父類(lèi)是AP類(lèi),并且該API類(lèi)具有query_url,params,header,_get_response,_get_datetime以及其他用于由AccountAPI和ArticleAPI共享.
代碼位于github倉庫中,如果您有興趣,可以看看
放置兩個(gè)屏幕截圖以供使用
?。ˋrticleAPI)
?。ˋccountAPI)
結論:
諸如此類(lèi)的原創(chuàng )爬蟲(chóng)將其稱(chēng)為api,我有點(diǎn)大膽. 這只是一個(gè)小麻煩,很難做到優(yōu)雅,您需要向大兄弟學(xué)習. 查看全部
移動(dòng)客戶(hù)端使用提琴手或查爾斯等其他捕獲工具捕獲數據包,這是一種相對主流的方法(我覺(jué)得是orz),是一種更有效的方法,可以快速捕獲微信官方帳戶(hù)信息和歷史新聞. 該方法也有缺點(diǎn): cookie很快過(guò)期,大約需要半天. 還可以專(zhuān)門(mén)獲取某些官方帳戶(hù)的歷史信息. 通過(guò)模擬微信登錄自動(dòng)獲取cookie似乎非常困難. 我很無(wú)聊,無(wú)法實(shí)現. 看來(lái)微信登錄是TCP協(xié)議?
搜狗微信門(mén)戶(hù)比其他門(mén)戶(hù)友好得多. 應該是微信搜索引擎和搜狗有合作,所以搜狗可以進(jìn)入微信搜索. 搜狗微信有兩種類(lèi)型,一種是通過(guò)關(guān)鍵詞搜索文章,另一種是通過(guò)關(guān)鍵詞搜索官方賬號,搜索到的微信賬號最多只能獲得十筆最新新聞推送(這意味著(zhù)指定的公眾不能通過(guò)這種方法抓取歷史新聞). 該方法還有一些應用場(chǎng)景,例如獲取大量有關(guān)某個(gè)關(guān)鍵字的文章,例如執行計劃任務(wù),或者以一定間隔抓取某個(gè)微信官方帳戶(hù)的最新十次推送以獲取其最新推送. 它比網(wǎng)上的微信要好得多. 搜狗微信更新也是實(shí)時(shí)且直接相關(guān)的.
我對appium自動(dòng)化和Xposed框架了解不多. 鴉片類(lèi)似于硒. 為了在移動(dòng)終端上進(jìn)行自動(dòng)化測試,您可以模擬點(diǎn)擊. Xposed框架有很多工作要做. Xposed可以執行一些其他功能,而無(wú)需修改apk. 爬蟲(chóng)自然是可能的. 此外,它還可以自動(dòng)抓取紅包,自動(dòng)回復機器人以及修改微步數等騷動(dòng)操作.
我寫(xiě)爬蟲(chóng)游戲已有一段時(shí)間了. 我個(gè)人認為,除了具有防爬網(wǎng)和爬網(wǎng)的效率外,還有另一個(gè)領(lǐng)域很難實(shí)現. 履帶的穩定性和堅固性需要考慮到許多異常情況,并且是合理有效的. 在這一點(diǎn)上,我認為我仍然需要向主要的爬蟲(chóng)學(xué)習. (我覺(jué)得我一直在談?wù)摵芏鄸|西,還沒(méi)有開(kāi)始做我的身體(orz),請不要對那個(gè)覺(jué)得我很冗長(cháng)的大個(gè)子生氣. )
使用搜狗微信編寫(xiě)一個(gè)爬蟲(chóng)界面,代碼非常簡(jiǎn)單,只有兩百行代碼. (我在這里不得不抱怨. 我在python中寫(xiě)太多了. 我總是有一種幻想,我很尷尬,編程很簡(jiǎn)單. 幾行代碼可以實(shí)現非常強大的功能. 這時(shí),我需要編寫(xiě)CPP并冷靜下來(lái),讓自己知道什么是真正的編程. )
以下記錄了編寫(xiě)此采集器界面腳本的過(guò)程:
1. 頁(yè)面請求分析(以官方帳戶(hù)搜索為例):
您可以看到第一個(gè)http請求數據包是我們想要的結果,請檢查其查詢(xún)字符串,如下所示:
它看起來(lái)并不簡(jiǎn)單. 我們獲得以下信息:
請求網(wǎng)址是
請求類(lèi)型為Get
請求參數如上所示
發(fā)現將請求參數tyepe更改為2是為了獲得關(guān)鍵字搜索文章的結果
這相對簡(jiǎn)單
2. 模擬頁(yè)面請求:
我們直接使用url,請求參數params和Google Chrome的用戶(hù)代理請求,發(fā)現我們可以成功獲取所需頁(yè)面的源代碼,然后在下方獲得第一個(gè)官方帳戶(hù)搜索結果. 是的(這意味著(zhù)需要正確指定官方帳戶(hù)名稱(chēng),如果過(guò)于模糊,則有可能獲得類(lèi)似的官方帳戶(hù)結果).
3. 分析頁(yè)面:
首先確定爬行思路,第一步是獲取微信公眾號鏈接,然后通過(guò)微信公眾號鏈接獲取最新的十項推送相關(guān)信息,包括標題,日期,作者,內容摘要,內容鏈接(實(shí)際上,我們發(fā)現,通過(guò)微信推送鏈接,我們可以輕松獲取推送的主要內容,但不包括喜歡和閱讀的次數. 這些數據只能在微信移動(dòng)終端上查看. 如果有一次機會(huì ),它將在下次記錄. 在您的手機微信上下載爬蟲(chóng)的過(guò)程.
因此第一步,我們將獲得官方帳戶(hù)鏈接:
這里我們可以直接使用正則表達式提?。ㄟ@種簡(jiǎn)單方法不需要xpath和bs4. 依賴(lài)標準庫和第三方庫仍然有所不同. )
?。ê鼙副凰∽柚?,請更改一個(gè). )
第二步是根據微信官方賬號鏈接獲取最近十條推送消息:
?。ㄎ抑粚?xiě)過(guò)一篇關(guān)于orz的文章,我會(huì )繼續努力. )
ctlr U查看網(wǎng)頁(yè)的源代碼,并發(fā)現原創(chuàng )信息位于js變量中.
易于處理,繼續常規提取,將json格式的字符串轉換為python中的字典,有兩種方法,一種是使用json.loads方法,第二種是使用內置的eval方法. 兩種方法之間存在一些差異,例如單引號和雙引號. json格式使用雙引號,而python詞典中通常使用單引號.
好的,已經(jīng)獲得了原創(chuàng )的推送信息數據,但是我們不需要很多信息,因此我們可以將其刪除. 值得一提的是,datetime的值是一個(gè)時(shí)間戳,我們需要將其轉換為直觀(guān)的Time表達式.
至此,微信公眾號上的抓取工具已基本解決. 接下來(lái),需要將其封裝為一個(gè)類(lèi). 代碼的主要部分如下.
此外,我還寫(xiě)了關(guān)于關(guān)鍵字搜索文章,AccountAPI,ArticleAPI的爬網(wǎng)程序接口,父類(lèi)是AP類(lèi),并且該API類(lèi)具有query_url,params,header,_get_response,_get_datetime以及其他用于由AccountAPI和ArticleAPI共享.
代碼位于github倉庫中,如果您有興趣,可以看看
放置兩個(gè)屏幕截圖以供使用
?。ˋrticleAPI)
?。ˋccountAPI)
結論:
諸如此類(lèi)的原創(chuàng )爬蟲(chóng)將其稱(chēng)為api,我有點(diǎn)大膽. 這只是一個(gè)小麻煩,很難做到優(yōu)雅,您需要向大兄弟學(xué)習.
微信公眾號文章檢索方法摘要(第1部分)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 299 次瀏覽 ? 2020-08-06 18:25
爬蟲(chóng)
我經(jīng)常有一些需要幫助的人,他們在搜尋公共帳戶(hù)文章方面需要幫助. 這次我將總結各種方法.
目前,有三種主要的微信公眾號抓取方法:
通過(guò)在微信官方平臺上引用文章界面來(lái)爬網(wǎng)第三方官方帳戶(hù)文章聚合網(wǎng)站,并分析微信應用程序的界面以通過(guò)微信公眾平臺訪(fǎng)問(wèn)官方帳戶(hù)文章,并通過(guò)第三方平臺進(jìn)行爬網(wǎng),派對官方帳戶(hù)文章匯總網(wǎng)站
微信公眾號文章未提供外部搜索功能. 直到2013年,在微信對搜狗進(jìn)行投資之后,搜狗搜索才訪(fǎng)問(wèn)了微信官方賬戶(hù)數據. 從那時(shí)起,您可以使用搜狗搜索瀏覽或查詢(xún)相關(guān)的官方帳戶(hù)和文章.
域名是:
搜狗微信
您可以直接搜索官方帳戶(hù)或文章的關(guān)鍵字,一些流行的官方帳戶(hù)會(huì )及時(shí)更新,幾乎與微信同步.
官方帳戶(hù)搜索
因此,您可以使用搜狗微信界面對一些流行的官方賬戶(hù)進(jìn)行爬網(wǎng),但是卻無(wú)法搜索到某些利基官方賬戶(hù),并且搜狗的反爬網(wǎng)機制更頻繁地更新,并且獲取數據的界面變化更快,通常會(huì )在兩三個(gè)月內進(jìn)行調整,這使得履帶易于懸掛. 建議使用硒進(jìn)行爬網(wǎng). 此外,搜狗還對每個(gè)IP都有訪(fǎng)問(wèn)限制. 頻率過(guò)高的IP的訪(fǎng)問(wèn)將被阻止24小時(shí),您需要購買(mǎi)一個(gè)IP池來(lái)處理它.
還有一些其他公共帳戶(hù)文章聚合網(wǎng)站(例如門(mén)戶(hù))未及時(shí)更新或未包括在內. 畢竟,搜狗的兒子不好. 通過(guò)微信公眾平臺引用文章界面
此界面是相對隱藏的,不能匿名訪(fǎng)問(wèn). 必須有一個(gè)官方帳戶(hù). 最好注冊一個(gè)新的官方帳戶(hù),以免被阻止.
讓我們從特定步驟開(kāi)始: 首先登錄您的微信官方帳戶(hù),在您輸入的主頁(yè)上選擇“創(chuàng )建群發(fā)”,然后單擊自行創(chuàng )建的圖形,然后在文章編輯工具欄中找到超鏈接,如下所示: 如下所示:
單擊超鏈接
單擊超鏈接按鈕,將彈出一個(gè)對話(huà)框,選擇鏈接輸入法以查找文章,如下所示:
查找文章
您可以在此處輸入官方帳戶(hù)的名稱(chēng),然后按Enter鍵,微信將返回匹配的官方帳戶(hù)列表,如下所示:
搜索官方帳戶(hù)
然后單擊您要獲取的官方帳戶(hù),然后將顯示特定文章的列表. 它已經(jīng)按時(shí)間倒序排列,而最新的文章是第一篇. 如下圖所示:
文章列表
微信的傳呼機制很奇怪. 每個(gè)官方帳戶(hù)的每個(gè)頁(yè)面上顯示的數據項數量是不同的. 分頁(yè)爬網(wǎng)時(shí)需要處理它.
通過(guò)chrome分析網(wǎng)絡(luò )請求的數據,我們基本獲得了所需的數據,文章鏈接,封面,發(fā)行日期,字幕等,如下所示:
網(wǎng)絡(luò )請求數據
好的,此爬網(wǎng)方法的原理已經(jīng)完成,讓我們開(kāi)始實(shí)際的操作.
由于微信公眾平臺的登錄驗證比較嚴格,在輸入密碼后,手機必須掃描密碼進(jìn)行確認登錄,因此最好使用硒進(jìn)行自動(dòng)化. 我不會(huì )列出特定微信界面的分析過(guò)程,而是直接發(fā)布代碼:
import re
import time
import random
import traceback
import requests
from selenium import webdriver
class Spider(object):
'''
微信公眾號文章爬蟲(chóng)
'''
def __init__(self):
# 微信公眾號賬號
self.account = '286394973@qq.com'
# 微信公眾號密碼
self.pwd = 'lei4649861'
def create_driver(self):
'''
初始化 webdriver
'''
options = webdriver.ChromeOptions()
# 禁用gpu加速,防止出一些未知bug
options.add_argument('--disable-gpu')
# 這里我用 chromedriver 作為 webdriver
# 可以去 http://chromedriver.chromium.org/downloads 下載你的chrome對應版本
self.driver = webdriver.Chrome(executable_path='./chromedriver', chrome_options=options)
# 設置一個(gè)隱性等待 5s
self.driver.implicitly_wait(5)
def log(self, msg):
'''
格式化打印
'''
print('------ %s ------' % msg)
def login(self):
'''
登錄拿 cookies
'''
try:
self.create_driver()
# 訪(fǎng)問(wèn)微信公眾平臺
self.driver.get('https://mp.weixin.qq.com/')
# 等待網(wǎng)頁(yè)加載完畢
time.sleep(3)
# 輸入賬號
self.driver.find_element_by_xpath("./*//input[@name='account']").clear()
self.driver.find_element_by_xpath("./*//input[@name='account']").send_keys(self.account)
# 輸入密碼
self.driver.find_element_by_xpath("./*//input[@name='password']").clear()
self.driver.find_element_by_xpath("./*//input[@name='password']").send_keys(self.pwd)
# 點(diǎn)擊登錄
self.driver.find_elements_by_class_name('btn_login')[0].click()
self.log("請拿手機掃碼二維碼登錄公眾號")
# 等待手機掃描
time.sleep(10)
self.log("登錄成功")
# 獲取cookies 然后保存到變量上,后面要用
self.cookies = dict([[x['name'], x['value']] for x in self.driver.get_cookies()])
except Exception as e:
traceback.print_exc()
finally:
# 退出 chorme
self.driver.quit()
def get_article(self, query=''):
try:
url = 'https://mp.weixin.qq.com'
# 設置headers
headers = {
"HOST": "mp.weixin.qq.com",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"
}
# 登錄之后的微信公眾號首頁(yè)url變化為:https://mp.weixin.qq.com/cgi-b ... 51598,
# 從這里獲取token信息
response = requests.get(url=url, cookies=self.cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
time.sleep(2)
self.log('正在查詢(xún)[ %s ]相關(guān)公眾號' % query)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
# 搜索微信公眾號接口需要傳入的參數,
# 有三個(gè)變量:微信公眾號token、隨機數random、搜索的微信公眾號名字
params = {
'action': 'search_biz',
'token': token,
'random': random.random(),
'query': query,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0',
'count': '5'
}
# 打開(kāi)搜索微信公眾號接口地址,需要傳入相關(guān)參數信息如:cookies、params、headers
response = requests.get(search_url, cookies=self.cookies, headers=headers, params=params)
time.sleep(2)
# 取搜索結果中的第一個(gè)公眾號
lists = response.json().get('list')[0]
# 獲取這個(gè)公眾號的fakeid,后面爬取公眾號文章需要此字段
fakeid = lists.get('fakeid')
nickname = lists.get('nickname')
# 微信公眾號文章接口地址
search_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
# 搜索文章需要傳入幾個(gè)參數:登錄的公眾號token、要爬取文章的公眾號fakeid、隨機數random
params = {
'action': 'list_ex',
'token': token,
'random': random.random(),
'fakeid': fakeid,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0', # 不同頁(yè),此參數變化,變化規則為每頁(yè)加5
'count': '5',
'query': '',
'type': '9'
}
self.log('正在查詢(xún)公眾號[ %s ]相關(guān)文章' % nickname)
# 打開(kāi)搜索的微信公眾號文章列表頁(yè)
response = requests.get(search_url, cookies=self.cookies, headers=headers, params=params)
time.sleep(2)
for per in response.json().get('app_msg_list', []):
print('title ---> %s' % per.get('title'))
print('link ---> %s' % per.get('link'))
# print('cover ---> %s' % per.get('cover'))
except Exception as e:
traceback.print_exc()
if __name__ == '__main__':
spider = Spider()
spider.login()
spider.get_article('python')
該代碼僅用于學(xué)習,不適用于分頁(yè)查詢(xún).
根據網(wǎng)民的說(shuō)法,該接口也有訪(fǎng)問(wèn)頻率限制. 一天幾百次不是問(wèn)題. 如果訪(fǎng)問(wèn)速度太快或次數太多,它將被阻止24小時(shí). 查看全部

爬蟲(chóng)
我經(jīng)常有一些需要幫助的人,他們在搜尋公共帳戶(hù)文章方面需要幫助. 這次我將總結各種方法.
目前,有三種主要的微信公眾號抓取方法:
通過(guò)在微信官方平臺上引用文章界面來(lái)爬網(wǎng)第三方官方帳戶(hù)文章聚合網(wǎng)站,并分析微信應用程序的界面以通過(guò)微信公眾平臺訪(fǎng)問(wèn)官方帳戶(hù)文章,并通過(guò)第三方平臺進(jìn)行爬網(wǎng),派對官方帳戶(hù)文章匯總網(wǎng)站
微信公眾號文章未提供外部搜索功能. 直到2013年,在微信對搜狗進(jìn)行投資之后,搜狗搜索才訪(fǎng)問(wèn)了微信官方賬戶(hù)數據. 從那時(shí)起,您可以使用搜狗搜索瀏覽或查詢(xún)相關(guān)的官方帳戶(hù)和文章.
域名是:

搜狗微信
您可以直接搜索官方帳戶(hù)或文章的關(guān)鍵字,一些流行的官方帳戶(hù)會(huì )及時(shí)更新,幾乎與微信同步.

官方帳戶(hù)搜索
因此,您可以使用搜狗微信界面對一些流行的官方賬戶(hù)進(jìn)行爬網(wǎng),但是卻無(wú)法搜索到某些利基官方賬戶(hù),并且搜狗的反爬網(wǎng)機制更頻繁地更新,并且獲取數據的界面變化更快,通常會(huì )在兩三個(gè)月內進(jìn)行調整,這使得履帶易于懸掛. 建議使用硒進(jìn)行爬網(wǎng). 此外,搜狗還對每個(gè)IP都有訪(fǎng)問(wèn)限制. 頻率過(guò)高的IP的訪(fǎng)問(wèn)將被阻止24小時(shí),您需要購買(mǎi)一個(gè)IP池來(lái)處理它.
還有一些其他公共帳戶(hù)文章聚合網(wǎng)站(例如門(mén)戶(hù))未及時(shí)更新或未包括在內. 畢竟,搜狗的兒子不好. 通過(guò)微信公眾平臺引用文章界面
此界面是相對隱藏的,不能匿名訪(fǎng)問(wèn). 必須有一個(gè)官方帳戶(hù). 最好注冊一個(gè)新的官方帳戶(hù),以免被阻止.
讓我們從特定步驟開(kāi)始: 首先登錄您的微信官方帳戶(hù),在您輸入的主頁(yè)上選擇“創(chuàng )建群發(fā)”,然后單擊自行創(chuàng )建的圖形,然后在文章編輯工具欄中找到超鏈接,如下所示: 如下所示:

單擊超鏈接
單擊超鏈接按鈕,將彈出一個(gè)對話(huà)框,選擇鏈接輸入法以查找文章,如下所示:

查找文章
您可以在此處輸入官方帳戶(hù)的名稱(chēng),然后按Enter鍵,微信將返回匹配的官方帳戶(hù)列表,如下所示:

搜索官方帳戶(hù)
然后單擊您要獲取的官方帳戶(hù),然后將顯示特定文章的列表. 它已經(jīng)按時(shí)間倒序排列,而最新的文章是第一篇. 如下圖所示:

文章列表
微信的傳呼機制很奇怪. 每個(gè)官方帳戶(hù)的每個(gè)頁(yè)面上顯示的數據項數量是不同的. 分頁(yè)爬網(wǎng)時(shí)需要處理它.
通過(guò)chrome分析網(wǎng)絡(luò )請求的數據,我們基本獲得了所需的數據,文章鏈接,封面,發(fā)行日期,字幕等,如下所示:

網(wǎng)絡(luò )請求數據
好的,此爬網(wǎng)方法的原理已經(jīng)完成,讓我們開(kāi)始實(shí)際的操作.
由于微信公眾平臺的登錄驗證比較嚴格,在輸入密碼后,手機必須掃描密碼進(jìn)行確認登錄,因此最好使用硒進(jìn)行自動(dòng)化. 我不會(huì )列出特定微信界面的分析過(guò)程,而是直接發(fā)布代碼:
import re
import time
import random
import traceback
import requests
from selenium import webdriver
class Spider(object):
'''
微信公眾號文章爬蟲(chóng)
'''
def __init__(self):
# 微信公眾號賬號
self.account = '286394973@qq.com'
# 微信公眾號密碼
self.pwd = 'lei4649861'
def create_driver(self):
'''
初始化 webdriver
'''
options = webdriver.ChromeOptions()
# 禁用gpu加速,防止出一些未知bug
options.add_argument('--disable-gpu')
# 這里我用 chromedriver 作為 webdriver
# 可以去 http://chromedriver.chromium.org/downloads 下載你的chrome對應版本
self.driver = webdriver.Chrome(executable_path='./chromedriver', chrome_options=options)
# 設置一個(gè)隱性等待 5s
self.driver.implicitly_wait(5)
def log(self, msg):
'''
格式化打印
'''
print('------ %s ------' % msg)
def login(self):
'''
登錄拿 cookies
'''
try:
self.create_driver()
# 訪(fǎng)問(wèn)微信公眾平臺
self.driver.get('https://mp.weixin.qq.com/')
# 等待網(wǎng)頁(yè)加載完畢
time.sleep(3)
# 輸入賬號
self.driver.find_element_by_xpath("./*//input[@name='account']").clear()
self.driver.find_element_by_xpath("./*//input[@name='account']").send_keys(self.account)
# 輸入密碼
self.driver.find_element_by_xpath("./*//input[@name='password']").clear()
self.driver.find_element_by_xpath("./*//input[@name='password']").send_keys(self.pwd)
# 點(diǎn)擊登錄
self.driver.find_elements_by_class_name('btn_login')[0].click()
self.log("請拿手機掃碼二維碼登錄公眾號")
# 等待手機掃描
time.sleep(10)
self.log("登錄成功")
# 獲取cookies 然后保存到變量上,后面要用
self.cookies = dict([[x['name'], x['value']] for x in self.driver.get_cookies()])
except Exception as e:
traceback.print_exc()
finally:
# 退出 chorme
self.driver.quit()
def get_article(self, query=''):
try:
url = 'https://mp.weixin.qq.com'
# 設置headers
headers = {
"HOST": "mp.weixin.qq.com",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"
}
# 登錄之后的微信公眾號首頁(yè)url變化為:https://mp.weixin.qq.com/cgi-b ... 51598,
# 從這里獲取token信息
response = requests.get(url=url, cookies=self.cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]
time.sleep(2)
self.log('正在查詢(xún)[ %s ]相關(guān)公眾號' % query)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
# 搜索微信公眾號接口需要傳入的參數,
# 有三個(gè)變量:微信公眾號token、隨機數random、搜索的微信公眾號名字
params = {
'action': 'search_biz',
'token': token,
'random': random.random(),
'query': query,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0',
'count': '5'
}
# 打開(kāi)搜索微信公眾號接口地址,需要傳入相關(guān)參數信息如:cookies、params、headers
response = requests.get(search_url, cookies=self.cookies, headers=headers, params=params)
time.sleep(2)
# 取搜索結果中的第一個(gè)公眾號
lists = response.json().get('list')[0]
# 獲取這個(gè)公眾號的fakeid,后面爬取公眾號文章需要此字段
fakeid = lists.get('fakeid')
nickname = lists.get('nickname')
# 微信公眾號文章接口地址
search_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
# 搜索文章需要傳入幾個(gè)參數:登錄的公眾號token、要爬取文章的公眾號fakeid、隨機數random
params = {
'action': 'list_ex',
'token': token,
'random': random.random(),
'fakeid': fakeid,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1',
'begin': '0', # 不同頁(yè),此參數變化,變化規則為每頁(yè)加5
'count': '5',
'query': '',
'type': '9'
}
self.log('正在查詢(xún)公眾號[ %s ]相關(guān)文章' % nickname)
# 打開(kāi)搜索的微信公眾號文章列表頁(yè)
response = requests.get(search_url, cookies=self.cookies, headers=headers, params=params)
time.sleep(2)
for per in response.json().get('app_msg_list', []):
print('title ---> %s' % per.get('title'))
print('link ---> %s' % per.get('link'))
# print('cover ---> %s' % per.get('cover'))
except Exception as e:
traceback.print_exc()
if __name__ == '__main__':
spider = Spider()
spider.login()
spider.get_article('python')
該代碼僅用于學(xué)習,不適用于分頁(yè)查詢(xún).
根據網(wǎng)民的說(shuō)法,該接口也有訪(fǎng)問(wèn)頻率限制. 一天幾百次不是問(wèn)題. 如果訪(fǎng)問(wèn)速度太快或次數太多,它將被阻止24小時(shí).
微信公眾號內容采集教程. docx29頁(yè)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 365 次瀏覽 ? 2020-08-06 14:14
打開(kāi)網(wǎng)頁(yè)后,默認顯示“熱門(mén)”文章. 向下滾動(dòng)頁(yè)面,找到并單擊“加載更多內容”按鈕,在操作提示框中選擇“更多操作”,微信公眾號文章正文采集步驟3,選擇“循環(huán)點(diǎn)擊單個(gè)元素”,創(chuàng )建頁(yè)面翻轉循環(huán)微信公眾號文章文本采集步驟4由于此網(wǎng)頁(yè)涉及Ajax技術(shù),因此我們需要設置一些高級選項. 選擇“單擊元素”步驟,打開(kāi)“高級選項”,選中“ Ajax加載數據”,將時(shí)間設置為“ 2秒”,微信公眾號文章正文采集步驟5注意: AJAX是延遲加載和異步更新的腳本通過(guò)在后臺與服務(wù)器進(jìn)行少量數據交換的技術(shù),可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下更新網(wǎng)頁(yè)的特定部分. 性能特點(diǎn): 當您單擊網(wǎng)頁(yè)中的一個(gè)選項時(shí),大多數網(wǎng)站的URL不會(huì )更改. b. 該網(wǎng)頁(yè)未完全加載,僅部分加載了數據并進(jìn)行了更改. 驗證方法: 單擊該操作后,URL輸入欄將不會(huì )在瀏覽器的加載狀態(tài)或轉彎狀態(tài)下顯示. 觀(guān)察該網(wǎng)頁(yè),我們發(fā)現單擊“加載更多內容” 5次后,頁(yè)面將加載到底部,總共顯示100條文章. 因此,我們將整個(gè)“循環(huán)旋轉”步驟設置為執行5次. 選擇“循環(huán)翻頁(yè)”步驟,打開(kāi)“高級選項”,打開(kāi)“滿(mǎn)足以下條件時(shí)退出循環(huán)”,將循環(huán)數設置為“ 5”,單擊“確定”,微信公眾號文章正文采集步驟6第3步: 創(chuàng )建一個(gè)列表循環(huán)并提取數據HYPERLINK“ / article / javascript :;”移動(dòng)鼠標,然后選擇頁(yè)面上的第一個(gè)文章鏈接.
系統將自動(dòng)識別相似的鏈接. 在操作提示框中,選擇“全選”微信公眾號文章正文采集步驟7,選擇“單擊每個(gè)鏈接”,微信公眾號文章正文采集步驟8,系統將自動(dòng)進(jìn)入文章明細頁(yè)面. 單擊要采集的字段(在此處單擊文章標題),然后在操作提示框中選擇“采集此元素的文本”. 文章發(fā)布時(shí)間和文章來(lái)源字段的采集方法與微信公眾號文章正文采集步驟9相同. 接下來(lái),將采集文章正文. 首先點(diǎn)擊文章正文的第一段,系統會(huì )自動(dòng)識別頁(yè)面中的相似元素,選擇“全選”微信公眾號文章正文采集步驟105),可以看到所有正文段落均被選中并轉綠色. 選擇“采集以下元素文本”微信公眾號文章正文采集步驟11注意: 在字段表中,您可以自定義字段以修改微信公眾號文章正文采集步驟126)上述操作之后,正文將全部采集的(默認是文本的每個(gè)段落都是一個(gè)單元格). 一般來(lái)說(shuō),我們希望將采集的文本合并到同一單元格中. 單擊“自定義數據字段”按鈕,選擇“自定義數據合并方法”,選中“多次提取并將同一字段合并到一行,即,追加到同一字段,例如文本頁(yè)面合并”,然后單擊“確定”,微信公眾號文章正文采集步驟13,“自定義數據字段”按鈕選擇“自定義數據合并方法”,微信公眾號文章正文采集步驟14,微信公眾號文章正文采集步驟如圖15所示. : 修改Xpath1)選擇整個(gè)“循環(huán)步驟”,打開(kāi)“高級選項”,可以看到由彩云生成的默認值是固定元素列表,該列表定位了前20條微信公眾號文章正文采集步驟162的鏈接)在Firefox中打開(kāi)采集網(wǎng)頁(yè)并觀(guān)察源代碼.
我們發(fā)現通過(guò)此Xpath: // DIV [@ class ='main-left'] / DIV [3] / UL / LI / DIV [2] / H3 [1] / A,在頁(yè)面All中需要微信公眾號文章正文采集步驟中有100條微信公眾號文章,在步驟173)將修改后的Xpath復制并粘貼到優(yōu)采云中顯示的位置,然后單擊“確定”,微信公眾號文章正文采集步驟18步驟5 : 我們將繼續觀(guān)察流程圖結構的修改. 5次單擊“加載更多內容”后,此頁(yè)面將加載所有100條文章. 因此,我們的配置規則的思想是首先建立一個(gè)翻頁(yè)周期,加載全部100條文章,然后創(chuàng )建一個(gè)周期列表并提取數據1)選擇整個(gè)``循環(huán)''步驟并將其拖出``循環(huán)''頁(yè)面翻頁(yè)”步驟. 如果您不執行此操作,將會(huì )有很多重復的數據. 微信公眾號文章正文采集步驟19拖動(dòng)完成后,如下圖所示,微信公眾號文章正文采集步驟20步驟6: 數據采集和導出1)單擊左上角單擊角上的“保存”,然后點(diǎn)擊“開(kāi)始采集”,選擇“開(kāi)始本地采集”,微信公眾號文本采集步驟21. 采集完成后,彈出提示,選擇“導出數據”,選擇“適當的導出方式”,將采集的數據導出到微信公眾號文章正文采集步驟223)這里我們選擇excel作為導出格式. 數據導出后,如下圖所示,微信公眾號文章正文采集步驟23如上圖所示,部分文章的正文未采集.
這是因為系統自動(dòng)生成了文章正文的循環(huán)列表的Xpath: // [@ id =“ js_content”] / P,因此無(wú)法找到本文的正文. 將Xpath修改為: // [@@ =“ =” js_content“] // P,所有文章正文都可以位于微信公眾號文章正文采集步驟23微信公眾號文章正文采集步驟24說(shuō)明: 本文的方法是僅適合采集搜狗微信文章正文內容. 無(wú)法在文本中采集圖片. 如果需要采集圖片,則需要在此過(guò)程中添加判斷條件. 相關(guān)集合教程: 京東商品信息集合豆瓣電影簡(jiǎn)短評論集合58全市信息集合優(yōu)采云-一個(gè)由70萬(wàn)用戶(hù)選擇的網(wǎng)絡(luò )數據采集器. 1.操作簡(jiǎn)單,任何人都可以使用: 不需要技術(shù)背景,可以通過(guò)瀏覽Internet進(jìn)行采集. 完全可視化該過(guò)程,單擊鼠標以完成操作,您可以在2分鐘內快速上手. 2.強大的功能,可以在任何網(wǎng)站上采集: 單擊,登錄,翻頁(yè),識別驗證碼,瀑布流,Ajax腳本異步加載數據頁(yè),所有這些都可以通過(guò)簡(jiǎn)單的設置進(jìn)行采集. 3.云采集,也可以關(guān)閉. 配置采集任務(wù)后,可以將其關(guān)閉,并可以在云中執行該任務(wù). 龐大的云采集集群不間斷運行24 * 7,因此無(wú)需擔心IP被阻塞和網(wǎng)絡(luò )中斷. 4.免費功能+增值服務(wù),可以按需選擇. 免費版具有所有功能,可以滿(mǎn)足用戶(hù)的基本采集需求. 同時(shí),建立了一些增值服務(wù)(例如私有云)以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求. 查看全部
優(yōu)采云·云采集服務(wù)平臺微信公眾號文章文本采集教程很多時(shí)候,我們需要采集網(wǎng)頁(yè)文章的文本. 本文以搜狗微信文章為例,介紹利用優(yōu)采云采集網(wǎng)頁(yè)正文的方法. 文章的正文通常包括文本和圖片. 本文僅演示了在正文中采集文本的方法,圖像采集將在另一個(gè)教程中進(jìn)行討論. 本文將采集以下字段: 文章標題,時(shí)間,來(lái)源和正文(正文中的所有文本都將合并到excel單元格中,并且將使用“自定義數據合并方法”功能,請注意). 以下是“自定義數據合并方法”的詳細教程,您可以首先學(xué)習: /tutorialdetail-1/zdyhb_7.html集合網(wǎng)站: /使用功能點(diǎn): 分頁(yè)列表信息集合“ HYPERLINK” /tutorial/fylb-70.aspx ?t = 1“ /tutorial/fylb-70.aspx?t=1Xpath HYPERLINK” / search?query = XPath“ / search?query = XPathAJAX點(diǎn)擊并翻頁(yè)HYPERLINK” /tutorialdetail-1/ajaxdjfy_7.html“ / tutorialdetail- 1 / ajaxdjfy_7.html步驟1: 創(chuàng )建采集任務(wù)1)進(jìn)入主界面,選擇“自定義模式”微信公眾號文章正文采集步驟12)復制要采集的URL并粘貼到網(wǎng)站輸入框中,單擊“保存”. URL”微信公眾號2文本采集步驟2 HYPERLINK” / article / javascript :;”步驟2: 創(chuàng )建翻頁(yè)循環(huán)在頁(yè)面的右上角,打開(kāi)“ Process”以顯示“ Process Designer”和“ Customize Current Operation”的兩個(gè)部分.
打開(kāi)網(wǎng)頁(yè)后,默認顯示“熱門(mén)”文章. 向下滾動(dòng)頁(yè)面,找到并單擊“加載更多內容”按鈕,在操作提示框中選擇“更多操作”,微信公眾號文章正文采集步驟3,選擇“循環(huán)點(diǎn)擊單個(gè)元素”,創(chuàng )建頁(yè)面翻轉循環(huán)微信公眾號文章文本采集步驟4由于此網(wǎng)頁(yè)涉及Ajax技術(shù),因此我們需要設置一些高級選項. 選擇“單擊元素”步驟,打開(kāi)“高級選項”,選中“ Ajax加載數據”,將時(shí)間設置為“ 2秒”,微信公眾號文章正文采集步驟5注意: AJAX是延遲加載和異步更新的腳本通過(guò)在后臺與服務(wù)器進(jìn)行少量數據交換的技術(shù),可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下更新網(wǎng)頁(yè)的特定部分. 性能特點(diǎn): 當您單擊網(wǎng)頁(yè)中的一個(gè)選項時(shí),大多數網(wǎng)站的URL不會(huì )更改. b. 該網(wǎng)頁(yè)未完全加載,僅部分加載了數據并進(jìn)行了更改. 驗證方法: 單擊該操作后,URL輸入欄將不會(huì )在瀏覽器的加載狀態(tài)或轉彎狀態(tài)下顯示. 觀(guān)察該網(wǎng)頁(yè),我們發(fā)現單擊“加載更多內容” 5次后,頁(yè)面將加載到底部,總共顯示100條文章. 因此,我們將整個(gè)“循環(huán)旋轉”步驟設置為執行5次. 選擇“循環(huán)翻頁(yè)”步驟,打開(kāi)“高級選項”,打開(kāi)“滿(mǎn)足以下條件時(shí)退出循環(huán)”,將循環(huán)數設置為“ 5”,單擊“確定”,微信公眾號文章正文采集步驟6第3步: 創(chuàng )建一個(gè)列表循環(huán)并提取數據HYPERLINK“ / article / javascript :;”移動(dòng)鼠標,然后選擇頁(yè)面上的第一個(gè)文章鏈接.
系統將自動(dòng)識別相似的鏈接. 在操作提示框中,選擇“全選”微信公眾號文章正文采集步驟7,選擇“單擊每個(gè)鏈接”,微信公眾號文章正文采集步驟8,系統將自動(dòng)進(jìn)入文章明細頁(yè)面. 單擊要采集的字段(在此處單擊文章標題),然后在操作提示框中選擇“采集此元素的文本”. 文章發(fā)布時(shí)間和文章來(lái)源字段的采集方法與微信公眾號文章正文采集步驟9相同. 接下來(lái),將采集文章正文. 首先點(diǎn)擊文章正文的第一段,系統會(huì )自動(dòng)識別頁(yè)面中的相似元素,選擇“全選”微信公眾號文章正文采集步驟105),可以看到所有正文段落均被選中并轉綠色. 選擇“采集以下元素文本”微信公眾號文章正文采集步驟11注意: 在字段表中,您可以自定義字段以修改微信公眾號文章正文采集步驟126)上述操作之后,正文將全部采集的(默認是文本的每個(gè)段落都是一個(gè)單元格). 一般來(lái)說(shuō),我們希望將采集的文本合并到同一單元格中. 單擊“自定義數據字段”按鈕,選擇“自定義數據合并方法”,選中“多次提取并將同一字段合并到一行,即,追加到同一字段,例如文本頁(yè)面合并”,然后單擊“確定”,微信公眾號文章正文采集步驟13,“自定義數據字段”按鈕選擇“自定義數據合并方法”,微信公眾號文章正文采集步驟14,微信公眾號文章正文采集步驟如圖15所示. : 修改Xpath1)選擇整個(gè)“循環(huán)步驟”,打開(kāi)“高級選項”,可以看到由彩云生成的默認值是固定元素列表,該列表定位了前20條微信公眾號文章正文采集步驟162的鏈接)在Firefox中打開(kāi)采集網(wǎng)頁(yè)并觀(guān)察源代碼.
我們發(fā)現通過(guò)此Xpath: // DIV [@ class ='main-left'] / DIV [3] / UL / LI / DIV [2] / H3 [1] / A,在頁(yè)面All中需要微信公眾號文章正文采集步驟中有100條微信公眾號文章,在步驟173)將修改后的Xpath復制并粘貼到優(yōu)采云中顯示的位置,然后單擊“確定”,微信公眾號文章正文采集步驟18步驟5 : 我們將繼續觀(guān)察流程圖結構的修改. 5次單擊“加載更多內容”后,此頁(yè)面將加載所有100條文章. 因此,我們的配置規則的思想是首先建立一個(gè)翻頁(yè)周期,加載全部100條文章,然后創(chuàng )建一個(gè)周期列表并提取數據1)選擇整個(gè)``循環(huán)''步驟并將其拖出``循環(huán)''頁(yè)面翻頁(yè)”步驟. 如果您不執行此操作,將會(huì )有很多重復的數據. 微信公眾號文章正文采集步驟19拖動(dòng)完成后,如下圖所示,微信公眾號文章正文采集步驟20步驟6: 數據采集和導出1)單擊左上角單擊角上的“保存”,然后點(diǎn)擊“開(kāi)始采集”,選擇“開(kāi)始本地采集”,微信公眾號文本采集步驟21. 采集完成后,彈出提示,選擇“導出數據”,選擇“適當的導出方式”,將采集的數據導出到微信公眾號文章正文采集步驟223)這里我們選擇excel作為導出格式. 數據導出后,如下圖所示,微信公眾號文章正文采集步驟23如上圖所示,部分文章的正文未采集.
這是因為系統自動(dòng)生成了文章正文的循環(huán)列表的Xpath: // [@ id =“ js_content”] / P,因此無(wú)法找到本文的正文. 將Xpath修改為: // [@@ =“ =” js_content“] // P,所有文章正文都可以位于微信公眾號文章正文采集步驟23微信公眾號文章正文采集步驟24說(shuō)明: 本文的方法是僅適合采集搜狗微信文章正文內容. 無(wú)法在文本中采集圖片. 如果需要采集圖片,則需要在此過(guò)程中添加判斷條件. 相關(guān)集合教程: 京東商品信息集合豆瓣電影簡(jiǎn)短評論集合58全市信息集合優(yōu)采云-一個(gè)由70萬(wàn)用戶(hù)選擇的網(wǎng)絡(luò )數據采集器. 1.操作簡(jiǎn)單,任何人都可以使用: 不需要技術(shù)背景,可以通過(guò)瀏覽Internet進(jìn)行采集. 完全可視化該過(guò)程,單擊鼠標以完成操作,您可以在2分鐘內快速上手. 2.強大的功能,可以在任何網(wǎng)站上采集: 單擊,登錄,翻頁(yè),識別驗證碼,瀑布流,Ajax腳本異步加載數據頁(yè),所有這些都可以通過(guò)簡(jiǎn)單的設置進(jìn)行采集. 3.云采集,也可以關(guān)閉. 配置采集任務(wù)后,可以將其關(guān)閉,并可以在云中執行該任務(wù). 龐大的云采集集群不間斷運行24 * 7,因此無(wú)需擔心IP被阻塞和網(wǎng)絡(luò )中斷. 4.免費功能+增值服務(wù),可以按需選擇. 免費版具有所有功能,可以滿(mǎn)足用戶(hù)的基本采集需求. 同時(shí),建立了一些增值服務(wù)(例如私有云)以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求.
歡迎老朋友開(kāi)發(fā)php微信公眾號
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 261 次瀏覽 ? 2020-08-06 06:06
更新: 2018年10月20日09:38:44轉載作者: dq_095
本文主要詳細介紹php微信公眾號的開(kāi)發(fā),歡迎老朋友,它具有一定的參考價(jià)值,有興趣的朋友可以參考
本文中的示例共享了由php微信公眾號開(kāi)發(fā)的歡迎老朋友的特定代碼,供您參考. 具體內容如下
數據庫簡(jiǎn)介
關(guān)鍵代碼如下:
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
0
";
if(!empty( $keyword ))
{
//用 戶(hù) 名 : $user
//密 碼 : $pwd
//主庫域名 : $host
//從庫域名 : SAE_MYSQL_HOST_S
//端 口 : $port
//數據庫名 : $dbname
$dbname = "app_dq095";
$host = "w.rdc.sae.sina.com.cn";
$port = "3306";
$user = "4k514n103z";
$pwd = "2402314li2j1i5im1xy2xizj5y332w2x41k2z203";
/*接著(zhù)調用mysql_connect()連接服務(wù)器*/
// 連主庫
$db = mysql_connect($host,$user,$pwd);
if(!$db){
die("Connect Server Failed: " . mysql_error($db));
}
/*連接成功后立即調用mysql_select_db()選中需要連接的數據庫*/
if (!mysql_select_db($dbname)) {
die("Select Database Failed: " . mysql_error($db));
}
mysql_query("set names utf-8",$db);
/*至此連接已完全建立,就可對當前數據庫進(jìn)行相應的操作了*/
/*?。?!注意,無(wú)法再通過(guò)本次連接調用mysql_select_db來(lái)切換到其它數據庫了?。?!*/
/* 需要再連接其它數據庫,請再使用mysql_connect+mysql_select_db啟動(dòng)另一個(gè)連接*/
/**
* 接下來(lái)就可以使用其它標準php mysql函數操作進(jìn)行數據庫操作
*/
$sql="SELECT * FROM `welcome`WHERE `user`= '" . iconv("UTF-8","GBK",$fromUsername) . "'";
$query=mysql_query($sql);
$rs=mysql_fetch_array($query);
$b= $rs['user'];
$c=iconv("GBK","UTF-8",$b);
$msgType = "text";
if ($c==$fromUsername)
{
$contentStr = "歡迎老朋友!";
}else{
$sql="INSERT INTO `welcome`(`id`,`user`) VALUES (NULL,'{$fromUsername}')";
mysql_query($sql);
$contentStr = "歡迎新朋友!";
}
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
mysql_close($db);
}else{
echo "Input something...";
}
index.php代碼如下 查看全部
歡迎老朋友開(kāi)發(fā)php微信公眾號
更新: 2018年10月20日09:38:44轉載作者: dq_095
本文主要詳細介紹php微信公眾號的開(kāi)發(fā),歡迎老朋友,它具有一定的參考價(jià)值,有興趣的朋友可以參考
本文中的示例共享了由php微信公眾號開(kāi)發(fā)的歡迎老朋友的特定代碼,供您參考. 具體內容如下
數據庫簡(jiǎn)介

關(guān)鍵代碼如下:
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "
%s
0
";
if(!empty( $keyword ))
{
//用 戶(hù) 名 : $user
//密 碼 : $pwd
//主庫域名 : $host
//從庫域名 : SAE_MYSQL_HOST_S
//端 口 : $port
//數據庫名 : $dbname
$dbname = "app_dq095";
$host = "w.rdc.sae.sina.com.cn";
$port = "3306";
$user = "4k514n103z";
$pwd = "2402314li2j1i5im1xy2xizj5y332w2x41k2z203";
/*接著(zhù)調用mysql_connect()連接服務(wù)器*/
// 連主庫
$db = mysql_connect($host,$user,$pwd);
if(!$db){
die("Connect Server Failed: " . mysql_error($db));
}
/*連接成功后立即調用mysql_select_db()選中需要連接的數據庫*/
if (!mysql_select_db($dbname)) {
die("Select Database Failed: " . mysql_error($db));
}
mysql_query("set names utf-8",$db);
/*至此連接已完全建立,就可對當前數據庫進(jìn)行相應的操作了*/
/*?。?!注意,無(wú)法再通過(guò)本次連接調用mysql_select_db來(lái)切換到其它數據庫了?。?!*/
/* 需要再連接其它數據庫,請再使用mysql_connect+mysql_select_db啟動(dòng)另一個(gè)連接*/
/**
* 接下來(lái)就可以使用其它標準php mysql函數操作進(jìn)行數據庫操作
*/
$sql="SELECT * FROM `welcome`WHERE `user`= '" . iconv("UTF-8","GBK",$fromUsername) . "'";
$query=mysql_query($sql);
$rs=mysql_fetch_array($query);
$b= $rs['user'];
$c=iconv("GBK","UTF-8",$b);
$msgType = "text";
if ($c==$fromUsername)
{
$contentStr = "歡迎老朋友!";
}else{
$sql="INSERT INTO `welcome`(`id`,`user`) VALUES (NULL,'{$fromUsername}')";
mysql_query($sql);
$contentStr = "歡迎新朋友!";
}
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
mysql_close($db);
}else{
echo "Input something...";
}
index.php代碼如下
微信公眾號文章搜尋器系統
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 257 次瀏覽 ? 2020-08-06 04:04
1. 我做了兩個(gè)履帶. 第一次我害怕Phoenix.com時(shí),沒(méi)有任何限制,我可以隨意爬網(wǎng),所以我放松了對自動(dòng)代碼執行模塊的警惕. 我認為這很簡(jiǎn)單,但事實(shí)并非如此. 我已經(jīng)為這個(gè)問(wèn)題困擾了好幾天,幾乎是四天. 由于搜狗的限制,獲得相同IP的次數越來(lái)越多. 首先,顯示驗證碼,其次是訪(fǎng)問(wèn)限制. 直接無(wú)法訪(fǎng)問(wèn). 根據請求,您得到的是訪(fǎng)問(wèn)次數太頻繁,這種提示,因此在開(kāi)發(fā)過(guò)程中最麻煩的不是代碼的編寫(xiě),而是測試. 編寫(xiě)后無(wú)法立即測試該代碼. 我相信大多數程序員都不會(huì )喜歡,我現在編寫(xiě)的程序每天執行3次. 這樣的頻率很好,并且因為它是由多個(gè)正式帳戶(hù)采集的,所以每個(gè)正式帳戶(hù)之間也要有一個(gè)間隔,否則它將同時(shí)訪(fǎng)問(wèn)十多個(gè)公眾,該帳戶(hù)上的數百篇文章也是不現實(shí)的. 在插入句子時(shí),如何使每個(gè)正式帳戶(hù)都不敢玩,等待特定的時(shí)間段,執行下一個(gè),最后使用setInterval函數來(lái)解決它,
每80秒執行一個(gè)正式帳戶(hù),并將每個(gè)執行代碼寫(xiě)入hello. 泡沫距離有點(diǎn)遠. 我會(huì )收到的. 我們來(lái)談?wù)刢ron程序包,它是自動(dòng)執行的. npm官方網(wǎng)站上僅舉了一個(gè)例子,但是我的意思是桑拿浴可能有點(diǎn)壓抑. 我無(wú)法播放,但了解其用法. 然后我說(shuō),如果我聽(tīng)不懂怎么辦. 在Internet,百度和cron程序包的特定用法上進(jìn)行搜索. 有很多,所以我只是看了看,但是經(jīng)過(guò)仔細的分析卻并非如此. 都是廢話(huà),沒(méi)用. 一般在線(xiàn)使用中都有一個(gè)問(wèn)號,但是當我添加一個(gè)問(wèn)號時(shí),會(huì )出現錯誤. 是的,這都是胡說(shuō)八道. 最后,我在同學(xué)小組的一個(gè)前端技術(shù)討論小組中說(shuō)了這一點(diǎn). 真正熱情的小組朋友找到了我一個(gè)鏈接. 我進(jìn)去看看,嘗試了一下,沒(méi)關(guān)系,所以,非常感謝這位幫助我解決難題的同學(xué). 我將再次附上QQ群組號碼和鏈接,以幫助您在閱讀本文時(shí)學(xué)習. QQ組號: 435012561,鏈接: ,鏈接說(shuō)的沒(méi)問(wèn)題,至少可以用,這里我仍然有一個(gè)問(wèn)題,就是時(shí)區,我們以前用過(guò)一次,使用洛杉磯時(shí)間,但是這次顯然不起作用,我們需要用中文,但是我在北京嘗試了幾次,雖然不好,但是重慶可以,所以我用了重慶.
2. 我想在這里談?wù)摰氖菑牡刂窓讷@取參數的問(wèn)題. 我做的最后一個(gè)很好,但是我不知道該怎么做. 我從地址欄中得到的最后一個(gè)是數字,但是這個(gè)是它的. 它是一個(gè)字符串,并且mongodb中對字段的要求仍然非常嚴格,因此分頁(yè)功能困擾了我幾個(gè)小時(shí). 它是如何解決的?我在mongodb中添加了一個(gè)討論組. 我問(wèn)其中有什么問(wèn)題,并發(fā)布了屏幕截圖. 有一個(gè)熱心的網(wǎng)民說(shuō),傳入數據的格式顯然不正確. 我喚醒了做夢(mèng)者,我說(shuō)了是,然后我使用Number()函數來(lái)處理我得到的參數,以便字符串類(lèi)型的數量成為數字類(lèi)型的數量. 很好,因此在使用mongodb時(shí),必須注意存儲數據的格式.
3. Mongodb查詢(xún)數據語(yǔ)句的組織:
坦率地說(shuō),實(shí)際上是使用了限制和跳過(guò)這兩個(gè)函數,但是特定的格式可能是樂(lè )觀(guān)的,并且mine是可接受的參數,但是mongo的參數接受很容易直接編寫(xiě),不需要喜歡sql像$ {“”}一樣. 下面的排序功能說(shuō)明了排序方法. 這里,ctime字段設置為標準,-1表示逆序,1表示正序,
4. 在這段代碼編寫(xiě)中,我第一次使用了try catch方法進(jìn)行糾錯. 原來(lái)沒(méi)關(guān)系. 偶爾的錯誤可以正常地打印出來(lái),但是它不會(huì )影響代碼的整體執行,或者說(shuō)到下一次執行,整體感覺(jué)非常好,
對于特定用法,將您要執行的代碼放入try中,并在最后添加一行,并拋出Error();
然后傳入參數e以進(jìn)行捕獲,可以在catch中打印很多消息,我只打印了其中之一,例如e.message
5. anync包主要用于此編碼過(guò)程中,其中的ansyc.each循環(huán),ansyc.waterfall在執行完上述操作后可以執行以下操作,也可以在您之間的上下傳遞參數,這非常重要的是,因為在此編程中,每次獲取的內容都不同,每個(gè)代碼執行的條件也不同,也就是說(shuō),所需的參數也不同,即,下一個(gè)代碼執行可能需要上一個(gè)代碼. 執行,所以這個(gè)anync軟件包真的值得研究. 他的每種方法都不相同,有時(shí)可能會(huì )得到意想不到的結果.
6. 在mysql中,如果要實(shí)現這樣的效果,即如果它已經(jīng)存在于數據庫中,則忽略它,或者不重復存儲它;如果它不存在于數據庫中,則將其存儲在其中. 用replace替換插入數據的插入. 但是在mongodb中,應該沒(méi)有,或者我還沒(méi)有找到它. 我用這種方法解決了. 我定義了一個(gè)開(kāi)關(guān)來(lái)使該開(kāi)關(guān)為真. 在每次存儲之前,循環(huán)所有數據以查看是否有該數據,如果沒(méi)有,則讓開(kāi)關(guān)變?yōu)榧?,否則,繼續執行,即判斷此時(shí)開(kāi)關(guān)是真還是假,如果為true,則執行插入操作;如果為false,則將其忽略. 這樣可以達到類(lèi)似的效果,否則每次都會(huì )存儲大量重復數據,
7. 該集合的核心是我文件中的common.js. 首先,因為我們要采集,所以我們需要使用請求包. 采集后,我們需要以html格式處理數據,以便可以使用類(lèi)似于jquery的數據. 對于該操作,cheerio包已使用了很長(cháng)時(shí)間,然后在循環(huán)采集時(shí)將使用anync.each方法,因此將使用異步包,
7-1,
通過(guò)采集搜狗微信,我們必須分析搜狗微信的路徑. 每個(gè)官方帳戶(hù)頁(yè)面的路徑都是這樣
?。8%BF%99%E6%89%8D%E6%98%AF%E6%97%A5%E6%9C%AC&ie = utf8&_sug_ = n&_sug_type _ =
這是“這是日本”頁(yè)面的鏈接. 經(jīng)過(guò)分析,所有正式帳戶(hù)的鏈接僅在查詢(xún)后的參數上有所不同,但是查詢(xún)后的參數是什么,實(shí)際上,它是由encodeURIComponent()函數轉換的,之后是“這是日本”,因此相同. 要獲得該官方帳戶(hù),只需對官方帳戶(hù)的名稱(chēng)進(jìn)行編碼并將其動(dòng)態(tài)組合成一個(gè)鏈接,您就可以在訪(fǎng)問(wèn)時(shí)輸入每個(gè)鏈接,但是我只是要求此頁(yè)面此鏈接,
不是
此頁(yè)面,因此進(jìn)一步的處理是獲取當前頁(yè)面的第一內容的鏈接,即href
獲得此鏈接后,您會(huì )發(fā)現他具有自己的加密方法. 實(shí)際上非常簡(jiǎn)單,就是在鏈接中增加三個(gè)安培;更換這三個(gè)放大器;在帶有空鏈接的鏈接中,就好了,這是第一步,獲取每個(gè)官方帳戶(hù)的頁(yè)面鏈接,
7-2
獲取鏈接后,有必要訪(fǎng)問(wèn),即請求,請求每個(gè)地址,獲取每個(gè)地址的內容,但每個(gè)頁(yè)面上顯示的內容不在該頁(yè)面中,即在html結構中,隱藏在js中,因此我們需要通過(guò)常規匹配來(lái)獲取每篇文章的對象,然后循環(huán)訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)的對象以獲取有關(guān)該對象中每篇文章的一些信息,包括標題,縮略圖,摘要,URL,時(shí)間, 5個(gè)字段,但我使用的代碼很爛,而我當時(shí)使用的是
Object.Attribute.foreach(function(item,index){
})
這種可怕的方法,最后要做的就是編寫(xiě)一個(gè)循環(huán)以完全獲取每個(gè)對象,否則只能獲取第一個(gè)對象. 在這里,您應該使用async.each或async.foreach. 可以使用兩種方法中的每一種,并且它們都非常易于使用. 這樣,您將獲得上述每篇文章的基本新聞.
7-3,
第三階段是進(jìn)入每篇文章的詳細信息頁(yè)面,并獲取每篇文章的內容,喜歡的次數,作者,官方帳號,閱讀量和其他數據. 這里遇到的主要問(wèn)題是人們的內容直接位于js中,并且所有img標簽都有問(wèn)題. 它們以這種形式存儲在內容中,但是在這種情況下,由于標簽,html文檔(我不知道此類(lèi)img標簽)存在問(wèn)題,此類(lèi)圖像無(wú)法顯示在我們的網(wǎng)頁(yè)上,因此在這里我們需要進(jìn)行一些處理,替換全部與
查看全部
已經(jīng)快兩個(gè)星期了. 我已經(jīng)在微信公眾號上調試了商品搜尋器系統,最后一切都很好,但是在此期間,我遇到了很多問(wèn)題. 讓我們今天回顧一下并進(jìn)行總結. 我希望它會(huì )有用. 朋友可以學(xué)習.
1. 我做了兩個(gè)履帶. 第一次我害怕Phoenix.com時(shí),沒(méi)有任何限制,我可以隨意爬網(wǎng),所以我放松了對自動(dòng)代碼執行模塊的警惕. 我認為這很簡(jiǎn)單,但事實(shí)并非如此. 我已經(jīng)為這個(gè)問(wèn)題困擾了好幾天,幾乎是四天. 由于搜狗的限制,獲得相同IP的次數越來(lái)越多. 首先,顯示驗證碼,其次是訪(fǎng)問(wèn)限制. 直接無(wú)法訪(fǎng)問(wèn). 根據請求,您得到的是訪(fǎng)問(wèn)次數太頻繁,這種提示,因此在開(kāi)發(fā)過(guò)程中最麻煩的不是代碼的編寫(xiě),而是測試. 編寫(xiě)后無(wú)法立即測試該代碼. 我相信大多數程序員都不會(huì )喜歡,我現在編寫(xiě)的程序每天執行3次. 這樣的頻率很好,并且因為它是由多個(gè)正式帳戶(hù)采集的,所以每個(gè)正式帳戶(hù)之間也要有一個(gè)間隔,否則它將同時(shí)訪(fǎng)問(wèn)十多個(gè)公眾,該帳戶(hù)上的數百篇文章也是不現實(shí)的. 在插入句子時(shí),如何使每個(gè)正式帳戶(hù)都不敢玩,等待特定的時(shí)間段,執行下一個(gè),最后使用setInterval函數來(lái)解決它,

每80秒執行一個(gè)正式帳戶(hù),并將每個(gè)執行代碼寫(xiě)入hello. 泡沫距離有點(diǎn)遠. 我會(huì )收到的. 我們來(lái)談?wù)刢ron程序包,它是自動(dòng)執行的. npm官方網(wǎng)站上僅舉了一個(gè)例子,但是我的意思是桑拿浴可能有點(diǎn)壓抑. 我無(wú)法播放,但了解其用法. 然后我說(shuō),如果我聽(tīng)不懂怎么辦. 在Internet,百度和cron程序包的特定用法上進(jìn)行搜索. 有很多,所以我只是看了看,但是經(jīng)過(guò)仔細的分析卻并非如此. 都是廢話(huà),沒(méi)用. 一般在線(xiàn)使用中都有一個(gè)問(wèn)號,但是當我添加一個(gè)問(wèn)號時(shí),會(huì )出現錯誤. 是的,這都是胡說(shuō)八道. 最后,我在同學(xué)小組的一個(gè)前端技術(shù)討論小組中說(shuō)了這一點(diǎn). 真正熱情的小組朋友找到了我一個(gè)鏈接. 我進(jìn)去看看,嘗試了一下,沒(méi)關(guān)系,所以,非常感謝這位幫助我解決難題的同學(xué). 我將再次附上QQ群組號碼和鏈接,以幫助您在閱讀本文時(shí)學(xué)習. QQ組號: 435012561,鏈接: ,鏈接說(shuō)的沒(méi)問(wèn)題,至少可以用,這里我仍然有一個(gè)問(wèn)題,就是時(shí)區,我們以前用過(guò)一次,使用洛杉磯時(shí)間,但是這次顯然不起作用,我們需要用中文,但是我在北京嘗試了幾次,雖然不好,但是重慶可以,所以我用了重慶.
2. 我想在這里談?wù)摰氖菑牡刂窓讷@取參數的問(wèn)題. 我做的最后一個(gè)很好,但是我不知道該怎么做. 我從地址欄中得到的最后一個(gè)是數字,但是這個(gè)是它的. 它是一個(gè)字符串,并且mongodb中對字段的要求仍然非常嚴格,因此分頁(yè)功能困擾了我幾個(gè)小時(shí). 它是如何解決的?我在mongodb中添加了一個(gè)討論組. 我問(wèn)其中有什么問(wèn)題,并發(fā)布了屏幕截圖. 有一個(gè)熱心的網(wǎng)民說(shuō),傳入數據的格式顯然不正確. 我喚醒了做夢(mèng)者,我說(shuō)了是,然后我使用Number()函數來(lái)處理我得到的參數,以便字符串類(lèi)型的數量成為數字類(lèi)型的數量. 很好,因此在使用mongodb時(shí),必須注意存儲數據的格式.
3. Mongodb查詢(xún)數據語(yǔ)句的組織:

坦率地說(shuō),實(shí)際上是使用了限制和跳過(guò)這兩個(gè)函數,但是特定的格式可能是樂(lè )觀(guān)的,并且mine是可接受的參數,但是mongo的參數接受很容易直接編寫(xiě),不需要喜歡sql像$ {“”}一樣. 下面的排序功能說(shuō)明了排序方法. 這里,ctime字段設置為標準,-1表示逆序,1表示正序,
4. 在這段代碼編寫(xiě)中,我第一次使用了try catch方法進(jìn)行糾錯. 原來(lái)沒(méi)關(guān)系. 偶爾的錯誤可以正常地打印出來(lái),但是它不會(huì )影響代碼的整體執行,或者說(shuō)到下一次執行,整體感覺(jué)非常好,
對于特定用法,將您要執行的代碼放入try中,并在最后添加一行,并拋出Error();
然后傳入參數e以進(jìn)行捕獲,可以在catch中打印很多消息,我只打印了其中之一,例如e.message

5. anync包主要用于此編碼過(guò)程中,其中的ansyc.each循環(huán),ansyc.waterfall在執行完上述操作后可以執行以下操作,也可以在您之間的上下傳遞參數,這非常重要的是,因為在此編程中,每次獲取的內容都不同,每個(gè)代碼執行的條件也不同,也就是說(shuō),所需的參數也不同,即,下一個(gè)代碼執行可能需要上一個(gè)代碼. 執行,所以這個(gè)anync軟件包真的值得研究. 他的每種方法都不相同,有時(shí)可能會(huì )得到意想不到的結果.
6. 在mysql中,如果要實(shí)現這樣的效果,即如果它已經(jīng)存在于數據庫中,則忽略它,或者不重復存儲它;如果它不存在于數據庫中,則將其存儲在其中. 用replace替換插入數據的插入. 但是在mongodb中,應該沒(méi)有,或者我還沒(méi)有找到它. 我用這種方法解決了. 我定義了一個(gè)開(kāi)關(guān)來(lái)使該開(kāi)關(guān)為真. 在每次存儲之前,循環(huán)所有數據以查看是否有該數據,如果沒(méi)有,則讓開(kāi)關(guān)變?yōu)榧?,否則,繼續執行,即判斷此時(shí)開(kāi)關(guān)是真還是假,如果為true,則執行插入操作;如果為false,則將其忽略. 這樣可以達到類(lèi)似的效果,否則每次都會(huì )存儲大量重復數據,
7. 該集合的核心是我文件中的common.js. 首先,因為我們要采集,所以我們需要使用請求包. 采集后,我們需要以html格式處理數據,以便可以使用類(lèi)似于jquery的數據. 對于該操作,cheerio包已使用了很長(cháng)時(shí)間,然后在循環(huán)采集時(shí)將使用anync.each方法,因此將使用異步包,
7-1,
通過(guò)采集搜狗微信,我們必須分析搜狗微信的路徑. 每個(gè)官方帳戶(hù)頁(yè)面的路徑都是這樣
?。8%BF%99%E6%89%8D%E6%98%AF%E6%97%A5%E6%9C%AC&ie = utf8&_sug_ = n&_sug_type _ =
這是“這是日本”頁(yè)面的鏈接. 經(jīng)過(guò)分析,所有正式帳戶(hù)的鏈接僅在查詢(xún)后的參數上有所不同,但是查詢(xún)后的參數是什么,實(shí)際上,它是由encodeURIComponent()函數轉換的,之后是“這是日本”,因此相同. 要獲得該官方帳戶(hù),只需對官方帳戶(hù)的名稱(chēng)進(jìn)行編碼并將其動(dòng)態(tài)組合成一個(gè)鏈接,您就可以在訪(fǎng)問(wèn)時(shí)輸入每個(gè)鏈接,但是我只是要求此頁(yè)面此鏈接,

不是

此頁(yè)面,因此進(jìn)一步的處理是獲取當前頁(yè)面的第一內容的鏈接,即href

獲得此鏈接后,您會(huì )發(fā)現他具有自己的加密方法. 實(shí)際上非常簡(jiǎn)單,就是在鏈接中增加三個(gè)安培;更換這三個(gè)放大器;在帶有空鏈接的鏈接中,就好了,這是第一步,獲取每個(gè)官方帳戶(hù)的頁(yè)面鏈接,
7-2
獲取鏈接后,有必要訪(fǎng)問(wèn),即請求,請求每個(gè)地址,獲取每個(gè)地址的內容,但每個(gè)頁(yè)面上顯示的內容不在該頁(yè)面中,即在html結構中,隱藏在js中,因此我們需要通過(guò)常規匹配來(lái)獲取每篇文章的對象,然后循環(huán)訪(fǎng)問(wèn)每個(gè)正式帳戶(hù)的對象以獲取有關(guān)該對象中每篇文章的一些信息,包括標題,縮略圖,摘要,URL,時(shí)間, 5個(gè)字段,但我使用的代碼很爛,而我當時(shí)使用的是
Object.Attribute.foreach(function(item,index){
})
這種可怕的方法,最后要做的就是編寫(xiě)一個(gè)循環(huán)以完全獲取每個(gè)對象,否則只能獲取第一個(gè)對象. 在這里,您應該使用async.each或async.foreach. 可以使用兩種方法中的每一種,并且它們都非常易于使用. 這樣,您將獲得上述每篇文章的基本新聞.
7-3,
第三階段是進(jìn)入每篇文章的詳細信息頁(yè)面,并獲取每篇文章的內容,喜歡的次數,作者,官方帳號,閱讀量和其他數據. 這里遇到的主要問(wèn)題是人們的內容直接位于js中,并且所有img標簽都有問(wèn)題. 它們以這種形式存儲在內容中,但是在這種情況下,由于標簽,html文檔(我不知道此類(lèi)img標簽)存在問(wèn)題,此類(lèi)圖像無(wú)法顯示在我們的網(wǎng)頁(yè)上,因此在這里我們需要進(jìn)行一些處理,替換全部與
如何在搜狗微信公眾號上采集熱門(mén)文章. docx 18頁(yè)
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 455 次瀏覽 ? 2020-08-06 00:00
下拉頁(yè)面,找到并單擊“加載更多內容”按鈕,在操作提示框中選擇“更多操作”搜狗微信公眾號熱門(mén)文章如何采集圖2選擇“循環(huán)單擊單個(gè)元素”創(chuàng )建一個(gè)頁(yè)面翻閱周期如何在搜狗微信公眾號上采集熱門(mén)文章圖3由于此頁(yè)面涉及Ajax技術(shù),因此我們需要設置一些高級選項. 選擇“單擊元素”步驟,打開(kāi)“高級選項”,選中“ Ajax加載數據”,將時(shí)間設置為“ 2秒”. 如何在搜狗微信公眾號上采集熱門(mén)文章圖4注意: AJAX表示延遲加載和異步更新. 這種腳本技術(shù)通過(guò)在后臺與服務(wù)器進(jìn)行少量數據交換,可以更新網(wǎng)頁(yè)的特定部分,而無(wú)需重新加載整個(gè)網(wǎng)頁(yè). 性能特點(diǎn): 當您單擊網(wǎng)頁(yè)中的一個(gè)選項時(shí),大多數網(wǎng)站的URL不會(huì )更改. b. 該網(wǎng)頁(yè)未完全加載,僅部分加載了數據并進(jìn)行了更改. 驗證方法: 單擊該操作后,URL輸入欄將不會(huì )在瀏覽器的加載狀態(tài)或轉彎狀態(tài)下顯示. 觀(guān)察該網(wǎng)頁(yè),我們發(fā)現單擊“加載更多內容” 5次后,頁(yè)面將加載到底部,總共顯示100條文章. 因此,我們將整個(gè)“循環(huán)旋轉”步驟設置為執行5次. 選擇“循環(huán)翻頁(yè)”步驟,打開(kāi)“高級選項”,打開(kāi)“滿(mǎn)足以下條件時(shí)退出循環(huán)”,將循環(huán)數設置為等于“ 5次”,然后單擊“確定”. 搜狗微信公眾號圖5步驟3: 創(chuàng )建列表循環(huán)并提取數據HYPERLINK“ / article / javascript :;” 1)移動(dòng)鼠標以選擇頁(yè)面上第一篇文章的框.
系統將識別此塊中的子元素. 在操作提示框中,選擇“選擇子元素”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖62)繼續在頁(yè)面上選擇第二篇文章的塊,系統將第二篇文章中的子元素會(huì )被自動(dòng)選擇,頁(yè)面上的其他10組相似元素也會(huì )被識別. 在操作提示框中,選擇“全選”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖73)可以看到,頁(yè)面上文章區域中的所有元素均已選中,并變?yōu)榫G色. 在右側的操作提示框中,將顯示一個(gè)字段預覽表. 將鼠標移到表格的頂部,然后單擊垃圾箱圖標以刪除不必要的字段. 字段選擇完成后,選擇“采集以下數據”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖84)我們還希望采集每篇文章的URL,因此需要提取一個(gè)字段. 單擊第一篇文章的鏈接,系統將自動(dòng)在頁(yè)面上選擇一組文章鏈接. 在右側的操作提示框中,選擇“全選”如何在搜狗微信公眾號上采集熱門(mén)文章圖95)選擇“采集以下鏈接地址”如何在搜狗微信公眾號上采集熱門(mén)文章圖106)選擇后在字段中,選擇相應的字段,您可以自定義字段的命名. 圖11第4步: 修改Xpath讓我們繼續觀(guān)察. 5次單擊“加載更多內容”后,此頁(yè)面將加載所有100條文章. 因此,我們的配置規則的思想是首先建立一個(gè)翻頁(yè)周期,加載全部100條文章,然后創(chuàng )建一個(gè)周期列表并提取數據1)選擇整個(gè)``循環(huán)''步驟并將其拖出``循環(huán)''翻頁(yè)”步驟.
如果不執行此操作,將有很多重復的數據. 如何在搜狗微信公眾號上采集熱門(mén)文章圖12拖動(dòng)完成后,如下圖所示,如何在搜狗微信公眾號上采集熱門(mén)文章圖13在“列表循環(huán)”中“在此步驟中,循環(huán)的100篇文章列表. 選擇整個(gè)“循環(huán)步驟”,打開(kāi)“高級選項”,元素列表中的Xpath不會(huì )被固定: // BODY [@ id ='loginWrap'] / DIV [4] / DIV [1] / DIV [3] / UL [1] / LI,將其復制并粘貼到Firefox瀏覽器中的相應位置. 如何在搜狗微信公眾號上采集熱門(mén)文章圖14 Xpath: 是一種路徑查詢(xún)語(yǔ)言,簡(jiǎn)而言之,它使用路徑表達式來(lái)查找我們需要定位的數據,Xpath用于沿XML路徑查找數據,但是Ucai云采集器中有一套針對HTML的Xpath引擎,因此您可以直接使用XPATH可以準確地在網(wǎng)頁(yè)中查找和定位數據3)在Firefox瀏覽器中,我們通過(guò)以下Xpath發(fā)現: // BODY [@ id ='loginWrap'] / DIV [4] / DIV [1] / DIV [3] / UL [1] / LI,該頁(yè)面上的頁(yè)面有20篇文章,搜狗微信公眾號,如何采集熱門(mén)文章圖154)將Xpath修改為: // BODY [@ id ='loginWrap'] / DIV / DIV [1] / DIV [3] / UL / LI,我們發(fā)現該頁(yè)面上要采集的所有文章都位于搜狗微信公眾號上. 熱門(mén)文章如何采集圖16中所示的Xpath: // BODY [@ id ='loginWrap'] / DIV / DIV [1] / DIV [3] / UL / LI,復制并粘貼到圖片中所示的位置,然后單擊“確定”,搜狗微信公眾號熱門(mén)文章如何采集圖176)單擊左上角的“保存并開(kāi)始”,選擇“開(kāi)始本地采集”如何在搜狗微信公眾號上采集熱門(mén)文章”圖18步驟5: 數據采集和導出采集完成后,將彈出提示,選擇“導出數據”,選擇“適當的導出方法”,并采集搜狗微信文章數據導出搜狗微信官方賬號如何搜集熱門(mén)文章圖19在這里我們選擇excel作為導出格式,數據導出后,下圖顯示了如何采集搜狗微信公眾號熱門(mén)文章: 圖20優(yōu)采云-70萬(wàn)用戶(hù)選擇的Web數據采集器.
1. 該操作很簡(jiǎn)單,任何人都可以使用: 不需要技術(shù)背景,并且可以通過(guò)瀏覽Internet進(jìn)行采集. 完全可視化該過(guò)程,單擊鼠標以完成操作,您可以在2分鐘內快速上手. 2.強大的功能,可以在任何網(wǎng)站上采集: 單擊,登錄,翻頁(yè),識別驗證碼,瀑布流,Ajax腳本異步加載數據頁(yè),所有這些都可以通過(guò)簡(jiǎn)單的設置進(jìn)行采集. 3.云采集,也可以關(guān)閉. 配置采集任務(wù)后,可以將其關(guān)閉,并可以在云中執行該任務(wù). 龐大的云采集集群不間斷運行24 * 7,因此無(wú)需擔心IP被阻塞和網(wǎng)絡(luò )中斷. 4.免費功能+增值服務(wù),可以按需選擇. 免費版具有所有功能,可以滿(mǎn)足用戶(hù)的基本采集需求. 同時(shí),建立了一些增值服務(wù)(例如私有云)以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求. 查看全部
優(yōu)采云·云采集服務(wù)平臺優(yōu)采云·云采集服務(wù)平臺搜狗微信公眾號如何采集熱門(mén)文章本文介紹如何使用優(yōu)采云來(lái)采集搜狗微信文章(以熱門(mén)文章為例). 規則下載: 使用功能點(diǎn): 尋呼列表信息采集HYPERLINK“ /tutorial/fylb-70.aspx?t=1” /tutorial/fylb-70.aspx?t=1Xpath HYPERLINK“ / search?query = XPath” / search? query = XPathAJAX單擊并翻頁(yè)HYPERLINK“ /tutorial/ajaxdjfy_7.aspx?t=1” /tutorial/ajaxdjfy_7.aspx?t=1相關(guān)的采集教程: 天貓商品信息采集百度搜索結果采集步驟1: 創(chuàng )建采集任務(wù)1)進(jìn)入主界面,選擇“自定義模式”如何在搜狗微信公眾號上采集熱門(mén)文章圖12)復制要采集的URL到網(wǎng)站輸入框中,單擊“保存URL”如何在搜狗微信上采集熱門(mén)文章官方帳戶(hù)圖2 HYPERLINK“ / article / javascript :;”第2步: 創(chuàng )建翻頁(yè)循環(huán). 在頁(yè)面的右上角,打開(kāi)“流程”以顯示“流程設計器”和“自定義當前操作”的兩個(gè)部分. 打開(kāi)網(wǎng)頁(yè)后,默認顯示“熱門(mén)”文章.
下拉頁(yè)面,找到并單擊“加載更多內容”按鈕,在操作提示框中選擇“更多操作”搜狗微信公眾號熱門(mén)文章如何采集圖2選擇“循環(huán)單擊單個(gè)元素”創(chuàng )建一個(gè)頁(yè)面翻閱周期如何在搜狗微信公眾號上采集熱門(mén)文章圖3由于此頁(yè)面涉及Ajax技術(shù),因此我們需要設置一些高級選項. 選擇“單擊元素”步驟,打開(kāi)“高級選項”,選中“ Ajax加載數據”,將時(shí)間設置為“ 2秒”. 如何在搜狗微信公眾號上采集熱門(mén)文章圖4注意: AJAX表示延遲加載和異步更新. 這種腳本技術(shù)通過(guò)在后臺與服務(wù)器進(jìn)行少量數據交換,可以更新網(wǎng)頁(yè)的特定部分,而無(wú)需重新加載整個(gè)網(wǎng)頁(yè). 性能特點(diǎn): 當您單擊網(wǎng)頁(yè)中的一個(gè)選項時(shí),大多數網(wǎng)站的URL不會(huì )更改. b. 該網(wǎng)頁(yè)未完全加載,僅部分加載了數據并進(jìn)行了更改. 驗證方法: 單擊該操作后,URL輸入欄將不會(huì )在瀏覽器的加載狀態(tài)或轉彎狀態(tài)下顯示. 觀(guān)察該網(wǎng)頁(yè),我們發(fā)現單擊“加載更多內容” 5次后,頁(yè)面將加載到底部,總共顯示100條文章. 因此,我們將整個(gè)“循環(huán)旋轉”步驟設置為執行5次. 選擇“循環(huán)翻頁(yè)”步驟,打開(kāi)“高級選項”,打開(kāi)“滿(mǎn)足以下條件時(shí)退出循環(huán)”,將循環(huán)數設置為等于“ 5次”,然后單擊“確定”. 搜狗微信公眾號圖5步驟3: 創(chuàng )建列表循環(huán)并提取數據HYPERLINK“ / article / javascript :;” 1)移動(dòng)鼠標以選擇頁(yè)面上第一篇文章的框.
系統將識別此塊中的子元素. 在操作提示框中,選擇“選擇子元素”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖62)繼續在頁(yè)面上選擇第二篇文章的塊,系統將第二篇文章中的子元素會(huì )被自動(dòng)選擇,頁(yè)面上的其他10組相似元素也會(huì )被識別. 在操作提示框中,選擇“全選”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖73)可以看到,頁(yè)面上文章區域中的所有元素均已選中,并變?yōu)榫G色. 在右側的操作提示框中,將顯示一個(gè)字段預覽表. 將鼠標移到表格的頂部,然后單擊垃圾箱圖標以刪除不必要的字段. 字段選擇完成后,選擇“采集以下數據”. 如何在搜狗微信公眾號上采集熱門(mén)文章. 圖84)我們還希望采集每篇文章的URL,因此需要提取一個(gè)字段. 單擊第一篇文章的鏈接,系統將自動(dòng)在頁(yè)面上選擇一組文章鏈接. 在右側的操作提示框中,選擇“全選”如何在搜狗微信公眾號上采集熱門(mén)文章圖95)選擇“采集以下鏈接地址”如何在搜狗微信公眾號上采集熱門(mén)文章圖106)選擇后在字段中,選擇相應的字段,您可以自定義字段的命名. 圖11第4步: 修改Xpath讓我們繼續觀(guān)察. 5次單擊“加載更多內容”后,此頁(yè)面將加載所有100條文章. 因此,我們的配置規則的思想是首先建立一個(gè)翻頁(yè)周期,加載全部100條文章,然后創(chuàng )建一個(gè)周期列表并提取數據1)選擇整個(gè)``循環(huán)''步驟并將其拖出``循環(huán)''翻頁(yè)”步驟.
如果不執行此操作,將有很多重復的數據. 如何在搜狗微信公眾號上采集熱門(mén)文章圖12拖動(dòng)完成后,如下圖所示,如何在搜狗微信公眾號上采集熱門(mén)文章圖13在“列表循環(huán)”中“在此步驟中,循環(huán)的100篇文章列表. 選擇整個(gè)“循環(huán)步驟”,打開(kāi)“高級選項”,元素列表中的Xpath不會(huì )被固定: // BODY [@ id ='loginWrap'] / DIV [4] / DIV [1] / DIV [3] / UL [1] / LI,將其復制并粘貼到Firefox瀏覽器中的相應位置. 如何在搜狗微信公眾號上采集熱門(mén)文章圖14 Xpath: 是一種路徑查詢(xún)語(yǔ)言,簡(jiǎn)而言之,它使用路徑表達式來(lái)查找我們需要定位的數據,Xpath用于沿XML路徑查找數據,但是Ucai云采集器中有一套針對HTML的Xpath引擎,因此您可以直接使用XPATH可以準確地在網(wǎng)頁(yè)中查找和定位數據3)在Firefox瀏覽器中,我們通過(guò)以下Xpath發(fā)現: // BODY [@ id ='loginWrap'] / DIV [4] / DIV [1] / DIV [3] / UL [1] / LI,該頁(yè)面上的頁(yè)面有20篇文章,搜狗微信公眾號,如何采集熱門(mén)文章圖154)將Xpath修改為: // BODY [@ id ='loginWrap'] / DIV / DIV [1] / DIV [3] / UL / LI,我們發(fā)現該頁(yè)面上要采集的所有文章都位于搜狗微信公眾號上. 熱門(mén)文章如何采集圖16中所示的Xpath: // BODY [@ id ='loginWrap'] / DIV / DIV [1] / DIV [3] / UL / LI,復制并粘貼到圖片中所示的位置,然后單擊“確定”,搜狗微信公眾號熱門(mén)文章如何采集圖176)單擊左上角的“保存并開(kāi)始”,選擇“開(kāi)始本地采集”如何在搜狗微信公眾號上采集熱門(mén)文章”圖18步驟5: 數據采集和導出采集完成后,將彈出提示,選擇“導出數據”,選擇“適當的導出方法”,并采集搜狗微信文章數據導出搜狗微信官方賬號如何搜集熱門(mén)文章圖19在這里我們選擇excel作為導出格式,數據導出后,下圖顯示了如何采集搜狗微信公眾號熱門(mén)文章: 圖20優(yōu)采云-70萬(wàn)用戶(hù)選擇的Web數據采集器.
1. 該操作很簡(jiǎn)單,任何人都可以使用: 不需要技術(shù)背景,并且可以通過(guò)瀏覽Internet進(jìn)行采集. 完全可視化該過(guò)程,單擊鼠標以完成操作,您可以在2分鐘內快速上手. 2.強大的功能,可以在任何網(wǎng)站上采集: 單擊,登錄,翻頁(yè),識別驗證碼,瀑布流,Ajax腳本異步加載數據頁(yè),所有這些都可以通過(guò)簡(jiǎn)單的設置進(jìn)行采集. 3.云采集,也可以關(guān)閉. 配置采集任務(wù)后,可以將其關(guān)閉,并可以在云中執行該任務(wù). 龐大的云采集集群不間斷運行24 * 7,因此無(wú)需擔心IP被阻塞和網(wǎng)絡(luò )中斷. 4.免費功能+增值服務(wù),可以按需選擇. 免費版具有所有功能,可以滿(mǎn)足用戶(hù)的基本采集需求. 同時(shí),建立了一些增值服務(wù)(例如私有云)以滿(mǎn)足高端付費企業(yè)用戶(hù)的需求.
分析python如何抓取搜狗微信官方賬號永久鏈接的想法
采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 195 次瀏覽 ? 2020-08-05 21:08
本文主要解釋了這些想法,請自行解決代碼部分
在搜狗微信上獲取當天的信息排名
指定輸入關(guān)鍵字并通過(guò)scrapy搶奪官方帳戶(hù)
通過(guò)登錄微信官方帳戶(hù)鏈接獲取Cookie信息
由于尚未解決對微信公眾平臺的模擬登錄,因此需要手動(dòng)登錄以實(shí)時(shí)獲取cookie信息
固定鏈接可以在此處轉換
代碼部分
def parse(self, response):
item = SougouItem()
item["title"] = response.xpath('//title/text()').extract_first()
print("**"*5, item["title"],"**"*5)
name = input("----------請輸入需要搜索的信息:")
print(name)
url = "http://weixin.sogou.com/weixin ... ot%3B
yield scrapy.Request(url=url, callback=self.parse_two, meta={"name":name})
搜狗微信訪(fǎng)問(wèn)頻率太快,導致需要輸入驗證碼 查看全部
本文主要介紹關(guān)于python如何抓取Sogou微信官方帳戶(hù)的永久鏈接的思想分析. 編輯認為這是相當不錯的. 現在,我將與您分享并提供參考. 讓我們跟隨編輯器看一下.
本文主要解釋了這些想法,請自行解決代碼部分
在搜狗微信上獲取當天的信息排名
指定輸入關(guān)鍵字并通過(guò)scrapy搶奪官方帳戶(hù)
通過(guò)登錄微信官方帳戶(hù)鏈接獲取Cookie信息
由于尚未解決對微信公眾平臺的模擬登錄,因此需要手動(dòng)登錄以實(shí)時(shí)獲取cookie信息




固定鏈接可以在此處轉換
代碼部分
def parse(self, response):
item = SougouItem()
item["title"] = response.xpath('//title/text()').extract_first()
print("**"*5, item["title"],"**"*5)
name = input("----------請輸入需要搜索的信息:")
print(name)
url = "http://weixin.sogou.com/weixin ... ot%3B
yield scrapy.Request(url=url, callback=self.parse_two, meta={"name":name})
搜狗微信訪(fǎng)問(wèn)頻率太快,導致需要輸入驗證碼