分析

1,先进行准备工作:使用fiddle抓包(大家可以自行百度怎么使用哦)

2,打开电脑端微信,找到需要爬取的公众号

点击进入公众号,再打开fiddle,微信停留在这一步

打开fiddle后再点击微信的下图按钮

fiddle会出现很多包,微信里面继续向下滑动,直至fiddle里出现

点击fiddle右侧的Raw,找到下面的链接并点击进去

点击后会出现这个页面

3,然后在浏览器中点击检查元素,找到network

在网页滑动的过程中会出现一个json文件的链接

进去看看是这样子的

这就是我们要抓取的数据了

4,在第3步中可以继续将网页向下滑动,对比链接的不同

发现只有offset每次增加10,再观察第三步的第二个图发现正好是10个数据,说明offset每一次改变就是10篇不同的文章

**遇到的坑:

1,微信不能请求太频繁,不然会无法进入文章页面24小时

2,用fiddle抓取的这个链接有时效性,经测试大约30分钟

测试代码如下

3,想让爬取的url变成pdf需要使用pdfkit库,大家可以自行百度哦

import requests,time

data0 = time.time()

while True:

url = 'https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzA5NjEwNjE0OQ==&f=json&offset=11&count=10&is_ok=1&scene=124&uin=MTczNjk0NDEwMw%3D%3D&key=827f3335bef33e45717c17a835620ed3e7c540ab72a526ab5b053adcaa860be393c02f9ac5dcd1f29e45d6568788ca024b2aef3a0ff57fea9324a750ff257637fdba0690f8531315bdfca09cb3b9face1b1a5eb7efd9a8fc4f6948dd63e5930be4109b6de50b4efea8dc446012adf7ea5d58ee9ee75620ef9b1d7086201a78dc&pass_ticket=jN5PzMHo4SdLo6xWe8i%2FvQ6x87AEnKHHtwMkpl%2FuH6TKwnoBj%2F01J3thBdOHmMTM&wxtoken=&appmsg_token=1075_HtI4fzr7%252F2AwFEgwfox68YcvhRovjfzSy9-Knw~~&x5=0&f=json'

r = requests.get(url)

if len(r.text) > 400:

time.sleep(180)

else:

print("有效期为"+str(int(time.time()-data0)/60)+"分钟")

break

结果为

编写代码

1,构造headers,使用这里面的参数

import requests,random,re

User_Agent = [

'Mozilla/5.0 CK={} (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',

'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',

'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',

'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36',

'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)',

'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',

'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',

'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko',

'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134',

'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763',

'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; KTXN)',

'Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1',

'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',

'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0',

'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1',

'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36',

'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',

'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',

'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0'

]

headers = {}

headers['connection'] = 'keep-alive'

headers['host'] = 'mp.weixin.qq.com'

headers['User-Agent'] = random.choice(User_Agent)

headers['referer'] = 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzA3Nzc4MzY2NA=='

headers['cookie'] = 'pgv_pvi=2150888448; RK=qBo4z5fmcP; ptcz=6b4b4ae9eb01daeffff996302197842b93afa3c6501532cce8850cdda5a37855; pgv_pvid=2824430422; pac_uid=0_5e87d63ce838c; tvfe_boss_uuid=bfebe1f857002eaf; XWINDEXGREY=0; Hm_lvt_dde6ba2851f3db0ddc415ce0f895822e=1588923704,1589040012; ua_id=MgD7dxr2iLcmCup2AAAAAC3Cx-Yr2sX1OGi-UfyQTzk=; Hm_lvt_dde6ba2851f3db0ddc415ce0f895822e=1588923704,1589040012; _ga=GA1.2.807773159.1593618327; iip=0; wxuin=1736944103; lang=zh_CN; pass_ticket=jN5PzMHo4SdLo6xWe8i/vQ6x87AEnKHHtwMkpl/uH6TKwnoBj/01J3thBdOHmMTM; devicetype=android-28; version=2700113f; wap_sid2=COfTnrwGEooBeV9ITnlBb3FjWk9LLUh6bmhCWE9XZk5oWEFoUXZxdUhkYTlTMWxUYVVvYjNSaGdmN3NiVTBIb29BejBRVjFicFFHV0phQzBWSE5FLUJpREw2a3pUVUROM0RjejlnaTN4eUQtZXJkQWpOb2QxbXR1SWl2bnU0Y2l0ME0zNkFGS3hvRnJSRVNBQUF+MJKUkfoF='

