本文在網上找到有三種爬取方法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()
接下來就能夠挨個爬取文章連接,隨心所欲了
,到此,歐了。