动态网页抓取( 微信朋友圈数据入口搞定了,获取外链的方法有哪些? )
优采云 发布时间: 2021-12-25 01:09动态网页抓取(
微信朋友圈数据入口搞定了,获取外链的方法有哪些?
)
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在线解析器中,如下图:
如何使用Python网络爬虫捕捉微信朋友圈动态(二)
一、代码实现
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、 之后就可以在命令行运行程序了。在命令行输入scrapy crawl moment -o moment.json,就可以得到朋友圈的数据了。控制台输出的信息如下图所示。
7、之后,我们得到了一个moment.json文件,里面存储了我们朋友圈的数据,如下图。
8、嗯,你真的没有看错。里面得到的数据确实是看不懂,但这不是乱码,而是编码问题。解决这个问题的方法是删除原来的moment.json文件,然后在命令行重新输入如下命令:scrapy crawl moment -o moment.json -s FEED_EXPORT_ENCODING=utf-8,可以看到编码问题已经解决,如下图所示。