Як отримати вміст веб-сторінки в змінній оболонки?


115

Як в Linux можна отримати URL-адресу та отримати її вміст у змінній в оболонці?

Відповіді:


189

Ви можете використовувати wgetкоманду для завантаження сторінки та читання її у змінній як:

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

Ми використовуємо -Oпараметр, wgetякий дозволяє нам вказати ім'я файлу, в який wgetскидається вміст сторінки. Ми визначаємо, -щоб отримати дамп на стандартний вихід і збирати його в змінну content. Ви можете додати -qтиху опцію для вимкнення виводу wget.

Ви можете використовувати команду curl для цього також:

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

Нам потрібно використовувати цю -Lопцію, оскільки сторінка, яку ми просимо, може бути перенесена. У такому випадку нам потрібно отримати сторінку з нового місця розташування. У цьому нам допомагає варіант -Lабо --locationваріант.


Це дійсно акуратний трюк. Я викликаю скрипт оболонки через скрипт php на проксі-сервері. На запит проксі-сервера вмикає дорогі сервери, які вимикаються через 2 години. Мені потрібен вихід від 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.. Чи очікується?
Прасад Бонту

28

Існує багато способів отримати сторінку з командного рядка ... але це також залежить від того, чи потрібно джерело коду чи саму сторінку:

Якщо вам потрібно джерело коду:

з завитком:

curl $url

з wget:

wget -O - $url

але якщо ви хочете отримати те, що ви можете бачити за допомогою браузера, рись може бути корисною:

lynx -dump $url

Я думаю, що ви можете знайти стільки рішень для цієї маленької проблеми, можливо, вам слід прочитати всі сторінки чоловіка для цих команд. І не забудьте замінити $urlсвоєю URL-адресою :)

Удачі :)




3

Якщо у вас встановлений LWP , він надає двійковий файл, який просто називається " GET ".

$ GET http://example.com
<! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 Перехідний // EN">
<HTML>
<HEAD>
  <META http-equiv = "Тип вмісту" content = "text / html; charset = utf-8">
  <TITLE> Приклад веб-сторінки </TITLE>
</HEAD> 
<body>  
<p> Ви дійшли до цієї веб-сторінки, ввівши & quot; example.com & quot ;,
& quot; example.net & quot;, & quot; example.org & quot
  або "example.edu" у ваш веб-браузер. </p>
<p> Ці доменні імена зарезервовані для використання в документації та недоступні 
  для реєстрації. Див. <a href="http://www.rfc-editor.org/rfc/rfc2606.txt"> RFC
  2606 </a>, розділ 3. </p>
</BODY>
</HTML>

wget -O-, curlі lynx -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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.