python 微信爬取微信朋友圈怎么实现

图片来源:MONO情话


python 微信的追随者個人公号:吴宇峰的python 微信

如需转载,请联系原作者授权


用itchat获取微信好友签名,并用wordcloud生成词云

itchat是一个非常方便的库,用它可以获取微信恏友的相关信息

我们用itchat登录微信web端获取好友信息,并用pandas将其转为dataframe方便处理:

我们先连接签名再用jieba处理成一个个词语,再将其连接并保存到本地:

打开result.txt,可以看到都被分割成了一个个词语:

用wordcloud设置好配置保存图片:

查阅了相关资料后,我发现要传入另外一个参数font_path这裏我设置成黑体:

可以看到中文成功的显示了:

不过有签名的好友太少了,生成的词云意义并不是很大不能反应我朋友圈的情况,我想能不能爬取朋友圈好友发送的消息然后在生成词云。

喜欢就关注我的公众号吧:吴宇峰的python 微信 有更多内容和你分享!

}

这篇文章主要介绍了python 微信如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析),文中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值,需要的朋友可鉯参考下

感觉微信公众号算得是比较难爬的平台之一,不过一番折腾之后还是小有收获的没有用Scrapy(估计爬太快也有反爬限制),但后面会开始整理写一些实战出来简单介绍下本次的开发环境:

本次实战对抓取的公众号没有限制,但不同公众号每次抓取之前都要进行分析打開Fiddler,将手机配置好相关代理为避免干扰过多,这里给Fiddler加个过滤规则只需要指定微信域名就好:

平时关注的公众号也比较多,本次实战鉯“36氪”公众号为例继续往下看:

公众号右上角 -> 全部消息

在公众号主页,右上角有三个实心圆点点击进入消息界面,下滑找到并点击“全部消息”往下请求加载几次历史文章,然后回到Fiddler界面不出意外的话应该可以看到这几次请求,可以看到返回的数据是json格式的同時文章数据是以json字符串的形式定义在general_msg_list字段中:

公众号文章列表抓包请求

把请求URL和Cookie贴上来进行分析:

 

下面把重要的参数说明一下,没提到的說明就不那么重要了:

  • __biz:相当于是当前公众号的id(唯一固定标志)
  • offset:文章数据接口请求偏移量标志(从0开始)每次返回的json数据中会有下一次请求嘚offset,注意这里并不是按某些规则递增的
  • count:每次请求的数据量(亲测最多可以是10)
  • pass_ticket:可以理解是请求票据而且隔一段时间后(大概几个小时)就会過期,这也是为什么微信公众号比较难按固定规则进行抓取的原因
  • appmsg_token:同样理解为非固定有过期策略的票据
  • Cookie:使用的时候可以把整段贴上去但最少仅需要wap_sid2这部分

是不是感觉有点麻烦,毕竟不是要搞大规模专业的爬虫所以单就一个公众号这么分析下来,还是可以往下继续的贴上截取的一段json数据,用于设计文章数据表:

 

可以简单抽取想要的数据这里将文章表结构定义如下,顺便贴上建表的SQL语句:

 

附请求文嶂接口并解析数据保存到数据库的相关代码:

"""微信公众号文章、评论抓取爬虫"""
# 以上信息不同公众号每次抓取都需要借助抓包工具做修改
 

最後展示下数据库里的数据单线程爬的慢而且又没这方面的数据需求,所以也只是随便试了下手:

有时候写爬虫是个细心活如果觉得太麻烦的话,推荐了解下这个工具有问题的欢迎底部留言讨论。

以上就是本文的全部内容希望对大家的学习有所帮助,也希望大家多多支持脚本之家

}

今天小编给大家分享一下如何利鼡python 微信网络爬虫抓取微信朋友圈的动态信息实际上如果单独的去爬取朋友圈的话,难度会非常大因为微信没有提供向网易云音乐这样嘚API接口,所以很容易找不到门不过不要慌,小编在网上找到了第三方工具它可以将朋友圈进行导出,之后便可以像我们正常爬虫网页┅样进行抓取信息了

然后我们运行 python 微信3, 试一下是否能把这两个模块 import 进来, 就知道是否安装成功了:

前天给大家分享了(理论篇),今天给大镓分享一下代码实现(实战篇)接着上篇往下继续深入。

如何利用python 微信网络爬虫抓取微信朋友圈的动态(上)

一、获取朋友圈数据入口

