抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集

抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集

  • 1、模拟器自带的Xposed框架无法安装。
  • 2、Fiddler无法监测雷电模拟器上的数据。
  • 3、模拟器抖音用户详情页为空(未解决)。
  • 4、pip版本更新。
  • 5、mitmdump报killed by block_global错误。
  • 6、monitor.bat无法监测元素属性。
  • 7、python解析json字符串判断字段是否存在。

1、模拟器自带的Xposed框架无法安装。

博主提供了这边之前下载下来的几个框架,大家可以下载下来看下是否可以正常安装,链接:https://pan.baidu.com/s/1kJCDpE1YNMcgojEi4Oh2qw提取码:d3f4

2、Fiddler无法监测雷电模拟器上的数据。

博主上网查到的解释是fiddler无法监测高版本雷电模拟器的数据,解决方法也很简单换一个低版本的就行了,可以使用雷电官方推荐的稳定版本,或者使用3.0版本。

雷电模拟器历史版本下载地址:雷电模拟器更新日志
抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第1张图片

3、模拟器抖音用户详情页为空(未解决)。

博主这边在打开用户详情页的时候有时候会显示为空,但是把模拟器重开之后就可以展示了,这种情况是不是的发生也不知道什么原因。
抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第2张图片


4、pip版本更新。

使用代码“python -m pip install --upgrade pip”,进行更新。但可能每个人不一样,在用pip安装工具包的时候提示更新,会自带更新代码,用代码即可。

python -m pip install --upgrade pip

5、mitmdump报killed by block_global错误。

在运行Mitmproxy之后,mitmdump报的错误是 killed by block_global 是什么原因呢?
这是mitmdump的自我保护措施,它防止全球网络的连接,意思就是如果是本地局域网它不会阻拦,那该怎么办呢?
有两种解决办法:第一种,将模拟器的网络连接设置为桥接模式,这样就不会出现问题;
第二种办法是启动的时候加入参数 mitmdump -p 8889 --set block_global=false。

6、monitor.bat无法监测元素属性。

原因是monitor.bat无法截取android高版本的屏幕界面,博主这边在截取真机的时候就出现了问题,而博主的真机是android10,monitor无法进行截取。那应该怎么办呢,解决方法:
1、使用monitor.bat下面的uiautomatorviewer.bat进行屏幕截取。抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第3张图片
2、打开uiautomatorviewer.bat之后界面界面如下
抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第4张图片
3、进行如下操作,Screenshot放屏幕截图,UI XML Dump放屏幕源文件。
抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第5张图片
4、cmd中通过以下代码进行屏幕文件。

#截取屏幕源文件
adb shell uiautomator dump /sdcard/screen.uix
adb pull /sdcard/screen.uix E:/screen.uix
#截取屏幕图片
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png E:/screen.png

5、需要事先新建文件。
抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第6张图片
6、进行屏幕截取,如下则成功。
抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第7张图片
在这里插入图片描述
7、在uiautomatorviewer.bat中放入屏幕文件,这样我们就可以获取app元素属性了。
抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第8张图片
抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集_第9张图片

7、python解析json字符串判断字段是否存在。

在解析用户接口数据的时候我们发现,不同用户可能对应的json字段都不一样,你有这个字段,我没有,如果直接赋值user_info[“shopLogo”]=result[“result”][“shopLogo”],可能因为不存在该字段而报出异常,所以我们在赋值之前需要先判断是否存在该字段,即判断json字符串中是否存在对应的key,博主这边使用的是’key not json’,参考代码:

result=json.loads(flow.response.text) #解析出json字符串
user_info= {}
if "age" in result: #判断是否存在age键
    user_info["age"]=result["age"] #存在则赋值
else:
    user_info["age"]="20" #不存在则设为默认值

这是博主在进行项目过程中遇到的一系列问题,对大家有一定参考意义,如果大家在项目进行过程中,发现了其他问题,可以前来和博主交流,欢迎大家前来补充。

项目目录
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总集


——————结束——————

你可能感兴趣的:(自动化,数据抓取,java,python,爬虫,数据库)