刚开始使用selenium进行的人机交换,通过搜索框获取各帖子的内容,但这样可获取的信息太少,所以我又去抓包,在包中发现了更多详细的信息,所以又改为抓包获取信息。
我们先打开开发者工具中的network,在进行微博关键词搜索的过程中,观察是否存在包,直接包含所有数据。我们可以发现微博有一个“getIndex?containerid=100103type%3D1%26q%3D%E6%97%A0%E8%8A%B1%E6%9E%9C&page_type=searchall”的包,点击“preview”,我们可以看到其包含我们搜索的关键词,并且存在data。
继续观察data,我们很明显的可以看到 cards下有多条数据,并且个数与显示的帖子的数量一致,说明我们找对了包。
继续寻找我们想要爬取的参数,我们可以发现在mblog下就存在我们需要的参数,那么现在就确定该包就是我们需要的,开始编写代码。
上方代码抓取的是“综合”下的帖子信息,并且只抓取了一个包。当页面触底时,微博会再次发起一个包,流程如上,观察第二页的包的url:“https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D1%26q%3D%E6%97%A0%E8%8A%B1%E6%9E%9C&page_type=searchall&page=2”,我们发现其实实际上就是加了“&page=2”这部分,那么多页面爬取的代码就容易编写了。
1.如果需要大量数据进行研究,那么应该抓取“实时”的帖子信息,不定期的更新数据。