Завантажте діючу локальну копію веб-сторінки [закрито]


211

Я хотів би завантажити локальну копію веб-сторінки та отримати всі css, зображення, javascript тощо.

У попередніх дискусіях (наприклад, тут і тут , обом яких більше двох років) загалом висуваються дві пропозиції: wget -pта httrack . Однак обидві ці пропозиції провалюються. Я дуже вдячний за допомогу у використанні будь-якого з цих інструментів для виконання завдання; альтернативи також прекрасні.


Варіант 1: wget -p

wget -pуспішно завантажує всі необхідні умови веб-сторінки (css, images, js). Однак, коли я завантажую локальну копію у веб-браузері, сторінка не може завантажити передумови, оскільки шляхи до цих передумов не змінені з версії в Інтернеті.

Наприклад:

  • У html-сторінці сторінки <link rel="stylesheet href="https://stackoverflow.com/stylesheets/foo.css" />потрібно буде виправити, щоб вказати на новий відносний шляхfoo.css
  • У файлі css background-image: url(/images/bar.png)аналогічно потрібно буде відрегулювати.

Чи є спосіб змінити wget -pтак, щоб шляхи були правильними?


Варіант 2: httrack

httrackвидається чудовим інструментом для дзеркального відображення цілих веб-сайтів, але мені незрозуміло, як використовувати його для створення локальної копії однієї сторінки. На форумах httrack існує велика кількість дискусій щодо цієї теми (наприклад, тут ), але, схоже, ніхто не має куленебезпечного рішення.


Варіант 3: ще один інструмент?

Деякі люди пропонували платні інструменти, але я просто не можу повірити, що там немає безкоштовного рішення.


19
Якщо відповідь не працює, спробуйте: wget -E -H -k -K -p http://example.com- тільки це працювало для мене. Кредит: superuser.com/a/136335/94039
its_me

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

3
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
davidcondrey

Відповіді:


262

wget здатний робити те, що ви просите. Просто спробуйте наступне:

wget -p -k http://www.example.com/

-pОтримає вам всі необхідні елементи для правильного відображення сайту (CSS, зображення і т.д.). Це -kдозволить змінити всі посилання (включати ті, що стосуються CSS та зображень), що дозволить вам переглядати сторінку в режимі офлайн як вона з’явилася в Інтернеті.

З Документів Wget:

‘-k’
‘--convert-links’
After the download is complete, convert the links in the document to make them
suitable for local viewing. This affects not only the visible hyperlinks, but
any part of the document that links to external content, such as embedded images,
links to style sheets, hyperlinks to non-html content, etc.

Each link will be changed in one of the two ways:

    The links to files that have been downloaded by Wget will be changed to refer
    to the file they point to as a relative link.

    Example: if the downloaded file /foo/doc.html links to /bar/img.gif, also
    downloaded, then the link in doc.html will be modified to point to
    ‘../bar/img.gif’. This kind of transformation works reliably for arbitrary
    combinations of directories.

    The links to files that have not been downloaded by Wget will be changed to
    include host name and absolute path of the location they point to.

    Example: if the downloaded file /foo/doc.html links to /bar/img.gif (or to
    ../bar/img.gif), then the link in doc.html will be modified to point to
    http://hostname/bar/img.gif. 

Because of this, local browsing works reliably: if a linked file was downloaded,
the link will refer to its local name; if it was not downloaded, the link will
refer to its full Internet address rather than presenting a broken link. The fact
that the former links are converted to relative links ensures that you can move
the downloaded hierarchy to another directory.

Note that only at the end of the download can Wget know which links have been
downloaded. Because of that, the work done by ‘-k’ will be performed at the end
of all the downloads. 

2
Я спробував це, але якось внутрішні зв’язки, такі як index.html#link-to-element-on-same-pageперестали працювати.
rhand


12
Деякі сервери дадуть відповідь кодом 403, якщо ви користуєтеся wget без Користувача, ви можете додати-U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4'
nikoskip

45
Якщо ви все ще не вистачаєте зображень тощо ..., спробуйте додати це: -e robots = off ..... wget насправді читає і поважає robots.txt - це дійсно ускладнило мені зрозуміти, чому нічого працювали!
Джон Хант

24
щоб отримати ресурси від іноземних господарів, користуйтеся-H, --span-hosts
davidhq
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.