文章目录
1. 成果展示
2. 环境配置
环境配置教程请参考我的这篇文章:【python】自动化连接和操作手机微信
3. 爬朋友圈
爬所有用户前100天(最多只能爬到173天前)发的朋友圈数据,包括:用户昵称,文本内容和发布时间。
from appium import webdriver
import time
# 连接手机微信
caps = {
"platformName": "Android",
"deviceName": "emulator-5554",
"platformVersion": "6.0.1",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI",
"noReset": "True",
"unicodeKeyboard": "True",
"resetKeyboard": "True"
}
driver = webdriver.Remote(\'http://127.0.0.1:4723/wd/hub\', caps)
# 爬朋友圈数据
time.sleep(10)
print(\'点击发现\')
driver.find_elements_by_id(\'com.tencent.mm:id/cnh\')[2].click()
time.sleep(5)
print(\'点击朋友圈\')
driver.find_element_by_id(\'com.tencent.mm:id/b3b\').click()
time.sleep(5)
print(\'开始爬虫\')
with open(\'pyqs.csv\', \'a\', encoding=\'utf_8_sig\') as f:
f.write(\'昵称,文本,时间\'+\'\n\')
while True:
for item in driver.find_elements_by_id(\'com.tencent.mm:id/fn9\'):
try:
name = item.find_element_by_id(\'com.tencent.mm:id/e3x\').text
except:
name = \'\'
try:
text = item.find_element_by_id(\'com.tencent.mm:id/b_e\').text
except:
try:
text = item.find_element_by_id(\'com.tencent.mm:id/gbx\').text
except:
text = \'\'
try:
time = item.find_element_by_id(\'com.tencent.mm:id/ij\').text
except:
time = \'\'
if name != \'\' and text != \'\' and time != \'\':
name = name.replace(\',\', \' \')
text = text.replace(\',\', \' \').replace(\'\n\', \' \')
each = \',\'.join([name, text, time])
with open(\'pyqs.csv\', \'a\', encoding=\'utf_8_sig\') as f:
f.write(each+\'\n\')
print(each)
else:
pass
# 下滑
driver.swipe(0, 1400, 0, 700)
if \'101天前\' in time:
print(\'爬取结束\')
break
else:
pass
4. 数据处理
爬下来的数据存到pyqs.csv文件中,我们发现有很多重复数据,做一下去重:
\'\'\'依赖模块
pip install pandas
\'\'\'
import pandas as pd
df = pd.read_csv(\'pyqs.csv\')
df = df.drop_duplicates()
df.to_csv(\'pyqs2.csv\', encoding=\'utf_8_sig\')
5. 数据分析
数据分析代码请参考我的这篇文章:【python】B站弹幕数据分析及可视化(爬虫+数据挖掘)
5.1. 词频分析
利用jieba库做词频分析,并用pyecharts库绘制词云图。
5.1.1. 昵称词频分析
可以看出你的微信好友中谁发朋友圈最勤。(出于对隐私的保护,请允许我打一下码)
5.1.2. 内容词频分析
可以看出你的好友经常关注或谈论哪些内容。
5.2. 情感分析
利用snownlp库做情感分析,并用pyecharts库绘制饼状图。由饼状图可知:微信好友中大多人发的内容都是比较积极的。