爬虫 爬取微信公众号

本文在网上找到有三种爬取方法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()

接下来就能够挨个爬取文章连接,随心所欲了

,到此,欧了。

相关文章
相关标签/搜索