Tải tập tin bằng wget


15

Tôi đang cố gắng tải tập tin từ trang web này .

URL là: http://www.ncbi.nlm.nih.gov/geo/doad/?acc=GSE48191&format=file

Khi tôi sử dụng lệnh này:

wget http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file 

Tôi chỉ nhận được index.html?acc=GSE48191đó là một số loại định dạng nhị phân.

Làm cách nào tôi có thể tải xuống các tệp từ trang web HTTP này?

Câu trả lời:


22

Tôi nghĩ rằng bạn ?được giải thích bằng shell (Sửa bởi vinc17: nhiều khả năng, đó là &điều được giải thích).

Chỉ cần thử với các trích dẫn đơn giản xung quanh URL của bạn:

wget 'http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Lưu ý rằng tệp bạn đang yêu cầu là một .tartệp nhưng lệnh trên sẽ lưu nó dưới dạng index.html?acc=GSE48191&format=file. Để được đặt tên chính xác, bạn có thể đổi tên thành .tar:

mv 'index.html?acc=GSE48191&format=file' GSE4819.tar

Hoặc bạn có thể đặt tên dưới dạng tùy chọn để wget:

wget -O GSE48191.tar 'http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file'

Lệnh trên sẽ lưu tệp được tải xuống dưới dạng GSE48191.tartrực tiếp.


Nó được tải xuống nhưng nó thậm chí không phải là một thư mục. Nếu bạn nhìn vào liên kết ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE48191 , bạn có thể thấy có nhiều tệp .gz. Tôi vẫn không thể truy cập chúng ??
dùng3138373

Tôi cho rằng OP sử dụng lớp vỏ bỏ qua ?dưới dạng ký tự đại diện vì không có gì khớp. Vấn đề chính là &: điều này sẽ chạy phần trước (do đó có một URL không đầy đủ) trong nền. Nhưng giải pháp là như nhau: trích dẫn URL.
vinc17

Cảm ơn bạn terdon và vinc để chỉnh sửa / chỉnh sửa. @ user3138373: Tôi không thể tìm thấy các tệp .gz của bạn trên các liên kết được cung cấp, bạn có thể vui lòng cho biết lại URL nào bạn sử dụng để xem / truy cập chúng không?
Qeole

1
@ user3138373 tệp bạn tải xuống là tệp lưu trữ ( .tartệp) chứa tệp .gz. Khi bạn đã tải xuống, hãy chạy tar xvf GSE4819.tarđể mở rộng kho lưu trữ và truy cập các tệp.
terdon

3

Một cách khác có thể có thể hoạt động là sử dụng lệnh này:

wget -O nameOfTar.tar "http://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191&format=file"

Các -Olệnh sẽ ghi rõ tên để tải về.

Tất nhiên, vấn đề ban đầu của bạn là do "&" đã được giải thích bởi trình bao, xung quanh URL có dấu ngoặc kép sẽ khắc phục sự cố.


2
-O tùy chọn được sử dụng để chỉ định tên của tệp trong đó dữ liệu được tải xuống được lưu. Nó không có tỷ lệ trên dữ liệu tải xuống (có thể đó là những gì bạn muốn nói, nhưng tôi thấy nó không rõ ràng).
Qeole

Vâng xin lỗi, tôi sẽ sửa lỗi
ryekayo 22/07/14

Tôi không chắc tại sao điều này lại bị hạ thấp.
ryekayo

3
Tôi đã không downvote, nhưng điều đó có thể là do giải pháp của bạn không khắc phục được vấn đề: &được diễn giải bằng shell và tải xuống .tartệp sẽ thất bại.
Qeole

0

wget -O "tên-bạn-muốn-lưu-as.format" http://www.ncbi.nlm.nih.gov/geo/doad/?acc=GSE48191&format=file

Điều đó sẽ giúp bạn có được tệp bạn muốn tải xuống thư mục hiện tại bạn đang ở.


wget: missing URLlà những gì wgettrả lời cho điều đó, bởi vì bạn đang thiếu đối số -O. Ngoài ra, tôi nghĩ rằng điều này có lẽ không giải quyết được vấn đề của OP.
Celada

Vì URL chứa &, câu trả lời này không hoạt động trừ khi bạn thêm ""hoặc ''xung quanh URL.
Aaron Franke

0

Từ $ curl -G http://www.ncbi.nlm.nih.gov/geo/doad/?acc=GSE48191

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191">here</a>.</p>
</body></html>

Vì vậy, bạn cần phải làm

wget https://www.ncbi.nlm.nih.gov/geo/download/?acc=GSE48191

Lưu ý "s" sau http. Tôi đã thử nó và nó hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.