99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀對(duì)自己的上網(wǎng)搜索記錄進(jìn)行爬蟲(chóng)是怎樣一種體驗(yàn)
對(duì)自己的上網(wǎng)搜索記錄進(jìn)行爬蟲(chóng)是怎樣一種體驗(yàn)
2017-05-11
收藏
前言

國(guó)外習(xí)慣用 Google 進(jìn)行搜索,可以毫不夸張的說(shuō) Google 已經(jīng)徹底地融入了日常生活。如今人們一有什么問(wèn)題都習(xí)慣谷歌一下,敲敲鍵盤(pán),你就能找到想要的答案。

與此同時(shí),你的 Google 搜索記錄也反映了某段時(shí)間你的心態(tài),好奇心,追求甚至是擔(dān)憂。如果你已注冊(cè)了 Google 帳戶(通常是 Gmail ),根據(jù)你對(duì)隱私項(xiàng)的設(shè)置, Google 能夠記錄并提供你的搜索歷史。下面我將告訴大家如何獲取和分析你的 Google 搜索記錄,以及進(jìn)行數(shù)據(jù)可視化。


1. 下載數(shù)據(jù)

首先進(jìn)入:https://takeout.google.com/settings/takeout,在這里你可以找到各種個(gè)人數(shù)據(jù)集,包括你的 GChat 對(duì)話和電子郵件。 取消全選(“全不選”),然后選擇“搜索”并點(diǎn)擊“下一步”。在下一頁(yè),選擇文件類(lèi)型(.tgz )和傳遞方式。 (我選擇通過(guò)郵件發(fā)送的下載鏈接)。打開(kāi)該電子郵件后,點(diǎn)擊,下載存檔并解壓縮,你將得到文件夾“ Takeout ”和“ Searches ”中的一些文件。


2. 準(zhǔn)備數(shù)據(jù)

數(shù)據(jù)是 JSON 格式,這種格式比較規(guī)整,可以通過(guò)通過(guò) Python 變成向量:

import json
import os
import datetime
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from collections import Counter

files= os.listdir('Searches')
del files[0]

searches = []
dates = []
for file in files:
    with open('Searches/%s'%(file)) as json_data:
        d = json.load(json_data)
    for i in range(len(d['event'])):
        for j in range(len((d['event'][i][u'query'][u'id']))):
            searches.append(d['event'][i][u'query'][u'query_text']) 
            dates.append(d['event'][i][u'query'][u'id'][j][u'timestamp_usec'])

dates = [datetime.datetime.fromtimestamp(int(i)/1000000).strftime('%Y-%m-%d %H:%M:%S') 
         for i in dates]

searches = [i.encode('utf-8') for i in searches]


3. 分析數(shù)據(jù)

我們可以看到截止到 2014 年秋季的 886 天內(nèi),我總共進(jìn)行了近 64,000 次 Google 搜索,每天超過(guò) 70 次。 我每天在工作時(shí)都使用個(gè)人筆記本電腦,這能夠解釋這一巨大的搜索數(shù)量,同時(shí)也說(shuō)明我并沒(méi)有夸大 Google 搜索的普遍性!

數(shù)據(jù)中有很多值得挖掘的模式。比如每小時(shí)搜索數(shù)據(jù):

hours = [datetime.datetime.strptime(i, '%Y-%m-%d %H:%M:%S').hour for i in dates]
n, bins, patches = plt.hist(hours, 24, facecolor='blue', alpha=0.75)
plt.xticks([0,6,12,18], ['12 AM','6 AM', '12 PM', '6 PM'], fontsize=18)
plt.xlabel('Hour', fontsize=24)
plt.ylabel('Frequency', fontsize=24)
plt.gcf().set_size_inches(18.5, 10.5, forward=True)

plt.show()



每小時(shí)圖反映了我的作息規(guī)律:當(dāng)我沒(méi)有使用 Google 時(shí),很可能我在睡覺(jué)。在到達(dá)工作地點(diǎn)之后,我開(kāi)始各種搜索,在下午 3 點(diǎn)左右達(dá)到高峰值。晚餐后經(jīng)過(guò)簡(jiǎn)短的休息,我再次開(kāi)始搜索,在 10 點(diǎn)左右達(dá)到又一個(gè)高峰,一直持續(xù)到過(guò)了凌晨才結(jié)束。(我是一只夜貓子)。

我都在 Google 搜索些什么呢?可以對(duì)詞頻進(jìn)行分析排序:

combo = ' '.join(searches)
freqs = Counter(combo.split())
top = freqs.most_common(40)

words = []
counts = []
for i in range(40):
    words.append(top[i][0])
    counts.append(top[i][1])

words.reverse()
counts.reverse()

