爬蟲 爬取微信公衆號

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

1.使用訂閱號功能裏的查詢連接 , (此連接如今反扒措施嚴重,爬取幾十頁會封訂閱號,僅供參考,)web

詳情請訪問此連接:https://cuiqingcai.com/4652.html瀏覽器

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

詳情請訪問此連接:http://www.javashuo.com/article/p-usatafrt-ms.htmlless

3.先抓取公衆號的接口,訪問接口獲取所有文章鏈接(詳細講解此方法,以下:)工具

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

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

    使用方法 百度 一大堆spa

    廢話少說,進入正題:.net

    首先登錄微信(電腦,手機端均可以,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()

接下來就能夠挨個爬取文章連接,隨心所欲了

,到此,歐了。

相關文章
相關標籤/搜索