项目目录
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服务。

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总集