2016-05-17 122 views
0

我想拉取並顯示通過ID指定的各種帳戶的twitter用戶名。我想我可以做到這一點,部分與wget。從wget數據中提取信息

echo what id would you like to search 
read ID 
wget https://twitter.com/intent/user?user_id=$ID > ~/temp/$ID 

這是真的,盡我所知,因爲我不知道如何從中獲取數據。我試過這個;

read ID 
source ~/temp/$ID 
echo $value 

要回顯標記爲「值」(用戶名多次標記爲「值」)的任何內容。

例子: 堆棧溢出的Twitter賬戶是@stackoverflow,他們的Twitter ID在:128700677所以我可以運行

wget https://twitter.com/intent/user?user_id=128700677 

和文件將是一個不錯的248線長的HTML文檔,你可以嘗試看看。所以基本上,有沒有辦法讓腳本要麼經歷,找到的最常用值=「」或者只是去/顯示<title>Stack Overflow (@StackOverflow) on Twitter</title>沒有<title></title>on Twitter

PS:請問這算不算自舉?

編輯----------------------------- 這需要能夠使用bash,因爲我已經有一個系統在bash中設置。這隻會幫助確認@

+0

使用[twitter API](https://dev.twitter.com/rest/public)得到良好定義的json –

+0

我不知道如何使用API​​,我已經有一個完整的bash腳本編寫。這隻會有助於觀衆的清晰度。 – Matt

回答

3

正如其他人說的那樣,最好使用twitter API來發現。但是,你可以嘗試把你的方法得遠一點,像

wget -O - "https://twitter.com/intent/user?user_id=${ID}" | grep -Po "(?<=screen_name=).*(?=')" | head -n 1 

過濾掉串像href='/intent/user?screen_name=StackOverflow'和提取後的第一個字符串中screen_name=部分是什麼。

P.S.老實說,在腳本中沒有注意到很多value=,並且在腳本中採用類似html的東西並不是最好的選擇,因爲您可能會通過這種方式獲得破壞性的東西。

1

screen_name可以與中獲取:

read -r ID ;\ 
screen_name=$(wget -q -O - http://twitter.com/intent/user?user_id="$ID" | sed -n 's/^.*button follow".*screen_name=\([^"]*\)".*$/\1/p') 
printf "%s\n" "$screen_name" 

nickname可以與中獲取:

read -r ID ;\ 
title=$(wget -q -O - https://twitter.com/intent/user?user_id=128700677 | sed -n 's/^.*<title>\(.*\) on Twitter<.title>.*$/\1/p') 
printf "%s\n" "$title" 

的使用REST API的聲音:

read -r ID ;\ 
nickname=$(wget -q -O - https://twitter.com/intent/user?user_id=128700677 | sed -n 's/^.*"nickname">\([^<]*\)<.*$/\1/p') 
printf "%s\n" "$nickname" 

title可以與被取一個更好的主意。