import requests,json,time

import pdfkit

##对json文件进行解析

def parse_page(url):

r = requests.get(url,headers=headers)

r = r.text

a = json.loads(r)['general_msg_list']

lists = json.loads(a)['list']

##此处将链接和名字保存在html文件中

f = open('python.html','a')

for i in lists:

try:

title1 = i['app_msg_ext_info']['title']

##json文件中有两种形式表示title,URL,故使用if else语句

if len(title1)==0:

title = i['app_msg_ext_info']['multi_app_msg_item_list'][0]['title']

title = re.sub(r'[!,,\?\\\/:<>&$\*\|@#]','',title)

link = i['app_msg_ext_info']['multi_app_msg_item_list'][0]['content_url']

digest = i['app_msg_ext_info']['multi_app_msg_item_list'][0]['digest']

article = {

'title':title,

'link':link,

'digest':digest

}

f.write(''+title+''+'
')

save_pdf(link,title)

print(article)

time.sleep(1)

else:

title = i['app_msg_ext_info']['title']

title = re.sub(r'[!,,\?\\\/:<>&$\*\|@#]','',title)

link = i['app_msg_ext_info']['content_url']

digest = i['app_msg_ext_info']['digest']

article = {

'title':title,

'link':link,

'digest':digest

}

f.write(''+title+''+'
')

save_pdf(link,title)

time.sleep(1)

print(article)

print("*"*30)

except:

continue

f.close()

##将网页链接url保存为pdf

def save_pdf(url,title):

config=pdfkit.configuration(wkhtmltopdf=r"D:\tesseract\wkhtmltopdf\bin\wkhtmltopdf.exe")

pdfkit.from_url(url,'E:1/'+title+'.pdf',configuration=config)

##多页爬取

def main():

for i in range(1,100):

print("*"*30)

print('第%d页' %i)

print("*"*30)

url = 'https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzA3Nzc4MzY2NA==&f=json&offset={}0&count=10&is_ok=1&scene=124&uin=MTczNjk0NDEwMw%3D%3D&key=827f3335bef33e450aa3cb8e6088b5eed9e86a3b7a9023c61ce26ed85c0fae456a59262f47906011422679031b89df59a0ded071e96ceb9f39d6226f284762ccb2b9d755a17d2047b09cc00a9bf44e23f3ce6f33e8744deb4c69caa7c7c9226316825095c58ecbfa010e4219651e8eeb45c0370d6f04637e301a7b08a89e966f&pass_ticket=pCWEQrqZBNyT5N91MECA49xCvslYFAsMinBKcBCJHXd32k4pqEAaJtOjqUXajp0R&wxtoken=&appmsg_token=1079_uwFRe2sGJ6uaIdrzGCAnHbgqeLCpi7WbQqak7g~~&x5=0&f=json'.format(i)

parse_page(url)

##爬取一页睡眠几秒,防止微信被封

time.sleep(10+int(random.random()*10))

if __name__ == '__main__':

##此处将HTML 文件内容清空

f = open('python.html','w')

f.write('')

f.close()

main()

结尾

python抓取微信文件_fiddle python抓取微信公众号文章相关推荐

  1. python自动推送消息_Python自动接收微信群消息并推送相应的公众号文章

    原标题:Python自动接收微信群消息并推送相应的公众号文章 封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 用书教师可以联系 ...

  2. keil生成hex文件找不到_骚操作!用Python把公众号文章打包成pdf文件,再也不怕找不到了...

    背景 做自媒体的人,尤其是做了一年甚至更久的自媒体人,尤其是通过自媒体还有一些小收入的人,他们最怕自己的公众号内容因为各种原因而丢失,那就太可怕了! 在做自媒体内容上花了太多心血,如果突然一下就没了, ...

  3. python公众号文章_python采集微信公众号文章

    本文实例为大家分享了python采集微信公众号文章的具体代码,供大家参考,具体内容如下 在python一个子目录里存2个文件,分别是:采集公众号文章.py和config.py. 代码如下: 1.采集公 ...

  4. 向微信公众号文章中添加mp4、rar、zip等文件给用户下载

    现在随着微信公众号的使用率越来越高 大家对公众号的功能需求也越来越广   假如想在文章中添加一个MP4.rar.zip等压缩文件 让用户来浏览.下载.编辑,就需要通过微附件小程序来实现了 使用微附件小 ...

  5. 搜狗微信下线了怎么获取公众号文章?手把手教你最新获取方式

    关于微信公众号<云爬虫技术研究笔记>可以看到更多哦! 背景 最近发现搜狗微信在2019.10.29号的时候悄然下线了一个功能,也就是不能在搜狗搜索中指定公众号的名称,如下图   很多媒体以 ...

  6. 编辑器单引号如何不被转码_微信公众号文章内如何插入视频?

    在公众号文章中插入视频,不仅可以减少文字过多带来的视觉疲劳,而且有助于读者更容易读懂文章中所写的内容. 那对于刚入行的小编们,应该如何在文章中插入视频呢?步骤详情如下: 一.在微信公众号后台首页左侧导 ...

  7. 公众号内打开提示404_微信公众号文章内如何插入视频?

    在公众号文章中插入视频,不仅可以减少文字过多带来的视觉疲劳,而且有助于读者更容易读懂文章中所写的内容. 那对于刚入行的小编们,应该如何在文章中插入视频呢?步骤详情如下: 一.在微信公众号后台首页左侧导 ...

  8. python公众号文章_Python 抓取微信公众号文章

    起因是刷微信的时候看到一篇文章,Python 抓取微信公众号文章保存成pdf,很容易搜到,就不贴出来了 先用chrome登陆微信公众号后台,先获取一下自己的cookie,复制下来就行,解析一下转换成 ...

  9. python爬虫(17)爬出新高度_抓取微信公众号文章(selenium+phantomjs)

    个人博客请访问 http://www.x0100.top 一.思路分析 目前所知晓的能够抓取的方法有: 1.微信APP中微信公众号文章链接的直接抓取(http://mp.weixin.qq.com/s ...

最新文章

  1. 如何在C ++中从容器中删除元素
  2. 深度分析:基站+光通信+手机都用到了哪些美国芯片?有何替代?
  3. 使用Fastjson解析List对象时出现:{“$ref“:“$.data[0].task.OBJECTS[0]“}的问题原因及解决方法
  4. 13.3Runtime 类中的主要方法
  5. QT学习:监视文件和目录变化
  6. python学习笔记(字典)
  7. 写给80后,我们的人生才刚刚开始
  8. 【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解
  9. JDK8的日期时间类3
  10. leetcode 1269. 停在原地的方案数(dp)
  11. Redis消息队列发展历程
  12. 使用conda/pip安装pytorch 0.3.1教程(mac/windos/linux) pytorch 0.2.1
  13. 在线直接绘制倾斜45度的“火山图”
  14. 2015workshop-age 的txt 生成过程
  15. linux系统自动执行任务(转)
  16. matlab晶闸管整流电路,三相桥式全控整流电路 MATLAB/SIMULINK电力电子电路仿真
  17. html写一个轮播图响应式布局,响应式banner图片轮播布局代码
  18. python手游自动化测试流程_基于Python+appium的ios自动化测试demo(更新中)
  19. JAVA运行内存的设置
  20. python定位元素_Python元素定位

热门文章

  1. 为什么单页面的seo不友好?如何解决这一问题?
  2. 微信小程序云开发-批量上传文件到云储存空间
  3. vue实现实例搜索和排序
  4. Unity3D仿电影字幕
  5. [ 笔记 ] 计算机网络安全_1_网络安全基础
  6. 关于耳机的IEC711是什么(频响)
  7. Windows 7中禁用连按五次Shift键时出现粘滞键的方法
  8. 爱优芒角逐“剧场风”,腾讯为何“按兵不动”
  9. HP M132snw 打印机如何在换路由器的时候更换整个局域网配置?
  10. R语言环境及平台配置