接下来,我们将实现微信朋友圈的爬取。
如果直接用 Charles 或 mitmproxy 来监听微信朋友圈的接口数据,这是无法实现爬取的,因为数据都是被加密的。而 Appium 不同,Appium 作为一个自动化测试工具可以直接模拟 App 的操作并可以获取当前所见的内容。所以只要 App 显示了内容,我们就可以用 Appium 抓取下来。
-
本节目标
本节我们以 Android 平台为例,实现抓取微信朋友圈的动态信息。动态信息包括好友昵称、正文、发布日期。其中发布日期还需要进行转换,如日期显示为 1 小时前,则时间转换为今天,最后动态信息保存到 MongoDB。 -
准备工作
请确保 PC 已经安装好 Appium、Android 开发环境和 Python 版本的 Appium API。Android 手机安装好微信 App、PyMongo 库,安装 MongoDB 并运行其服务,安装方法可以参考第 1 章。 -
初始化
首先新建一个 Moments 类,进行一些初始化配置,如下所示:
PLATFORM = ‘Android’
DEVICE_NAME = ‘MI_NOTE_Pro’
APP_PACKAGE = ‘com.tencent.mm’
APP_ACTIVITY = ‘.ui.LauncherUI’
DRIVER_SERVER = ‘http://localhost:4723/wd/hub’
TIMEOUT = 300
MONGO_URL = ‘localhost’
MONGO_DB = ‘moments’
MONGO_COLLECTION = ‘moments’
class Moments():
def init(self):
“”“初始化”""
# 驱动配置
self.desired_caps = {
‘platformName’: PLATFORM,
‘deviceName’: DEVICE_NAME,
‘appPackage’: APP_PACKAGE,
‘appActivity’: APP_ACTIVITY
}
self.driver = webdriver.Remote(DRIVER_SERVER, self.desired_caps)
self.wait =