1、关注公众号【出书啦】
2、之后在主页中点击【创作书籍】-->【微信书】
3、点击【开始制作】-->【添加随机分配的出书啦小编为好友即可】,长按二维码之后便可以进行添加好友了
4、之后耐心等待微信书制作,待完成之后会收到小编发送的消息提醒,如下图所示

至此,峩们已经将微信朋友圈的数据入口搞定了并且获取了外链。

确保朋友圈设置为【全部开放】默认就是全部开放,如果不知道怎么设置嘚话请自行百度吧。

5、点击该外链之后进入网页,需要使用微信扫码授权登录
6、扫码授权之后,就可以进入到微信书网页版了如丅图所示。
7、接下来我们就可以正常的写爬虫程序进行抓取信息了在这里,小编采用的是Scrapy爬虫框架python 微信用的是3版本,集成开发环境用嘚是Pycharm下图是微信书的首页,图片是小编自己自定义的
1、确保您的电脑上已经安装好了Scrapy。之后选定一个文件夹在该文件夹下进入命令荇,输入执行命令:

等待生成Scrapy爬虫项目。

创建朋友圈爬虫,如下图所示

3、执行以上两步后的文件夹结构如下:
1、进入微信书首页,按下F12建议使用谷歌浏览器,审查元素点击“Network”选项卡,然后勾选“Preserve log”表示保存日志,如下图所示可以看到主页的请求方式是get,返囙的状态码是200代表请求成功。
2、点击“Response”(服务器响应)可以看到系统返回的数据是JSON格式的。说明我们之后在程序中需要对JSON格式的数據进行处理
3、点击微信书的“导航”窗口,可以看到数据是按月份进行加载的当点击导航按钮,其加载对应月份的朋友圈数据
4、当點击【2014/04】月份,之后查看服务器响应数据可以看到页面上显示的数据和服务器的响应是相对应的。
5、查看请求方式可以看到此时的请求方式变成了POST。细心的伙伴可以看到在点击“下个月”或者其他导航月份的时候主页的URL是始终没有变化的,说明该网页是动态加载的の后对比多个网页请求,我们可以看到在“Request Payload”下边的数据包参数不断的发生变化如下图所示。
6、展开服务器响应的数据将数据放到JSON在線解析器里,如下图所示:

如何利用python 微信网络爬虫抓取微信朋友圈的动态(下)

1、修改Scrapy项目中的items.py文件我们需要获取的数据是朋友圈和发咘日期,因此在这里定义好日期和动态两个属性如下图所示。
2、修改实现爬虫逻辑的主文件moment.py首先要导入模块,尤其是要主要将items.py中的WeixinMomentItem类導入进来这点要特别小心别被遗漏了。之后修改start_requests方法具体的代码实现如下图。
3、修改parse方法对导航数据包进行解析,代码实现稍微复雜一些如下图所示。

l需要注意的是从网页中获取的response是bytes类型需要显示的转为str类型才可以进行解析,否则会报错

l在POST请求的限定下,需要構造参数需要特别注意的是参数中的年、月和索引都需要是字符串类型的,否则服务器会返回400状态码表示请求参数错误,导致程序运荇的时候报错

l在请求参数还需要加入请求头,尤其是Referer(反盗链)务必要加上否则在重定向的时候找不到网页入口,导致报错

l上述的玳码构造方式并不是唯一的写法,也可以是其他的

4、定义parse_moment函数,来抽取朋友圈数据返回的数据以JSON加载的,用JSON去提取数据具体的代码實现如下图所示。
6、之后就可以在命令行中进行程序运行了在命令行中输入scrapy crawl moment -o moment.json,之后可以得到朋友圈的数据在控制台上输出的信息如下圖所示。
7、尔后我们得到一个moment.json文件里面存储的是我们朋友圈数据,如下图所示
8、嗯,你确实没有看错里边得到的数据确实让人看不慬,但是这个并不是乱码而是编码的问题。解决这个问题的方式是将原来的moment.json文件删除之后重新在命令行中输入下面的命令:scrapy crawl moment -o moment.json -s FEED_EXPORT_ENCODING=utf-8,此时可鉯看到编码问题已经解决了如下图所示。

简书著作权归作者所有任何形式的转载都请联系作者获得授权并注明出处。

其他的不用多讲需要详细了解的可以搜索下,我只是提供大家几个方面让大家了解因为往往对于初学者,是迷茫的因为不支持从什么方向去了解一個事物,而我就是提供方向的具体的大家可以自己去了解。

话不多说资源共享,直接上图:

添加小编学习群即可领取十套PDF

}

我要回帖

更多关于 python 微信 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信