QQ空间Python爬虫v2.0--点赞数据分析
生活随笔
收集整理的這篇文章主要介紹了
QQ空间Python爬虫v2.0--点赞数据分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
記上一次v1.0的空間爬蟲之后,準備再寫一個爬蟲分析本人說說的點贊情況
?
首先分析Json:
?
可以發現點贊的節點為data-->vFeeds(list)-->like-->likemans(list)-->user-->nickname&uin
代碼如下:
1 for i in range(0, page): 2 try: 3 html = requests.get(url_x + str(numbers) + url_y, headers=headers).content 4 data = json.loads(html) 5 6 if 'vFeeds' in data['data']: 7 for vFeed in data['data']['vFeeds']: 8 if 'like' in vFeed: 9 for like_man in vFeed['like']['likemans']: 10 qq_list.append(int(like_man['user']['uin'])) 11 # 這個dict需要定義在循環內,因為下面list.append()是引用傳遞 12 like_me_map = dict() 13 like_me_map['nick_name'] = like_man['user']['nickname'] 14 like_me_map['qq'] = like_man['user']['uin'] 15 like_me_list.append(like_me_map) 16 numbers += 40 17 time.sleep(10) 18 print('正在分析前' + str(numbers) + '條數據') 19 except: 20 numbers += 40 21 time.sleep(10) 22 print('第' + str(numbers) + '條數據附近分析出錯')?
like_me_list是一個list of dict,qq_list是所有QQ號的集合,現在定義一個dict來方便查詢qq與昵稱:
1 # 建立一個QQ與昵稱對應的map,以便查詢 2 qq_name_map = dict() 3 for man in like_me_list: 4 qq_name_map[man['qq']] = man['nick_name']?
?
利用set實現自動去重并計算count:
1 # 計算點贊次數,并將次數與QQ映射存入map 2 qq_set = set(qq_list) 3 for qq in qq_set: 4 like_me_result[str(qq)] = qq_list.count(qq)?
?
再按點贊次數降序排序處理,此處代碼比較丑陋=。=:
1 # 以下處理為:按點贊次數排序后存入一個新的map作為最終結果,代碼很不優雅=。= 2 num_result = sorted(like_me_result.values(), reverse=True) 3 print(num_result) 4 for num in num_result: 5 for key in like_me_result.keys(): 6 if like_me_result[key] == num: 7 result[qq_name_map[key]+'(' + key + ')'] = num?
最后,寫入文件,大功告成:
1 try: 2 with open(os.getcwd() + '\\' + 'like_me_result.txt', 'wb') as fo: 3 for k, v in result.items(): 4 record = k + ': 點贊' + str(v) + '次!\r\n' 5 fo.write(record.encode('utf-8')) 6 print("點贊數據結果分析寫入完畢") 7 8 except IOError as msg: 9 print(msg)?
?
?然而最后我發現一個問題,就是QQ空間返回的json點贊數據并不是完整的,如圖:
num代表點贊人數,一共13人點贊,但是我觀察發現所有說說點贊人數集合likemans最多只有3個
我猜可能是因為mobile QQ空間頁面不需要顯示點贊信息,所以才沒有完整的點贊信息,如圖:
?
UI顯示上面并沒有點贊的信息顯示=。=
所以這個爬蟲只能算一個半成品
?
轉載于:https://www.cnblogs.com/neilshi/p/7942923.html
總結
以上是生活随笔為你收集整理的QQ空间Python爬虫v2.0--点赞数据分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AVA 8 :从永久区(PermGen)
- 下一篇: Python09 字典