Trong Linux, làm cách nào tôi có thể tìm nạp URL và nhận nội dung của nó trong một biến trong tập lệnh shell?Cách lấy nội dung của trang web trong biến trình bao?
Trả lời
Bạn có thể sử dụng wget
lệnh để tải trang và đọc nó vào một biến như:
content=$(wget google.com -q -O -)
echo $content
Chúng tôi sử dụng -O
tùy chọn wget
cho phép chúng ta xác định tên của tập tin vào đó wget
bãi nội dung trang. Chúng tôi chỉ định -
để lấy kết xuất vào đầu ra tiêu chuẩn và thu thập biến đó vào biến số content
. Bạn có thể thêm tùy chọn im lặng -q
để tắt đầu ra wget.
Bạn có thể sử dụng lệnh curl cho là tốt này như:
content=$(curl -L google.com)
echo $content
Chúng ta cần phải sử dụng tùy chọn -L
như trang chúng tôi đang yêu cầu có thể đã di chuyển. Trong trường hợp đó, chúng ta cần lấy trang từ vị trí mới. Tùy chọn -L
hoặc --location
giúp chúng tôi thực hiện việc này.
Có lệnh wget
hoặc curl
.
Bây giờ bạn có thể sử dụng tệp bạn đã tải xuống bằng wget. Hoặc bạn có thể xử lý một luồng với curl.
Resources:
content=`wget -O - $url`
'$ (...)' được ưu tiên hơn '' ... '', xem http://mywiki.wooledge.org/BashFAQ/082 – Giacomo
Tôi đoán tôi đang hiển thị tuổi của mình. Quay trở lại trong ngày, tất cả _we_ đã có backticks ... và chúng tôi _liked_ nó! Bây giờ có được ra bãi cỏ của tôi! –
@rjack: (Nhưng bài viết bạn đã liên kết tạo ra một trường hợp khá tốt cho cú pháp $ (...).) –
Bạn có thể sử dụng curl
hoặc wget
để lấy dữ liệu thô, hoặc bạn có thể sử dụng w3m -dump
để có một văn bản đại diện tốt đẹp của một trang web.
$ 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.
có nhiều cách để có được một trang trong dòng lệnh ... nhưng nó cũng phụ thuộc nếu bạn muốn mã nguồn hoặc các trang riêng của mình:
Nếu bạn cần mã nguồn
với curl: curl $url
với wget: wget -O - $url
nhưng nếu bạn wa nt để có được những gì bạn có thể thấy bằng trình duyệt, lynx có thể hữu ích: lynx -dump $url
Tôi nghĩ bạn có thể tìm thấy rất nhiều giải pháp cho vấn đề này.Và đừng quên để thay thế $ url bằng url của bạn :)
Chúc may mắn :)
Nếu bạn có LWP được cài đặt, nó cung cấp một nhị phân đơn giản có tên là "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 "example.com", "example.net","example.org" or "example.edu" 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
, và lynx -source
cư xử tương tự.
Tôi đã giải thích, và câu hỏi của bạn đã được chỉnh sửa kể từ đó, do đó, downvote của tôi không có nghĩa là bất cứ điều gì nữa ... (Nó thực sự biến thành một upvote). –
Đây là một mẹo thực sự gọn gàng. Tôi gọi một kịch bản lệnh shell thông qua một tập lệnh php trên một máy chủ proxy. Khi được hỏi, máy chủ proxy sẽ bật các máy chủ đắt tiền tự tắt sau 2 giờ. Tôi cần đầu ra từ wget cho đầu ra tiêu chuẩn để đưa trở lại bản ghi bàn điều khiển Jenkins. – Dennis
Tôi chưa nhận được điều này ... bất cứ ai có thể demostrate như thế nào, ví dụ. nhận thẻ img trong một biến cho liên kết này http://www2.watchop.io/manga2/read/one-piece/1/4 ?? – juggernaut1996