如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

前天给大家分享了如何利用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去提取数据,具体的代码实现如下图所示。



5、在setting.py文件中将ITEM_PIPELINES取消注释,表示数据通过该管道进行处理。



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,此时可以看到编码问题已经解决了,如下图所示。



下一篇文章,小编带大家将抓取到的朋友圈数据进行可视化展示,敬请关注~~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Adaptive cards来构建Teams app的界面

Teams app的task module十分好用,当用户点击了一个卡片上的按钮是可以在Teams里弹出一个对话框,对话框的内容可以是开发人员自己的一个网页页面,或者是adaptive card。 在我的LuckyDraw bot里,我比较了这两种的优势和劣势&#xf…

Boosting(提升方法)之GBDT

一、GBDT的通俗理解 提升方法采用的是加法模型和前向分步算法来解决分类和回归问题,而以决策树作为基函数的提升方法称为提升树(boosting tree)。GBDT(Gradient Boosting Decision Tree)就是提升树算法的一种,它使用的基学习器是C…

CC攻击原理及防范方法

一、 CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数特别多的时候&#xff0c…

Team photo的新api

Graph API的更新速度真是快,今年9月中旬又增加了关于Team photo的两个新的api。 https://docs.microsoft.com/en-us/graph/api/team-get-photohttps://docs.microsoft.com/en-us/graph/api/team-update-photo 今天就给大家介绍一下如何使用这两个新的api。 实际上说…

BZOJ 1047: [HAOI2007]理想的正方形 单调队列瞎搞

题意很简明吧? 枚举的矩形下边界和右端点即右下角,来确定矩形位置; 每一个纵列开一个单调队列,记录从 i-n1 行到 i 行每列的最大值和最小值,矩形下边界向下推移的时候维护一下; 然后在记录的每一列的最大值…

分享到Teams

在今年三月份末,Teams的官方文档推出了一个新功能:将网页(一个URL)分享到Teams里。 也就是说开发人员现在可以很方便的开发一个页面,页面里有一个Teams的图标,当访问此页面的最终用户点击这个图标后可以将…

xshell使用xftp传输文件和使用pure-ftpd搭建ftp服务

xshell使用xftp传输文件 首先安装xftp,然后建立会话,步骤和xshell一样,在使用的时候用CtrlALTf呼出,左边是windows桌面,右面是linux,双击或拖拽都可以实现命令互传。 使用pure-ftpd搭建ftp服务 首先安装yum…

MySQL命令行查询乱码解决方法

转自Agoly的博客,原文链接https://www.cnblogs.com/qmfsun/p/4846467.html 感谢博主Agoly这篇文章说的很详细很透彻。 MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含charact…

Teams Bot如何判断用户所在的时区

一说到时间,就会联想到时区,夏令时等头痛的问题,不同国家有不同国家的规定。如果你希望你的Teams Bot可以判断出当前用户所在的时区,从而可以针对性的进行一些处理时,你要做好心理准备,这个复杂程度远远超过…

『流畅的Python』第1~4章笔记_数据结构、编码

由于1~4章内容零散且基础,所以统计一下涉及到的内容,记录一下,方便查阅(第一张图右键新页面打开即可看到清晰大图)

docker 安装ELK

参考文档: Docker ELK使用文档:http://elk-docker.readthedocs.io/ 1.拉取镜像 查看 Docker Hub 的镜像 docker search elk 拉取镜像 sudo docker pull sebp/elk 2.启动容器 docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 4560:4560 -it --na…

在Teams Hackathon上介绍LuckyDraw

很荣幸有机会在今天的Teams Hackathon上介绍LuckyDraw这个teams app。 因为到场的都是各路开发高手,所以当时在准备这个ppt的时候特别增加了难度等级,哈哈。 从如何构建云原生的Teams app,到IaC,重点讲了如何开发一个面向全球用户…

Word 2010 制作文档结构之图标自动编号设置

注意: 使用图片自动编号时,如果文档标题使用的样式是通过“将所选内容保存为新快速样式”所生成的样式,则图片自动编号不会生效 因此设置标题样式时,不要 新建样式,直接使用word预设的“标题 1”样式和“标题 2”样式即…

ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把该文件烧录到stm32上.在linux下给arm烧录程序主要使用openocd,这个软件开源,而且支持众多芯片,从ARM9到A8都可以,当然STM32也…

在Teams中对网站的URL特殊解析

Teams中有一个不太被大家注意的扩展点,名字叫Link unfurling,就是对于一些特殊域名的URL进行特别的解释。 可能这么说,大家还是无法理解,我们看一下下面这个图,当用户在message输入框中输入了一窜url后,Te…

Wireshark 在Windows下的安装

1、wireshark官网地址:https://www.wireshark.ort/ 下载抓包驱动:windows使用winpcap,Linux使用libcap2、安装下载好的wireshark程序包:3、安装winpcap插件:4、安装USBPcap插件:5、安装完成&…

Teams团队的成员列表API的已知问题

如果大家经常使用Graph API来对Teams进行操作管理的话,有时候会遇到一些奇怪的问题,我前两天还在Stack Overflow上回答了一个用户的问题,这个问题我自己也遇到过。所以我想用这篇文章来分享一下,万一以后大家遇到类似的问题&#…

OSChina 周三乱弹 —— 爸爸说,这个是从他硬盘里掉出来的

2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 焕焕 :分享郑秀文的单曲《唉声叹气》 《唉声叹气》 手机党少年们想听歌,请使劲儿戳(这里&am…

改进的二分查找

1 import java.util.Comparator;2 3 public class MyUtil {4 5 public static <T extends Comparable<T>> int binarySearch(T[] x, T key) {6 return binarySearch(x, 0, x.length- 1, key);7 }8 9 // 使用循环实现的二分查找 10 public static…

LuckyDraw app被评为Microsoft365 App Award

今天查了一下LuckyDraw app&#xff0c;突然发现我上半年开发的Teams app: LuckyDraw&#xff0c;竟然多了一个勋章图标&#xff0c;点进去一看是微软给我的app评了一个”Microsoft 365 App Award”。Super surprise!!&#x1f60d;&#x1f60d;&#x1f60d; 看来我必须要抓…