쉘 변수에서 웹 페이지의 내용을 얻는 방법은 무엇입니까?


115

Linux에서 URL을 가져오고 셸 스크립트의 변수에 해당 내용을 가져 오는 방법은 무엇입니까?

답변:


189

wget명령을 사용 하여 페이지를 다운로드하고 다음과 같이 변수로 읽을 수 있습니다.

content=$(wget google.com -q -O -)
echo $content

페이지 내용 을 덤프 할 파일의 이름을 지정할 수 있는 -O옵션을 사용합니다 . 표준 출력에 덤프를 가져 와서 변수에 수집하도록 지정 합니다 . 조용한 옵션을 추가하여 wget 출력을 끌 수 있습니다 .wgetwget-content-q

다음과 같이 curl 명령을 사용할 수도 있습니다 .

content=$(curl -L google.com)
echo $content

-L요청한 페이지가 이동되었을 수 있으므로 옵션 을 사용해야합니다 . 이 경우 새 위치에서 페이지를 가져와야합니다. -L또는 --location옵션이 우리를 도와줍니다.


이것은 정말 깔끔한 트릭입니다. 프록시 서버에서 PHP 스크립트를 통해 쉘 스크립트를 호출합니다. 요청을 받으면 프록시 서버는 2 시간 후에 자동으로 종료되는 값 비싼 서버를 켭니다. Jenkins 콘솔 레코드에 피드백하려면 표준 출력에 대한 wget의 출력이 필요합니다.
데니스

나는 아직 이것을 얻지 못했다. 예를 들어, 누구든지 방법에 대해 시연 할 수있다. 이 링크에 대한 변수에 img 태그를 가져 옵니다 . www2.watchop.io/manga2/read/one-piece/1/4 ??
juggernauthk108

@ juggernaut1996 : 별도의 질문이어야합니다. 간단히 말해서 페이지를 다운로드 src하고 올바른 요소 의 속성을 추출한 다음 해당 페이지 를 다운로드 해야 합니다. tq 를 설치 하면 다음 명령을 수행해야합니다.curl -s http://ww1.watchop.io/manga2/read/one-piece/1/4 | tq -j -a src "#imgholder a img" | xargs wget
pyrocrasty

wget을 1.14 버전은 허용되지 convert_links = on함께 -O-옵션을 선택합니다. 오류로 인해 실패합니다 -k can be used together with -O only if outputting to a regular file.. 예상됩니까?
Prasad Bonthu

28

명령 줄에서 페이지를 가져 오는 방법에는 여러 가지가 있지만 코드 소스 또는 페이지 자체를 원하는지 여부도 다릅니다.

코드 소스가 필요한 경우 :

컬 포함 :

curl $url

wget 사용 :

wget -O - $url

그러나 브라우저로 볼 수있는 것을 얻으려면 lynx가 유용 할 수 있습니다.

lynx -dump $url

이 작은 문제에 대한 많은 해결책을 찾을 수 있다고 생각합니다. 아마도 해당 명령에 대한 모든 매뉴얼 페이지를 읽어야 할 것입니다. 그리고 $urlURL 로 바꾸는 것을 잊지 마십시오 :)

행운을 빕니다 :)



3
content=`wget -O - $url`

@rjack : (하지만 당신이 링크 한 기사는 $ (...) 구문에 대해 꽤 좋은 경우를 만듭니다.)
Jim Lewis

3

LWP가 설치되어 있는 경우 단순히 " GET " 이라는 바이너리를 제공합니다 .

$ GET http://example.com
<! DOCTYPE HTML PUBLIC "-// W3C // DTD HTML 4.01 Transitional // EN">
<HTML>
<HEAD>
  <META http-equiv = "Content-Type"content = "text / html; charset = utf-8">
  <TITLE> 예시 웹 페이지 </ TITLE>
</ HEAD> 
<본체>  
<p> & quot; example.com & quot;을 입력하여이 웹 페이지로 이동했습니다.
& quot; example.net & quot;, & quot; example.org & quot
  또는 & quot; example.edu & quot; 웹 브라우저로. </ p>
<p>이 도메인 이름은 문서 용으로 예약되어 있으며 사용할 수 없습니다. 
  등록을 위해. <a href="http://www.rfc-editor.org/rfc/rfc2606.txt"> RFC를 참조하십시오.
  2606 </a>, 섹션 3. </ p>
</ BODY>
</ HTML>

wget -O-, curllynx -source유사하게 작동합니다.


2

curl또는 wget을 사용 하여 원시 데이터를 검색하거나을 사용 w3m -dump하여 웹 페이지의 멋진 텍스트 표현을 사용할 수 있습니다 .

$ foo=$(w3m -dump http://www.example.com/); echo $foo
You have reached this web page by typing "example.com", "example.net","example.org" or "example.edu" into your web browser. These domain names are reserved for use in documentation and are not available for registration. See RFC 2606, Section 3.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.