Чтобы автоматизировать работу, мне нужно рекурсивно загрузить веб-страницу. Я использую wget, поскольку это, вероятно, самый удобный для программистов инструмент, использующий флаг -r для перехода по ссылке.
wget, hovewer, не обрабатывает красивые URL-адреса, т.е. http: //webpage/index.php/my/pretty/link, рассматривая их как подкаталоги.
Есть решение этой проблемы? (Я бы предпочел не изменять исходный код этой веб-страницы)
Ура, MH
РЕДАКТИРОВАТЬ: проблема решена
Спасибо за содержательные ответы!
Мне удалось решить эту проблему - однако, внеся небольшие изменения в упомянутую веб-страницу.
То, что я сделал, было просто: я использовал функции перезаписи URL-адресов моего сервера и перенаправил URL-адреса из http: // веб-страница / мой / красивый / ссылка к http: //webpage/index.php/my/pretty/link. Затем, используя следующие флаги wget:
wget --mirror --page-requisites --html-extension --convert-links http://webpage/
Вуаля! Все это работает безупречно (в процессе все же создаются директории, но с этого момента обработать их с помощью какого-то скрипта тривиально).
Ну, как wget должен знать, действительно ли index.php / my / pretty не каталог? Это совсем не очевидно с точки зрения HTTP-клиента.
Может ты сможешь wget --exclude-directories
чтобы обойти это? Или может проверить wget -nd
, который создаст плоский набор файлов (не дерево каталогов). Проверьте это.
Симпатичные URL-адреса обычно не являются самодостаточными, они чаще используют механизм для передачи данных туда и обратно (обычно через POST или файлы cookie) в приложение на основе инфраструктуры MVC на бэкэнде.
Если вы используете несколько вызовов wget, стоит отметить, что wget использует файлы cookie, но по умолчанию не сохраняет их ... это означает, что каждый wget будет запускаться со свежим файлом cookie и не будет иметь доступной информации о состоянии . В этом вам помогут параметры --save-cookies (имя файла) и --load-cookies (имя файла).
Если веб-приложение использует POST в качестве механизма, я предполагаю, что вам, вероятно, придется написать специальный поисковый робот, специально предназначенный для этого сайта.
Может быть, вы можете использовать Firefox с аддоном iMacros вместо wget? Он поддерживает командную строку, но не может автоматически переходить по ссылкам (вам нужно будет написать сценарий).
http://wiki.imacros.net/iMacros_for_Firefox#Command_Line_Support
Я использую его для ежедневной загрузки различных отчетов.
Если вы получаете один и тот же сайт много раз, вы можете рассмотреть команду alias, вы можете создать псевдоним с понятным именем для wget с полным именем пути
alias mywget='wget http://domain.com/file/?search&channel=24'
очевидно, добавьте любые переключатели, которые вам нужны, тогда ваши взгляды могут просто запустить mywget, чтобы выполнить функцию
хотя я не уверен, что произойдет, когда он попадет в &, поскольку вы обычно помещаете такой URL-адрес в его кавычки
надеюсь, это поможет