赞
踩
项目目录
1、抖音短视频数据抓取实战系列(〇)——前言
2、抖音短视频数据抓取实战系列(一)——模拟器的选择与设置
3、抖音短视频数据抓取实战系列(二)——Fiddler安装配置以及模拟器监测环境配置
4、抖音短视频数据抓取实战系列(三)——Fiddler抓取抖音用户详细信息数据
5、抖音短视频数据抓取实战系列(四)——Java解析Json文件数据并存库
6、抖音短视频数据抓取实战系列(五)——Mitmproxy的安装以及模拟器Mitmproxy证书安装
7、抖音短视频数据抓取实战系列(六)——Mitmproxy+python编写监测程序
8、抖音短视频数据抓取实战系列(七)——python连接MySQL数据库
9、抖音短视频数据抓取实战系列(八)——Mitmproxy抓取用户详细信息并入库
10、抖音短视频数据抓取实战系列(九)——自动化Appium的环境与参数配置
11、抖音短视频数据抓取实战系列(十)——获取抖音dom元素属性
12、抖音短视频数据抓取实战系列(十一)——Appium与Mitmproxy联合-自动取存抖音用户信息
13、抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集
1、接下来我们将Appium联合Mitmproxy,进行简易的自动化抓取存储抖音用户信息操作。
2、自动化脚本:
from appium import webdriver #WebDriverWait用来加入时间判断,有时候控件元素需要过一段时间才会出现 from selenium.webdriver.support.ui import WebDriverWait import time num=1 #配置信息 option={ "platformName": "android", "platformVersion": "5.1.0", "deviceName": "emulator-5554", #自动化测试包名 "appPackage": "com.ss.android.ugc.aweme", #自动化测试Activity "appActivity": "com.ss.android.ugc.aweme.splash.SplashActivity", #"appActivity": "com.ss.android.ugc.aweme.main.MainActivity", #再次启动不需要再次安装 "noReset": True, #unicode键盘 我们可以输入中文 "unicodekeyboard": True, #操作之后还原回原先的输入法 "resetkeyboard": True } #其中的4723就是appium服务启动时的端口号 driver = webdriver.Remote("http://localhost:4723/wd/hub",option) #得到窗口大小 def get_size(): x=driver.get_window_size()['width'] y=driver.get_window_size()['height'] return x, y def getuser(): global num size = get_size() time.sleep(1) try:#上划 # 定义滑动 x1 = int(size[0] * 0.5) x2 = int(size[0] * 0.7) y1 = int(size[1] * 0.9) y2 = int(size[1] * 0.2) # 模拟滑动 time.sleep(1) driver.swipe(x1, y1, x2, y2) print("**第{0}次上划**".format(num)) except: pass time.sleep(1) try:#左滑 # 定义滑动 x1 = int(size[0] * 0.9) x2 = int(size[0] * 0.3) y1 = int(size[1] * 0.5) y2 = int(size[1] * 0.5) # 模拟滑动 time.sleep(1) driver.swipe(x1, y1, x2, y2) print("**第{0}次左滑**".format(num)) except: pass # 点进去具体界面 time.sleep(1) try: if WebDriverWait(driver, 5).until(lambda x: x.find_element_by_id('com.ss.android.ugc.aweme:id/l6')): # 进入用户信息界面 print("**抓取第{0}个用户数据**".format(num)) time.sleep(1) driver.find_element_by_id('com.ss.android.ugc.aweme:id/l6').click() # 返回 # driver.find_element_by_id('com.ss.android.ugc.aweme:id/bgg').click()#头像 except: pass time.sleep(10)#延迟十秒运行,主要是博主这边比较卡 for num in range(1,1000):#设置执行测试 print("————开始执行第{0}次".format(num)) getuser() print("第{0}次执行完成————".format(num))
3、监听脚本:
import json import pymysql #函数名必须这样写 这是mitmdump规则 def response(flow): #下面这个网址是通过fiddler获取到的 但是有些数据我们无法解密,所以需要用mitmdump捕获数据包然后做分析\ if 'aweme.snssdk.com/aweme/v1/user/profile/other/?' in flow.request.url: result=json.loads(flow.response.text)['user'] print(" ") print(" ") print(" ") print(" ") print(" ") print("******************************************************************************") print(" ") user_info= {} if "nickname" in result: user_info["nickname"]=result["nickname"] else: user_info["nickname"]="伞梦" if "signature" in result: user_info["signature"]=result["signature"] else: user_info["signature"]="大家好。" if "uid" in result: user_info["uid"]=result["uid"] else: user_info["uid"]="-1" db = pymysql.connect("localhost", "root", "1234", "database", charset='utf8mb4') # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO usertest(nickname, uid, signature) VALUES ('{0}', '{1}','{2}')""".format(user_info['nickname'], user_info['uid'],user_info['signature']) #user_info['nickname'], user_info['uid'],user_info['signature'] try: # 执行sql语句 cursor.execute(sql) print(sql) print("success") # 提交到数据库执行 db.commit() except Exception as e: print("error") # Rollback in case there is any error print(e) db.rollback() # 关闭数据库连接 db.close() #有的用户修改了抖音号 print(user_info) print(" ") print("******************************************************************************") print(" ") print(" ") print(" ") print(" ") print(" ") 4、开启Appium服务。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020122111431126.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Mjg4NTU5,size_16,color_FFFFFF,t_70) 5、mitmdump -p 8900 --set block_global=false -s teacher.py开启Mitmproxy监听服务,附带监听脚本,在监听脚本父级运行。 ```python mitmdump -p 8900 --set block_global=false -s teacher.py
6、运行自动化脚本。
7、自动化抓取过程中。
8、这是程序运行一段时间,抓取的抖音用户数据。
9、Appium与Mitmproxy联合自动取存抖音用户信息成功。
项目目录
1、抖音短视频数据抓取实战系列(〇)——前言
2、抖音短视频数据抓取实战系列(一)——模拟器的选择与设置
3、抖音短视频数据抓取实战系列(二)——Fiddler安装配置以及模拟器监测环境配置
4、抖音短视频数据抓取实战系列(三)——Fiddler抓取抖音用户详细信息数据
5、抖音短视频数据抓取实战系列(四)——Java解析Json文件数据并存库
6、抖音短视频数据抓取实战系列(五)——Mitmproxy的安装以及模拟器Mitmproxy证书安装
7、抖音短视频数据抓取实战系列(六)——Mitmproxy+python编写监测程序
8、抖音短视频数据抓取实战系列(七)——python连接MySQL数据库
9、抖音短视频数据抓取实战系列(八)——Mitmproxy抓取用户详细信息并入库
10、抖音短视频数据抓取实战系列(九)——自动化Appium的环境与参数配置
11、抖音短视频数据抓取实战系列(十)——获取抖音dom元素属性
12、抖音短视频数据抓取实战系列(十一)——Appium与Mitmproxy联合-自动取存抖音用户信息
13、抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。