Извлечение URL из командной строки с возможностью JavaScript - PullRequest
3 голосов
/ 10 июля 2009

Я использую curl в php и httplib2 в python для получения URL.

Однако есть некоторые страницы, которые используют JavaScript (AJAX) для получения данных после загрузки страницы, и они просто перезаписывают определенный раздел страницы впоследствии.

Итак, есть ли утилита командной строки, которая может обрабатывать JavaScript?

Чтобы узнать, что я имею в виду, зайдите на: monster.com и попробуйте найти работу.

Вы увидите, что Ajax получает список заданий позже. Поэтому, если бы я хотел получить работу, основанную на поиске по ключевым словам, я бы получил страницу без вакансий.

Но через браузер это работает.

Ответы [ 6 ]

0 голосов
/ 07 мая 2014

вы можете использовать PhantomJS http://phantomjs.org

Вы можете использовать его, как показано ниже:

var page=require("webpage");
page.open("http://monster.com",function(status){
  page.evaluate(function(){
    /* your javascript code here 
        $.ajax("....",function(result){


            phantom.exit(0);
           }); */
  });
});
0 голосов
/ 20 июля 2009

Используйте LiveHttpHeaders плагин для Firefox, чтобы увидеть все детали URL, а затем используйте cURL с этим URL. LiveHttpHeaders показывает всю информацию, такую ​​как тип метода (post или get), тело заголовка и т. Д. это также показывает сообщение или получить параметры в заголовках Я думаю, что это может помочь вам.

0 голосов
/ 10 июля 2009

Может быть, вы могли бы попробовать и использовать функции HtmlUnit в своей собственной утилите?

HtmlUnit - это браузер без графического интерфейса для Java-программы ". Моделирует HTML документы и предоставляет API, который позволяет вызывать страницы, заполнять формы, нажмите ссылки и т. д ... так же, как вы делаете в своем "обычном" браузере.

Имеет довольно хорошую поддержку JavaScript (который постоянно улучшается) и является способен работать даже с довольно сложным Библиотеки AJAX, имитирующие либо Firefox или Internet Explorer в зависимости в конфигурации, которую вы хотите использовать.

Обычно используется для тестирования цели или для получения информации с веб-сайтов.

0 голосов
/ 10 июля 2009

Я думаю, env.js может обрабатывать <script> элементов. Он запускается в интерпретаторе Rhino JavaScript и имеет собственный объект XMLHttpRequest, поэтому вы должны иметь возможность, по крайней мере, запускать сценарии вручную (выберите все теги <script>, получите файл .js и вызовите eval) если он не запускается автоматически. Будьте осторожны при запуске сценариев, которым вы не доверяете, поскольку они могут использовать любые классы Java.

Я не играл с ним с первой версии Джона Ресига, поэтому я не очень разбираюсь в том, как его использовать, но в группах Google .

существует дискуссионная группа .
0 голосов
/ 10 июля 2009

Есть 2 способа справиться с этим. Напишите свой скребок для экрана, используя полнофункциональный браузерный клиент, такой как Webkit , или перейдите на реальную страницу и узнайте, что делает запрос AJAX, и сделайте запрос напрямую. Затем вам нужно проанализировать результаты, конечно. Используйте Firebug, чтобы помочь вам.

Проверьте этот пост для получения дополнительной информации по этому вопросу. Поднятый ответ предлагает использовать тестовый инструмент для управления настоящим браузером. Какой хороший инструмент для очистки экрана с поддержкой Javascript?

0 голосов
/ 10 июля 2009

Получите FireBug и посмотрите URL для этого Ajax-запроса. Затем вы можете использовать curl с этим URL.

...