2016-05-17 86 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可以与被取一个更好的主意。