plt.barh(range(40), counts, align='center', color='b', alpha=0.75)
plt.yticks(range(40), words, fontsize=16)
plt.gcf().set_size_inches(18.5, 10.5, forward=True)

plt.show()



英文中常常使用的 “the”“of” 可以忽略不計(jì),在列表中仍然可以看到過(guò)去幾年中我的心路歷程。我經(jīng)常寫(xiě)博客,而且會(huì)避免過(guò)度使用同一個(gè)詞,因此會(huì)常常搜索同義詞。 我住在紐約(“nyc”),常常去健身房(“nysc”)。 我是一個(gè)有追求的數(shù)據(jù)科學(xué)家(“data”,“python”,“r”)。 我是典型的美國(guó)人(“baseball”,“States”),同時(shí)也很關(guān)心時(shí)事(“trump”)。

當(dāng)然,時(shí)間段對(duì)搜索詞有很大的影響。人們不會(huì)因?yàn)橄嗤脑蛎刻於妓阉魍患?,同時(shí)也不會(huì)每天想同樣的事。因此,分析隨著時(shí)間推移一些特定的詞的變化很有意義。這能夠讓我們了解興趣和關(guān)注點(diǎn)是如何隨著時(shí)間的推移而變化的:

d = {"search": searches,
    "time": dates}
googled = pd.DataFrame(d)

dt = datetime.datetime(2014, 10, 1)
end = datetime.datetime(2017, 3, 5)
step = datetime.timedelta(days=7)

weekly = []

while dt < end:
    weekly.append(dt.strftime('%Y-%m-%d %H:%M:%S'))
    dt += step

# finding/smoothing/normalizing weekly data only shown for 'trump' but same process applies to the other terms
trump_weeks = []
for i in range(len(weekly)-1):
    trump_weeks.append(sum((googled['time'] > weekly[i]) & 
              (googled['time'] < weekly[i+1]) &
              (googled['search'].str.contains('trump'))))

term = len(trump_weeks)-1
trump_weeks_smooth = [(trump_weeks[i] + trump_weeks[i-1] +trump_weeks[i+1])/3 for i in range(1, term)]
trump_weeks_smooth_norm = [i/float(max(trump_weeks_smooth)) for i in trump_weeks_smooth]

plt.plot(range(term-1), trump_weeks_smooth_norm, label='trump', linewidth=5.0)
plt.plot(range(term-1), warriors_weeks_smooth_norm, label='warriors', linewidth=5.0)
plt.plot(range(term-1), ibm_weeks_smooth_norm, label='ibm', linewidth=5.0)
plt.plot(range(term-1), python_weeks_smooth_norm, label='python', linewidth=5.0)
plt.xticks([30,60,90,120], ['May 2015','November 2015', 'June 2016', 'January 2017'], fontsize=15)
plt.legend()

plt.gcf().set_size_inches(18.5, 10.5, forward=True)

plt.show()



雖然你我素未謀面,但是你完全可以通過(guò)這個(gè)圖來(lái)了解我是誰(shuí),以及在某段時(shí)間內(nèi)我在想些什么。 畢業(yè)后,直到 2015 年夏天我都在 IBM (紅色)工作。有好幾個(gè)月,我一直特別關(guān)注金州勇士隊(duì)創(chuàng)紀(jì)錄的賽季(綠色)。 在 2016 年春天,我決定學(xué)習(xí) Python (淺藍(lán)色)。接近總統(tǒng)選舉時(shí),我非常關(guān)注特朗普(深藍(lán)色),其中中斷了一段時(shí)間,直到他的就職典禮又開(kāi)設(shè)重新關(guān)注。

結(jié)語(yǔ)

讀完從這篇文章,會(huì)讓你感受到 Google 無(wú)所不知的強(qiáng)大性。這些反映在從地圖到 GChat 對(duì)話以及個(gè)人日歷等數(shù)據(jù)。個(gè)人的電子足跡涵蓋了多少訊息,以及誰(shuí)有權(quán)獲得這些數(shù)據(jù),這都值得我們深思。

但可以肯定的是,你有權(quán)查看你的搜索記錄,并且了解當(dāng)中的意義。我們都漸漸失去了在睡前回顧一天做了些什么的習(xí)慣,在某種程度上 Google 充當(dāng)了類(lèi)似日記的功能,而且反映的內(nèi)容更真實(shí)。

在這里鼓勵(lì)你試著下載自己的數(shù)據(jù),嘗試分析。完整的代碼鏈接如下。如果你習(xí)慣用的是某度搜索的話,那怪我咯~

https://github.com/WalkerHarrison/Google_searches


原作者 Walker Harrison
編譯 CDA 編譯團(tuán)隊(duì)
本文為  CDA 數(shù)據(jù)分析師原創(chuàng)作品,轉(zhuǎn)載需授權(quán)


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }