/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 줄을 선택하는 이유입니다).트위터API 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
그러면 숫자 문자열이 한 줄에 배치되고 문자열을 검색한 다음 그 뒤에 있는 문자열이 인쇄됩니다.
이것은 진짜 해킹입니다. HTML을 구문 분석하는 올바른 방법은 HTML 구문 분석기를 사용하는 것입니다. 그러나 제어된 문자열 입력만 필요한 경우에는 작업을 수행할 수 있습니다.
조금 더 깔끔한 방법은 awk를 사용하는 것인데, 이런 종류의 일을 많이 다룬다면 확실히 배울 가치가 있습니다.