本文在网上找到有三种爬取方法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()
接下来就能够挨个爬取文章连接,随心所欲了
,到此,欧了。