我想拉出并显示我通过ID指定的各种帐户的推特用户名。我想我可以用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
回显任何标记为“value”的内容(用户名多次标记为“value”)。
实施例: Stack Overflow的Twitter帐户是@stackoverflow,他们的推特ID是:128700677所以我可以运行
wget https://twitter.com/intent/user?user_id=128700677
并且文档将是一个很好的248行HTML文档,你可以试试看看。所以基本上,有没有办法让脚本经历并找到最常见的值=“”或者只是在没有<title>Stack Overflow (@StackOverflow) on Twitter</title>
和<title></title>
PS:这会算作自举吗?
EDIT ----------------------------- 这需要能够使用bash,因为我已经在bash中设置了一个系统。这只会帮助确认@s
答案 0 :(得分: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。我没有注意到html中的很多value=
,说实话,在你的脚本中找到像html这样的东西并不是最好的事情,因为你可能会以这种方式获得破坏性的东西。 / p>
答案 1 :(得分: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 ;\
nickname=$(wget -q -O - https://twitter.com/intent/user?user_id=128700677 | sed -n 's/^.*"nickname">\([^<]*\)<.*$/\1/p')
printf "%s\n" "$nickname"
title
可以通过以下方式获取:
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听起来更好。