QQ空間Python爬蟲v2.0--點贊資料分析

來源:互聯網
上載者:User

標籤:sts   去重   val   time   半成品   code   col   values   實現   

記上一次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 += 4017         time.sleep(10)18         print(‘正在分析前‘ + str(numbers) + ‘條資料‘)19     except:20         numbers += 4021         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映射存入map2 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顯示上面並沒有點贊的資訊顯示=。=

所以這個爬蟲只能算一個半成品

 

QQ空間Python爬蟲v2.0--點贊資料分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.