爬蟲 爬取微信公眾號


本文在網上找到有三種爬取方法

1.使用訂閱號功能里的查詢鏈接 , (此鏈接現在反扒措施嚴重,爬取幾十頁會封訂閱號,僅供參考,)

詳情請訪問此鏈接:https://cuiqingcai.com/4652.html

2.使用搜狗搜索的微信搜索(此方法只能查看每個微信公眾號的前10條文章)

詳情請訪問此鏈接:https://blog.csdn.net/qiqiyingse/article/details/70050113

3.先抓取公眾號的接口,訪問接口獲取全部文章連接(詳細講解此方法,如下:)

  1> 使用抓包工具Charles抓取公眾號接口:

    下載Charles請訪問:https://www.charlesproxy.com/download/

    使用方法 百度 一大堆

    廢話少說,進入正題:

    首先登陸微信(電腦,手機端都可以,Charles也可以抓取手機端的接口,不過需要設置,推薦登陸電腦客戶端微信)點擊訂閱號,點進去需要爬取的微信公眾號。

點擊右上角,有一個歷史文章查看,准備好點擊此處

 

    運行裝好的charles。 然后點擊查看歷史文章的按鈕,此時charles出現一個

 ,                                                 

此接口就是此公眾號的接口,復制此接口,在瀏覽器中打開此網址如圖:

 

 如果提示請在微信中打開此鏈接,有兩個原因:

  001 。需設置headers為微信瀏覽器的headers

  002 。 鏈接有效時間為半個小時,超過半小時 鏈接里的key值過期,重新獲取一下鏈接即可

谷歌瀏覽器設置headers:

  按F12打開開發者選項 , 點擊此處

  

  點擊

  

 

 點擊

點擊

再次沖輸入微信瀏覽器的headers

微信headers : Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.884.400 QQBrowser/9.0.2524.400

 

.到此,可以進行第二部 selenuim+chromdriver,因為使用的是js加載,

 

2 。selenuim+chromdriver , 打開上文找到的接口,模擬瀏覽器翻頁,一直翻頁到最下邊,獲取整個文章的鏈接,並保存。

不多贅述,直接上代碼!

 1 from selenium import webdriver
 2 import time , requests
 3 from lxml import etree
 4 from pyquery import PyQuery as pq
 5 import re
 6 
 7 
 8 
 9 url = "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5MTUyNTE3Mg==&scene=124&#wechat_redirect"
10 
11 # Chromedriver
12 opt = webdriver.ChromeOptions()
13 # prefs = {'profile.default_content_setting_values': {'images': 2}}
14 # opt.add_experimental_option('prefs', prefs)#這兩行是關閉圖片加載
15 opt.add_argument('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.884.400 QQBrowser/9.0.2524.400')#設置headers
16 # # opt.add_argument('--headless')#此行打開無界面
17 driver = webdriver.Chrome(options=opt)
18 
19 driver.get(url)
20 
21 top = 1
22 while 1:
23     html = etree.HTML(driver.page_source)
24     downss = html.xpath('//*[@id="js_nomore"]/div/span[1]/@style')
25     if downss[0] == "display: none;":
26         time.sleep(0.5)
27         js = "var q=document.documentElement.scrollTop="+str(top*2000)
28         driver.execute_script(js)#模擬下滑操作
29         top += 1
30         time.sleep(1)
31     else:
32         break
33 html = etree.HTML(driver.page_source)
34 bodyContent = html.xpath('//*[@id="js_history_list"]/div/div/div/div/h4/@hrefs')#獲取文章的所有鏈接
35 
36 #保存本地
37 fp = open("./aother.txt", "w+")
38 for i in bodyContent:
39     fp.write(str(i) + "\n")
40 driver.close()
41 fp.close()

接下來就可以挨個爬取文章鏈接,為所欲為了

,到此,歐了。

  

 

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM