/pbs.twimg.com\/profile_images\/
次の文字列を直接エコーする必要があります。これは私がいくつかの助けを借りて作った検索ツールであり、誰もがお勧めします。sedしかし、実際に使用したことはありませんsedだから私はよく理解していません。しかし、これはスクリプトです。
read -r Username ;\
wget -q -O - https://twitter.com/"${Username}" | \
sed -n '/data-screen-name=.'"${Username}"'".*data-user-id=/I \
{s/^.*data-screen-name=.'"${Username}"'".*data-user-id="\([0-9]*\)".*$/\1/Ip;q}'
スクリプトはほとんどのアカウントで正常に機能しますが、アカウントが非公開の場合は失敗します。代わりに検索すると、/pbs.twimg.com\/profile_images\/
元のスクリプトなどの他の変数ではなくIDのみが表示されます(これがdata-screem-name=
I can't use the行を選択する理由です)。TwitterAPI API の入手方法さえ知らない人にエクスポートするので、ユーザーができるだけ使いやすくなります。
複数のSO / SE投稿を見た結果、これは重複しているようには見えません。それならごめんなさい。
編集 - 個人設定ファイルでは、その行がHTML内にないため、機能しません。より詳細に調査した結果、/pbs.twimg.com\/profile_images\/
ユーザーIDが個人アカウントと公開アカウントの両方に提供されることがわかりました。
サンプル:
今私のアカウントでこれを実行すると動作し、私のIDが表示されます。
Username="thematrix1o1"
717835108540030976
ただし、プライベートアカウントで実行するとIDを取得できません(行が存在しないため)。
Username="touchmytweets"
.
(報告書には点がなく、空白のみあり)
私が探すべきイメージはこれです。https://i.stack.imgur.com/WSACJ.jpg
ご覧のとおり、彼女のIDは次のとおりです。726618076633030656
小規模サンプルレポート
ile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/
726618076633030656\/wwYbLwbs_normal.jpg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/
726618076633030656\/wwYbLwbs_normal.jpg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/418265825\/1463628965","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"has_extended_profile":false,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":n
答え1
出力には、ランダムな量のランダムなコンテンツと関心のある行が含まれます。行を選択し、ID以外のすべての項目を削除して結果を印刷します。
sed -n '/profile_images/s/.*profile_images\\\/\([0-9]\+\).*/\1/p'
行を処理した直後に終了すると、やや効率的になる可能性があります。
実際、これは元のコードの機能とほぼ同じです。変更される唯一のものは使用される正規表現です。
答え2
私は、干し草の山で針を見つけることと同じことに直面したとき、可能であれば、それをライン中心の問題に変えるのが好きです。おそらく次のようにすることができます:
$ sed -E 's:[0-9]+:\n&\n:g' filename \
| grep -F -A1 '/pbs.twimg.com\/profile_images\' | tail -1
これにより、数字の文字列が1行に配置され、文字列を検索してから、後ろの文字列が印刷されます。
これは本当のハッキングです。 HTMLを解析する正しい方法は、HTMLパーサーを使用することです。ただし、制御された文字列入力のみが必要な場合は、操作を実行できます。
もう少しきれいな方法はawkを使用することですが、このようなことをたくさん扱う場合は確かに学ぶ価値があります。