从wget数据中提取信息

时间:2016-05-17 19:38:21

标签: bash twitter

我想拉出并显示我通过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> on Twitter >

PS:这会算作自举吗?

EDIT ----------------------------- 这需要能够使用bash,因为我已经在bash中设置了一个系统。这只会帮助确认@s

2 个答案:

答案 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听起来更好。