2010-09-18 19 views

Odpowiedz

133

Można użyć polecenia wget pobrać stronę i przeczytać go w zmiennej jako:

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

Używamy opcji -O z wget co pozwala nam określić nazwę pliku, do którego wget zrzuca zawartość strony. Podajemy -, aby uzyskać zrzut na standardowe wyjście i pobrać je do zmiennej content. Możesz dodać opcję wyciszenia -q, aby wyłączyć wyjście wget.

Można użyć komendy curl tym aswell jak:

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

Musimy wykorzystać opcję -L jako strony jesteśmy wzywającego może zostały przeniesione. W takim przypadku musimy pobrać stronę z nowej lokalizacji. Opcja lub --location pomaga nam w tym.

+2

Wyjaśniłem, a twoje pytanie zostało zmienione od tego czasu, więc mój downwote nic już nie znaczy ... (W rzeczywistości przerodziło się w upto). –

+0

To naprawdę fajna sztuczka. Przywołuję skrypt powłoki za pośrednictwem skryptu php na serwerze proxy. Na żądanie serwer proxy włącza drogie serwery, które wyłączają się po 2 godzinach. Potrzebuję danych wyjściowych z wget dla standardowego wyjścia, aby wrócić do rekordu konsoli Jenkins. – Dennis

+0

Muszę jeszcze to zrobić ... Czy ktoś może zdemaskować, jak np. uzyskać tag img w zmiennej dla tego linku http://www2.watchop.io/manga2/read/one-piece/1/4 ?? – juggernaut1996

2
content=`wget -O - $url` 
+2

'$ (...)' jest preferowane w porównaniu z '' ... '', zobacz http://mywiki.wooledge.org/BashFAQ/082 – Giacomo

+2

Chyba pokazuję mój wiek. Wracając do tego dnia, wszystkie _we_ były backtikami ... a my im się to podobało! A teraz zejdź z mojego trawnika! –

+0

@rjack: (Ale artykuł, z którym się łączysz, ma całkiem niezłe uzasadnienie dla składni $ (...)). –

2

Można użyć curl lub wget do pobierania danych surowych, lub użyć w3m -dump, aby uzyskać ładną reprezentację tekstową strony internetowej.

$ 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. 
20

istnieje wiele sposobów, aby uzyskać stronę w linii poleceń ... ale to zależy również jeśli chcesz kod źródłowy lub samą stronę:

Jeśli potrzebujesz kodu źródłowego

z curl: curl $url

z wget: wget -O - $url

ale jeśli wa Aby uzyskać to, co można zobaczyć za pomocą przeglądarki, Lynx może być przydatny: lynx -dump $url

Myślę, że możesz znaleźć tak wiele rozwiązań dla tego małego problemu, może powinieneś przeczytać wszystkie strony man dla tych poleceń.I nie zapomnij, aby zastąpić $ url przez url :)

Powodzenia :)

2

Jeśli masz LWP zainstalowany, po prostu dostarcza binarny o nazwie „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>Example Web Page</TITLE> 
</HEAD> 
<body> 
<p>You have reached this web page by typing &quot;example.com&quot;, 
&quot;example.net&quot;,&quot;example.org&quot 
    or &quot;example.edu&quot; into your web browser.</p> 
<p>These domain names are reserved for use in documentation and are not available 
    for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC 
    2606</a>, Section 3.</p> 
</BODY> 
</HTML> 

wget -O-, curl i lynx -source zachowują się podobnie.

Powiązane problemy