excel抓取网页动态数据( 微信朋友圈数据入口搞定了怎么办?(图) )

优采云 发布时间: 2021-10-07 19:25

  excel抓取网页动态数据(

微信朋友圈数据入口搞定了怎么办?(图)

)

  

  2、 然后在首页点击【创建图书】-->【微信相册】。

  

  3、 点击【开始制作】-->【添加随机指定的图书编辑为好友】,长按二维码添加好友。

  4、 之后,耐心等待微信的制作。完成后,您将收到编辑器发送的消息提醒,如下图所示。

  至此,我们已经完成了微信朋友圈的数据录入,并获得了外链。

  确保朋友圈设置为【全开】,默认为全开,不知道怎么设置的请自行百度。

  

  5、 点击外部链接,然后进入网页,需要使用微信扫码授权登录。

  6、扫码授权后,即可进入微信网页版,如下图。

  

  7、 然后我们就可以写一个爬虫程序正常抓取信息了。这里,编辑器使用Scrapy爬虫框架,Python使用版本3,集成开发环境使用Pycharm。

  二、创建爬虫项目

  1、 确保您的计算机上安装了 Scrapy。然后选择一个文件夹,在该文件夹下输入命令行,输入执行命令:

  scrapy startproject weixin_moment

  ,等待生成Scrapy爬虫项目。

  2、在命令行输入cd weixin_moment,进入创建好的weixin_moment目录。然后输入命令:

  scrapy genspider'时刻''chushu.la'

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

  

  3、 执行以上两步后的文件夹结构如下:

  

  三、分析网络数据

  1、 进入微信首页,按F12,建议使用谷歌浏览器,查看元素,点击“网络”标签,然后勾选“保存日志”,即保存日志,如如下图所示。可以看到首页的请求方法是get,返回的状态码是200,表示请求成功。

  

  2、点击“Response”(服务器响应),可以看到系统返回的数据是JSON格式的。说明我们需要在程序中处理JSON格式的数据。

  

  3、点击微信“导航”窗口,可以看到数据按月加载。当导航按钮被点击时,它会加载相应月份的 Moments 数据。

  

  4、 点击【2014/04】月,然后查看服务器响应数据,可以看到页面显示的数据对应的是服务器的响应。

  

  5、查看请求方法,可以看到此时的请求方法已经变成了POST。细心的小伙伴可以看到,点击“下个月”或其他导航月份时,首页的网址没有变化,说明该网页是动态加载的。对比多个网页请求后,我们可以看到“Request Payload”下的数据包参数在不断变化,如下图所示。

  

  6、将来自服务器的响应数据展开,放到JSON在线解析器中,如下图:

  

  可以看到 Moments 的数据存储在 paras /data 节点下。

  接下来,我们将编写一个程序来捕获数据。然后继续深入。

  四、代码实现

  1、 修改 Scrapy 项目中的 items.py 文件。我们需要获取的数据是朋友圈和发布日期,所以这里定义了date和dynamic两个属性,如下图所示。

  

  2、要修改实现爬虫逻辑的主文件moment.py,必须先导入模块,尤其是items.py中的WeixinMomentItem类。要特别小心不要错过。然后修改start_requests方法,具体代码实现如下图所示。

  

  3、修改parse方法解析导航数据包。代码实现稍微复杂一些,如下图所示。

  

  l 需要注意的是,从网页中得到的响应是bytes类型的,显示需要转换成str类型进行解析,否则会报错。

  l 在POST请求的限制下,需要构造参数。特别注意参数中的年、月、索引都必须是字符串类型,否则服务器会返回400状态码,说明请求参数错误,导致程序运行时间报一个错误。

  l 还需要在请求参数中添加请求头,尤其是必须添加Referer(防盗链),否则重定向时找不到网页入口,导致错误。

  l 上面提到的代码构造方法不是唯一的写法,也可以是其他的。

  4、 定义 parse_moment 函数来提取 Moments 数据。返回的数据以JSON格式加载,JSON用于提取数据。具体代码实现如下图所示。

  

  5、 取消setting.py文件中ITEM_PIPELINES的注释,表示数据是通过这个管道处理的。

  

  6、 之后就可以在命令行运行程序了,在命令行中输入

  爬行时刻 -o moment.json

  , 然后就可以得到Moments的数据了,控制台输出的信息如下图所示。

  7、 之后,我们得到了一个moment.json文件,里面存储了我们朋友圈的数据,如下图。

  

  8、嗯,你真的没有看错。里面得到的数据实在是看不懂,不过这不是乱码,而是编码问题。解决这个问题的方法是删除原来的moment.json文件,然后在命令行重新输入如下命令:

  爬行时刻 -o moment.json -s FEED_EXPORT_ENCODING=utf-8,

  至此,可以看到编码问题已经解决,如下图所示。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线